@norwegian/core-components 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +78 -0
- package/assets/documentation/accordion/accordion.md +1 -0
- package/assets/documentation/airport-select/airport-select.md +0 -0
- package/assets/documentation/autocomplete/autocomplete.md +1 -0
- package/assets/documentation/box/box.md +1 -0
- package/assets/documentation/button/button.md +10 -0
- package/assets/documentation/checkbox/checkbox.md +7 -0
- package/assets/documentation/chip/chip.md +1 -0
- package/assets/documentation/container/container.md +1 -0
- package/assets/documentation/continue/continue.md +1 -0
- package/assets/documentation/cover/cover.md +1 -0
- package/assets/documentation/datepicker/calendar/calendar.md +3 -0
- package/assets/documentation/datepicker/datepicker.md +3 -0
- package/assets/documentation/datepicker-combo/datepicker-combo.md +1 -0
- package/assets/documentation/dropdown/dropdown.md +3 -0
- package/assets/documentation/filter/filter.md +0 -0
- package/assets/documentation/grid/grid.md +1 -0
- package/assets/documentation/icon/icon.md +4 -0
- package/assets/documentation/icon-list/icon-list.md +1 -0
- package/assets/documentation/info/info.md +1 -0
- package/assets/documentation/input/input.md +1 -0
- package/assets/documentation/journey/journey.md +1 -0
- package/assets/documentation/journey-availability/journey-availability.md +3 -0
- package/assets/documentation/journey-availability-list/journey-availability-list.md +9 -0
- package/assets/documentation/journey-selection/journey-selection.md +1 -0
- package/assets/documentation/journey-stopover/journey-stopover.md +1 -0
- package/assets/documentation/list/list.md +1 -0
- package/assets/documentation/modal/modal.md +0 -0
- package/assets/documentation/number-field/number-field.md +1 -0
- package/assets/documentation/page-footer/page-footer.md +1 -0
- package/assets/documentation/page-header/page-header.md +1 -0
- package/assets/documentation/passenger-select/passenger-select.md +1 -0
- package/assets/documentation/phone-number/phone-number.md +2 -0
- package/assets/documentation/premium-toggle/premium-toggle.md +9 -0
- package/assets/documentation/radio/radio.md +7 -0
- package/assets/documentation/select/select.md +1 -0
- package/assets/documentation/simple-list/simple-list.md +1 -0
- package/assets/documentation/slide-toggle/slide-toggle.md +1 -0
- package/assets/documentation/slider/slider.md +1 -0
- package/assets/documentation/sort/sort.md +1 -0
- package/assets/documentation/spinner/spinner.md +1 -0
- package/assets/documentation/subsidy-discount/subsidy-discount.md +3 -0
- package/assets/documentation/suggestions/suggestions.md +1 -0
- package/assets/documentation/tab-group/tab-group.md +1 -0
- package/assets/documentation/table/table.md +8 -0
- package/assets/documentation/textarea/textarea.md +1 -0
- package/assets/documentation/toggle/toggle.md +5 -0
- package/assets/documentation/trip-summary/trip-summary.md +2 -0
- package/assets/documentation/weather-icon/weather-icon.md +1 -0
- package/assets/fonts/TiemposHeadlineWeb-Bold.eot +0 -0
- package/assets/fonts/TiemposHeadlineWeb-Bold.woff +0 -0
- package/assets/fonts/TiemposHeadlineWeb-Bold.woff2 +0 -0
- package/assets/fonts/TiemposHeadlineWeb-BoldItalic.eot +0 -0
- package/assets/fonts/TiemposHeadlineWeb-BoldItalic.woff +0 -0
- package/assets/fonts/TiemposHeadlineWeb-BoldItalic.woff2 +0 -0
- package/assets/fonts/TiemposText-Medium.eot +0 -0
- package/assets/fonts/TiemposText-Medium.woff +0 -0
- package/assets/fonts/TiemposText-Medium.woff2 +0 -0
- package/assets/fonts/TiemposTextWeb-Italic.eot +0 -0
- package/assets/fonts/TiemposTextWeb-Italic.woff +0 -0
- package/assets/fonts/TiemposTextWeb-Italic.woff2 +0 -0
- package/assets/fonts/TiemposTextWeb-Regular.eot +0 -0
- package/assets/fonts/TiemposTextWeb-Regular.woff +0 -0
- package/assets/fonts/TiemposTextWeb-Regular.woff2 +0 -0
- package/assets/fonts/apercu_bold_italic_pro-web.eot +0 -0
- package/assets/fonts/apercu_bold_italic_pro-web.svg +12420 -0
- package/assets/fonts/apercu_bold_italic_pro-web.ttf +0 -0
- package/assets/fonts/apercu_bold_italic_pro-web.woff +0 -0
- package/assets/fonts/apercu_bold_italic_pro-web.woff2 +0 -0
- package/assets/fonts/apercu_bold_italic_pro.otf +0 -0
- package/assets/fonts/apercu_bold_pro-web.eot +0 -0
- package/assets/fonts/apercu_bold_pro-web.svg +10193 -0
- package/assets/fonts/apercu_bold_pro-web.ttf +0 -0
- package/assets/fonts/apercu_bold_pro-web.woff +0 -0
- package/assets/fonts/apercu_bold_pro-web.woff2 +0 -0
- package/assets/fonts/apercu_bold_pro.otf +0 -0
- package/assets/fonts/apercu_light_italic_pro-web.eot +0 -0
- package/assets/fonts/apercu_light_italic_pro-web.svg +12831 -0
- package/assets/fonts/apercu_light_italic_pro-web.ttf +0 -0
- package/assets/fonts/apercu_light_italic_pro-web.woff +0 -0
- package/assets/fonts/apercu_light_italic_pro-web.woff2 +0 -0
- package/assets/fonts/apercu_light_pro-web.eot +0 -0
- package/assets/fonts/apercu_light_pro-web.svg +9704 -0
- package/assets/fonts/apercu_light_pro-web.ttf +0 -0
- package/assets/fonts/apercu_light_pro-web.woff +0 -0
- package/assets/fonts/apercu_light_pro-web.woff2 +0 -0
- package/assets/fonts/apercu_medium_italic_pro-web.eot +0 -0
- package/assets/fonts/apercu_medium_italic_pro-web.svg +12354 -0
- package/assets/fonts/apercu_medium_italic_pro-web.ttf +0 -0
- package/assets/fonts/apercu_medium_italic_pro-web.woff +0 -0
- package/assets/fonts/apercu_medium_italic_pro-web.woff2 +0 -0
- package/assets/fonts/apercu_medium_italic_pro.otf +0 -0
- package/assets/fonts/apercu_medium_pro-web.eot +0 -0
- package/assets/fonts/apercu_medium_pro-web.svg +12254 -0
- package/assets/fonts/apercu_medium_pro-web.ttf +0 -0
- package/assets/fonts/apercu_medium_pro-web.woff +0 -0
- package/assets/fonts/apercu_medium_pro-web.woff2 +0 -0
- package/assets/fonts/apercu_medium_pro.otf +0 -0
- package/assets/fonts/apercu_mono_pro-web.eot +0 -0
- package/assets/fonts/apercu_mono_pro-web.svg +538 -0
- package/assets/fonts/apercu_mono_pro-web.ttf +0 -0
- package/assets/fonts/apercu_mono_pro-web.woff +0 -0
- package/assets/fonts/apercu_mono_pro-web.woff2 +0 -0
- package/assets/fonts/apercu_regular_italic_pro-web.eot +0 -0
- package/assets/fonts/apercu_regular_italic_pro-web.svg +13059 -0
- package/assets/fonts/apercu_regular_italic_pro-web.ttf +0 -0
- package/assets/fonts/apercu_regular_italic_pro-web.woff +0 -0
- package/assets/fonts/apercu_regular_italic_pro-web.woff2 +0 -0
- package/assets/fonts/apercu_regular_italic_pro.otf +0 -0
- package/assets/fonts/apercu_regular_pro-web.eot +0 -0
- package/assets/fonts/apercu_regular_pro-web.svg +11356 -0
- package/assets/fonts/apercu_regular_pro-web.ttf +0 -0
- package/assets/fonts/apercu_regular_pro-web.woff +0 -0
- package/assets/fonts/apercu_regular_pro-web.woff2 +0 -0
- package/assets/fonts/apercu_regular_pro.otf +0 -0
- package/assets/icons/flags/ar.svg +20 -0
- package/assets/icons/flags/br.svg +30 -0
- package/assets/icons/flags/ca.svg +18 -0
- package/assets/icons/flags/de.svg +20 -0
- package/assets/icons/flags/dk.svg +20 -0
- package/assets/icons/flags/en.svg +20 -0
- package/assets/icons/flags/es.svg +20 -0
- package/assets/icons/flags/fi.svg +20 -0
- package/assets/icons/flags/fr.svg +20 -0
- package/assets/icons/flags/ie.svg +22 -0
- package/assets/icons/flags/it.svg +20 -0
- package/assets/icons/flags/nl.svg +20 -0
- package/assets/icons/flags/no.svg +20 -0
- package/assets/icons/flags/pl.svg +20 -0
- package/assets/icons/flags/se.svg +20 -0
- package/assets/icons/flags/uk.svg +20 -0
- package/assets/icons/flags/us.svg +20 -0
- package/assets/icons/icon-add--light.svg +11 -0
- package/assets/icons/icon-add.svg +7 -0
- package/assets/icons/icon-arrow-left--light.svg +7 -0
- package/assets/icons/icon-arrow-left.svg +7 -0
- package/assets/icons/icon-arrow-right--light.svg +7 -0
- package/assets/icons/icon-arrow-right.svg +6 -0
- package/assets/icons/icon-check.svg +7 -0
- package/assets/icons/icon-chevron-down.svg +1 -0
- package/assets/icons/icon-chevron-left--light.svg +1 -0
- package/assets/icons/icon-chevron-left-outlined.svg +4 -0
- package/assets/icons/icon-chevron-left.svg +1 -0
- package/assets/icons/icon-chevron-right--light.svg +1 -0
- package/assets/icons/icon-chevron-right-outlined.svg +4 -0
- package/assets/icons/icon-chevron-right.svg +1 -0
- package/assets/icons/icon-dropdown-arrow--disabled.svg +8 -0
- package/assets/icons/icon-dropdown-arrow--light.svg +8 -0
- package/assets/icons/icon-dropdown-arrow.svg +8 -0
- package/assets/icons/icon-error.svg +11 -0
- package/assets/icons/icon-flight-direct.svg +8 -0
- package/assets/icons/icon-flight-one-stop.svg +8 -0
- package/assets/icons/icon-flight-two-stops.svg +9 -0
- package/assets/icons/icon-geolocation--disabled.svg +8 -0
- package/assets/icons/icon-geolocation--light.svg +8 -0
- package/assets/icons/icon-geolocation.svg +8 -0
- package/assets/icons/icon-goto.svg +8 -0
- package/assets/icons/icon-home.svg +1 -0
- package/assets/icons/icon-marker.svg +8 -0
- package/assets/icons/icon-menu--dark.svg +9 -0
- package/assets/icons/icon-menu.svg +9 -0
- package/assets/icons/icon-nav_right--large.svg +7 -0
- package/assets/icons/icon-nav_right--small.svg +7 -0
- package/assets/icons/icon-nav_right.svg +7 -0
- package/assets/icons/icon-negative.svg +11 -0
- package/assets/icons/icon-ol_li.svg +7 -0
- package/assets/icons/icon-one-stop-arrow.svg +8 -0
- package/assets/icons/icon-passenger--children.svg +1 -0
- package/assets/icons/icon-passenger--female.svg +1 -0
- package/assets/icons/icon-passenger--infant.svg +1 -0
- package/assets/icons/icon-passenger--male.svg +1 -0
- package/assets/icons/icon-positive.svg +10 -0
- package/assets/icons/icon-red-circle.svg +7 -0
- package/assets/icons/icon-remove.svg +8 -0
- package/assets/icons/icon-share_facebook.svg +10 -0
- package/assets/icons/icon-share_instagram.svg +12 -0
- package/assets/icons/icon-share_twitter.svg +13 -0
- package/assets/icons/icon-share_youtube.svg +11 -0
- package/assets/icons/icon-star.svg +9 -0
- package/assets/icons/icon-subtract--light.svg +12 -0
- package/assets/icons/icon-subtract.svg +9 -0
- package/assets/icons/icon-switch--secondary.svg +1 -0
- package/assets/icons/icon-switch.svg +1 -0
- package/assets/icons/icon-two-stops-arrow.svg +10 -0
- package/assets/icons/large/baggage-hand-baggage.svg +41 -0
- package/assets/icons/large/baggage.svg +75 -0
- package/assets/icons/large/car-rentals.svg +61 -0
- package/assets/icons/large/cashpoints.svg +92 -0
- package/assets/icons/large/celebration.svg +77 -0
- package/assets/icons/large/central-airports.svg +44 -0
- package/assets/icons/large/customer-service.svg +47 -0
- package/assets/icons/large/destinations.svg +78 -0
- package/assets/icons/large/direct-flights.svg +73 -0
- package/assets/icons/large/entertainment.svg +89 -0
- package/assets/icons/large/family.svg +88 -0
- package/assets/icons/large/fast-track.svg +57 -0
- package/assets/icons/large/food.svg +48 -0
- package/assets/icons/large/from-a-to-b.svg +66 -0
- package/assets/icons/large/hotels.svg +84 -0
- package/assets/icons/large/lounge.svg +67 -0
- package/assets/icons/large/new-aircrafts.svg +60 -0
- package/assets/icons/large/personnel.svg +54 -0
- package/assets/icons/large/premium.svg +49 -0
- package/assets/icons/large/wifi.svg +112 -0
- package/assets/icons/list--journey.svg +207 -0
- package/assets/icons/medium/accommodation--light.svg +16 -0
- package/assets/icons/medium/accommodation.svg +15 -0
- package/assets/icons/medium/alert--error.svg +11 -0
- package/assets/icons/medium/alert--light.svg +10 -0
- package/assets/icons/medium/alert--success.svg +9 -0
- package/assets/icons/medium/alert.svg +11 -0
- package/assets/icons/medium/arrow-down--light.svg +11 -0
- package/assets/icons/medium/arrow-down.svg +11 -0
- package/assets/icons/medium/arrow-left--light.svg +11 -0
- package/assets/icons/medium/arrow-left.svg +11 -0
- package/assets/icons/medium/arrow-right--light.svg +11 -0
- package/assets/icons/medium/arrow-right.svg +11 -0
- package/assets/icons/medium/arrow-up--light.svg +11 -0
- package/assets/icons/medium/arrow-up.svg +11 -0
- package/assets/icons/medium/baggage--light.svg +10 -0
- package/assets/icons/medium/baggage-checked-in--light.svg +19 -0
- package/assets/icons/medium/baggage-checked-in.svg +20 -0
- package/assets/icons/medium/baggage-hand-baggage--light.svg +32 -0
- package/assets/icons/medium/baggage-hand-baggage.svg +36 -0
- package/assets/icons/medium/baggage-special-baggage--light.svg +21 -0
- package/assets/icons/medium/baggage-special-baggage.svg +23 -0
- package/assets/icons/medium/baggage-sports-equipment--light.svg +18 -0
- package/assets/icons/medium/baggage-sports-equipment.svg +21 -0
- package/assets/icons/medium/baggage.svg +11 -0
- package/assets/icons/medium/baggages--light.svg +1 -0
- package/assets/icons/medium/baggages.svg +1 -0
- package/assets/icons/medium/car-rental--light.svg +26 -0
- package/assets/icons/medium/car-rental.svg +26 -0
- package/assets/icons/medium/card--light.svg +18 -0
- package/assets/icons/medium/card.svg +18 -0
- package/assets/icons/medium/cashpoints--light.svg +29 -0
- package/assets/icons/medium/cashpoints.svg +31 -0
- package/assets/icons/medium/central-airports--light.svg +25 -0
- package/assets/icons/medium/central-airports.svg +25 -0
- package/assets/icons/medium/customer-service--light.svg +19 -0
- package/assets/icons/medium/customer-service.svg +22 -0
- package/assets/icons/medium/direct-flights--light.svg +24 -0
- package/assets/icons/medium/direct-flights.svg +25 -0
- package/assets/icons/medium/direct-to-gate--light.svg +18 -0
- package/assets/icons/medium/direct-to-gate.svg +18 -0
- package/assets/icons/medium/docs--light.svg +10 -0
- package/assets/icons/medium/docs.svg +10 -0
- package/assets/icons/medium/entertainment--light.svg +71 -0
- package/assets/icons/medium/entertainment.svg +81 -0
- package/assets/icons/medium/facebook.svg +12 -0
- package/assets/icons/medium/family.svg +29 -0
- package/assets/icons/medium/fast-track--light.svg +19 -0
- package/assets/icons/medium/fast-track.svg +23 -0
- package/assets/icons/medium/flexible-tickets--light.svg +16 -0
- package/assets/icons/medium/flexible-tickets.svg +18 -0
- package/assets/icons/medium/flight-arrival--light.svg +16 -0
- package/assets/icons/medium/flight-arrival.svg +15 -0
- package/assets/icons/medium/flight-departure--light.svg +12 -0
- package/assets/icons/medium/flight-departure.svg +12 -0
- package/assets/icons/medium/flight-oneway--light.svg +12 -0
- package/assets/icons/medium/flight-oneway.svg +13 -0
- package/assets/icons/medium/flight-outbound--light.svg +11 -0
- package/assets/icons/medium/flight-outbound.svg +11 -0
- package/assets/icons/medium/flight-return--light.svg +11 -0
- package/assets/icons/medium/flight-return-trip.svg +13 -0
- package/assets/icons/medium/flight-return.svg +11 -0
- package/assets/icons/medium/flight-tickets--light.svg +22 -0
- package/assets/icons/medium/flight-tickets.svg +21 -0
- package/assets/icons/medium/food--light.svg +16 -0
- package/assets/icons/medium/food.svg +19 -0
- package/assets/icons/medium/frequent-departures--light.svg +16 -0
- package/assets/icons/medium/frequent-departures.svg +16 -0
- package/assets/icons/medium/from-a-to-b--light.svg +17 -0
- package/assets/icons/medium/from-a-to-b.svg +17 -0
- package/assets/icons/medium/in-flight-entertainment--light.svg +20 -0
- package/assets/icons/medium/in-flight-entertainment.svg +21 -0
- package/assets/icons/medium/instagram.svg +14 -0
- package/assets/icons/medium/linkedin.svg +17 -0
- package/assets/icons/medium/lounge--light.svg +19 -0
- package/assets/icons/medium/lounge.svg +21 -0
- package/assets/icons/medium/mobile--light.svg +10 -0
- package/assets/icons/medium/mobile.svg +9 -0
- package/assets/icons/medium/my-profile-female.svg +55 -0
- package/assets/icons/medium/my-profile-male.svg +48 -0
- package/assets/icons/medium/new-airplanes--light.svg +14 -0
- package/assets/icons/medium/new-airplanes.svg +14 -0
- package/assets/icons/medium/personnel--light.svg +19 -0
- package/assets/icons/medium/personnel.svg +27 -0
- package/assets/icons/medium/phone--light.svg +15 -0
- package/assets/icons/medium/phone.svg +15 -0
- package/assets/icons/medium/premium--light.svg +23 -0
- package/assets/icons/medium/premium.svg +23 -0
- package/assets/icons/medium/print--light.svg +14 -0
- package/assets/icons/medium/printer.svg +14 -0
- package/assets/icons/medium/relax--light.svg +27 -0
- package/assets/icons/medium/relax.svg +28 -0
- package/assets/icons/medium/rewards--light.svg +19 -0
- package/assets/icons/medium/rewards-fast-track.svg +17 -0
- package/assets/icons/medium/rewards-luggage.svg +22 -0
- package/assets/icons/medium/rewards-seat.svg +21 -0
- package/assets/icons/medium/rewards.svg +19 -0
- package/assets/icons/medium/route-network--light.svg +28 -0
- package/assets/icons/medium/route-network.svg +28 -0
- package/assets/icons/medium/seat-reservation--light.svg +16 -0
- package/assets/icons/medium/seat-reservation.svg +16 -0
- package/assets/icons/medium/special-needs--light.svg +15 -0
- package/assets/icons/medium/special-needs.svg +15 -0
- package/assets/icons/medium/transit-stop--light.svg +30 -0
- package/assets/icons/medium/transit-stop.svg +33 -0
- package/assets/icons/medium/trash--light.svg +7 -0
- package/assets/icons/medium/trash.svg +7 -0
- package/assets/icons/medium/travel-deals--light.svg +24 -0
- package/assets/icons/medium/travel-deals.svg +24 -0
- package/assets/icons/medium/twitter.svg +17 -0
- package/assets/icons/medium/type-asia--light.svg +19 -0
- package/assets/icons/medium/type-asia.svg +19 -0
- package/assets/icons/medium/type-city-vibes--light.svg +14 -0
- package/assets/icons/medium/type-city-vibes.svg +14 -0
- package/assets/icons/medium/type-greece--light.svg +24 -0
- package/assets/icons/medium/type-greece.svg +28 -0
- package/assets/icons/medium/type-norway--light.svg +18 -0
- package/assets/icons/medium/type-norway.svg +18 -0
- package/assets/icons/medium/type-scandinavia--light.svg +32 -0
- package/assets/icons/medium/type-scandinavia.svg +32 -0
- package/assets/icons/medium/type-shopping--light.svg +20 -0
- package/assets/icons/medium/type-shopping.svg +20 -0
- package/assets/icons/medium/type-skiing--light.svg +32 -0
- package/assets/icons/medium/type-skiing.svg +32 -0
- package/assets/icons/medium/type-spain--light.svg +12 -0
- package/assets/icons/medium/type-spain.svg +12 -0
- package/assets/icons/medium/type-sun-and-sea--light.svg +34 -0
- package/assets/icons/medium/type-sun-and-sea.svg +34 -0
- package/assets/icons/medium/type-usa--light.svg +46 -0
- package/assets/icons/medium/type-usa.svg +46 -0
- package/assets/icons/medium/wifi--light.svg +15 -0
- package/assets/icons/medium/wifi.svg +15 -0
- package/assets/icons/medium/youtube.svg +12 -0
- package/assets/icons/mobile-landscape.svg +12 -0
- package/assets/icons/mobile-portrait.svg +12 -0
- package/assets/icons/small/accommodation--light.svg +15 -0
- package/assets/icons/small/accommodation.svg +21 -0
- package/assets/icons/small/alert--error.svg +7 -0
- package/assets/icons/small/alert--light.svg +10 -0
- package/assets/icons/small/alert.svg +10 -0
- package/assets/icons/small/arrow-down--light.svg +11 -0
- package/assets/icons/small/arrow-down.svg +11 -0
- package/assets/icons/small/arrow-left--light.svg +10 -0
- package/assets/icons/small/arrow-left.svg +10 -0
- package/assets/icons/small/arrow-right--light.svg +11 -0
- package/assets/icons/small/arrow-right.svg +11 -0
- package/assets/icons/small/arrow-up--light.svg +10 -0
- package/assets/icons/small/arrow-up.svg +10 -0
- package/assets/icons/small/baggage--light.svg +8 -0
- package/assets/icons/small/baggage-checked-in--light.svg +16 -0
- package/assets/icons/small/baggage-checked-in.svg +16 -0
- package/assets/icons/small/baggage-hand-baggage--light.svg +11 -0
- package/assets/icons/small/baggage-hand-baggage.svg +11 -0
- package/assets/icons/small/baggage-special-baggage--light.svg +20 -0
- package/assets/icons/small/baggage-special-baggage.svg +20 -0
- package/assets/icons/small/baggage-sports-equipment--light.svg +25 -0
- package/assets/icons/small/baggage-sports-equipment.svg +25 -0
- package/assets/icons/small/baggage.svg +10 -0
- package/assets/icons/small/baggages--light.svg +1 -0
- package/assets/icons/small/baggages.svg +1 -0
- package/assets/icons/small/calendar--disabled.svg +14 -0
- package/assets/icons/small/calendar--light.svg +14 -0
- package/assets/icons/small/calendar.svg +14 -0
- package/assets/icons/small/car-rental--light.svg +14 -0
- package/assets/icons/small/car-rental.svg +14 -0
- package/assets/icons/small/card--light.svg +8 -0
- package/assets/icons/small/card.svg +8 -0
- package/assets/icons/small/cashpoints--light.svg +21 -0
- package/assets/icons/small/cashpoints.svg +21 -0
- package/assets/icons/small/central-airports--light.svg +10 -0
- package/assets/icons/small/central-airports.svg +10 -0
- package/assets/icons/small/check-in--light.svg +11 -0
- package/assets/icons/small/check-in.svg +11 -0
- package/assets/icons/small/customer-service--light.svg +18 -0
- package/assets/icons/small/customer-service.svg +18 -0
- package/assets/icons/small/destination--light.svg +9 -0
- package/assets/icons/small/destination.svg +9 -0
- package/assets/icons/small/direct-flights--light.svg +16 -0
- package/assets/icons/small/direct-flights.svg +16 -0
- package/assets/icons/small/docs--light.svg +10 -0
- package/assets/icons/small/docs.svg +10 -0
- package/assets/icons/small/duty-free.svg +24 -0
- package/assets/icons/small/email.svg +1 -0
- package/assets/icons/small/facebook.svg +12 -0
- package/assets/icons/small/family.svg +24 -0
- package/assets/icons/small/fast-track--light.svg +15 -0
- package/assets/icons/small/fast-track.svg +15 -0
- package/assets/icons/small/flexible-tickets--light.svg +12 -0
- package/assets/icons/small/flexible-tickets.svg +12 -0
- package/assets/icons/small/flight-arrival--light.svg +13 -0
- package/assets/icons/small/flight-arrival.svg +16 -0
- package/assets/icons/small/flight-departure--light.svg +18 -0
- package/assets/icons/small/flight-departure-ground.svg +22 -0
- package/assets/icons/small/flight-departure-left.svg +18 -0
- package/assets/icons/small/flight-departure.svg +18 -0
- package/assets/icons/small/flight-outbound--light.svg +14 -0
- package/assets/icons/small/flight-outbound.svg +14 -0
- package/assets/icons/small/flight-return--light.svg +14 -0
- package/assets/icons/small/flight-return.svg +14 -0
- package/assets/icons/small/flight-tickets--light.svg +17 -0
- package/assets/icons/small/flight-tickets.svg +17 -0
- package/assets/icons/small/food--light.svg +15 -0
- package/assets/icons/small/food.svg +15 -0
- package/assets/icons/small/from-a-to-b--light.svg +21 -0
- package/assets/icons/small/from-a-to-b.svg +23 -0
- package/assets/icons/small/google-plus.svg +1 -0
- package/assets/icons/small/hotel--light.svg +10 -0
- package/assets/icons/small/hotel.svg +11 -0
- package/assets/icons/small/in-flight-entertainment--light.svg +10 -0
- package/assets/icons/small/in-flight-entertainment.svg +10 -0
- package/assets/icons/small/info--light.svg +4 -0
- package/assets/icons/small/info--outlined.svg +4 -0
- package/assets/icons/small/info.svg +4 -0
- package/assets/icons/small/instagram.svg +14 -0
- package/assets/icons/small/linkedin.svg +18 -0
- package/assets/icons/small/lounge--light.svg +18 -0
- package/assets/icons/small/lounge.svg +18 -0
- package/assets/icons/small/mail--light.svg +9 -0
- package/assets/icons/small/mail.svg +9 -0
- package/assets/icons/small/mobile--light.svg +8 -0
- package/assets/icons/small/mobile.svg +8 -0
- package/assets/icons/small/my-profile--light.svg +14 -0
- package/assets/icons/small/my-profile-female--light.svg +49 -0
- package/assets/icons/small/my-profile-female.svg +48 -0
- package/assets/icons/small/my-profile-male--light.svg +49 -0
- package/assets/icons/small/my-profile-male.svg +50 -0
- package/assets/icons/small/my-profile.svg +14 -0
- package/assets/icons/small/new-airplanes--light.svg +14 -0
- package/assets/icons/small/new-airplanes.svg +14 -0
- package/assets/icons/small/personnel--light.svg +14 -0
- package/assets/icons/small/personnel.svg +14 -0
- package/assets/icons/small/pintrest.svg +1 -0
- package/assets/icons/small/premium--light.svg +17 -0
- package/assets/icons/small/premium.svg +17 -0
- package/assets/icons/small/print.svg +14 -0
- package/assets/icons/small/reddit.svg +1 -0
- package/assets/icons/small/rewards--light.svg +19 -0
- package/assets/icons/small/rewards-fast-track.svg +17 -0
- package/assets/icons/small/rewards-luggage.svg +22 -0
- package/assets/icons/small/rewards-seat.svg +22 -0
- package/assets/icons/small/rewards.svg +19 -0
- package/assets/icons/small/route-network--light.svg +25 -0
- package/assets/icons/small/route-network.svg +25 -0
- package/assets/icons/small/search--light.svg +16 -0
- package/assets/icons/small/search.svg +16 -0
- package/assets/icons/small/seat-reservation--light.svg +14 -0
- package/assets/icons/small/seat-reservation.svg +14 -0
- package/assets/icons/small/skis--light.svg +24 -0
- package/assets/icons/small/skis.svg +24 -0
- package/assets/icons/small/special-needs--light.svg +16 -0
- package/assets/icons/small/special-needs.svg +16 -0
- package/assets/icons/small/sun--light.svg +17 -0
- package/assets/icons/small/sun.svg +19 -0
- package/assets/icons/small/transit-stop--light.svg +19 -0
- package/assets/icons/small/transit-stop.svg +21 -0
- package/assets/icons/small/trash--light.svg +7 -0
- package/assets/icons/small/trash.svg +7 -0
- package/assets/icons/small/travel-deals--light.svg +9 -0
- package/assets/icons/small/travel-deals.svg +9 -0
- package/assets/icons/small/twitter.svg +17 -0
- package/assets/icons/small/type-asia--light.svg +20 -0
- package/assets/icons/small/type-asia.svg +20 -0
- package/assets/icons/small/type-city-vibes--light.svg +10 -0
- package/assets/icons/small/type-city-vibes.svg +10 -0
- package/assets/icons/small/type-greece--light.svg +22 -0
- package/assets/icons/small/type-greece.svg +22 -0
- package/assets/icons/small/type-norway--light.svg +15 -0
- package/assets/icons/small/type-norway.svg +15 -0
- package/assets/icons/small/type-scandinavia--light.svg +17 -0
- package/assets/icons/small/type-scandinavia.svg +35 -0
- package/assets/icons/small/type-shopping--light.svg +13 -0
- package/assets/icons/small/type-shopping.svg +13 -0
- package/assets/icons/small/type-skiing--light.svg +18 -0
- package/assets/icons/small/type-skiing.svg +18 -0
- package/assets/icons/small/type-spain--light.svg +12 -0
- package/assets/icons/small/type-spain.svg +12 -0
- package/assets/icons/small/type-sun-and-sea--light.svg +59 -0
- package/assets/icons/small/type-sun-and-sea.svg +59 -0
- package/assets/icons/small/type-usa--light.svg +24 -0
- package/assets/icons/small/type-usa.svg +24 -0
- package/assets/icons/small/wifi--light.svg +17 -0
- package/assets/icons/small/wifi.svg +17 -0
- package/assets/icons/small/youtube.svg +11 -0
- package/assets/icons/tablet-landscape.svg +12 -0
- package/assets/icons/tablet-portrait.svg +12 -0
- package/assets/icons/upgrade.svg +8 -0
- package/assets/icons/weather/humidity.svg +1 -0
- package/assets/icons/weather/sun.svg +1 -0
- package/assets/icons/weather/sunrise.svg +1 -0
- package/assets/icons/weather/sunset.svg +1 -0
- package/assets/icons/weather/temperature.svg +1 -0
- package/assets/icons/weather/weather--cloud.svg +1 -0
- package/assets/icons/weather/weather--rain-sun.svg +1 -0
- package/assets/icons/weather/weather--rain.svg +1 -0
- package/assets/icons/weather/weather--storm.svg +1 -0
- package/assets/icons/weather/weather--sun-cloud.svg +1 -0
- package/assets/icons/weather/weather--sun.svg +1 -0
- package/assets/images/cloud-1.svg +1 -0
- package/assets/images/logo--mobile.svg +50 -0
- package/assets/images/logo.svg +135 -0
- package/assets/images/slider-bar.svg +7 -0
- package/assets/images/slider-thumb-disabled.svg +19 -0
- package/assets/images/slider-thumb.svg +14 -0
- package/bundles/norwegian-core-components.umd.js +11898 -0
- package/bundles/norwegian-core-components.umd.js.map +1 -0
- package/esm2015/lib/components/accordion/accordion.component.js +118 -0
- package/esm2015/lib/components/accordion/accordion.module.js +15 -0
- package/esm2015/lib/components/accordion/index.js +3 -0
- package/esm2015/lib/components/airport-select/airport-select-dropdown/airport-select-dropdown.component.js +583 -0
- package/esm2015/lib/components/airport-select/airport-select.component.js +400 -0
- package/esm2015/lib/components/airport-select/airport-select.module.js +27 -0
- package/esm2015/lib/components/airport-select/index.js +4 -0
- package/esm2015/lib/components/airport-select/models/airport.model.js +2 -0
- package/esm2015/lib/components/airport-select/models/results-labels.model.js +3 -0
- package/esm2015/lib/components/airport-select/services/airport-select-dropdown.service.js +34 -0
- package/esm2015/lib/components/airport-select/services/airport-select.service.js +29 -0
- package/esm2015/lib/components/autocomplete/autocomplete.component.js +265 -0
- package/esm2015/lib/components/autocomplete/autocomplete.module.js +26 -0
- package/esm2015/lib/components/autocomplete/index.js +4 -0
- package/esm2015/lib/components/autocomplete/models/autocomplete.model.js +2 -0
- package/esm2015/lib/components/backdrop/backdrop.component.js +54 -0
- package/esm2015/lib/components/backdrop/backdrop.module.js +17 -0
- package/esm2015/lib/components/backdrop/index.js +3 -0
- package/esm2015/lib/components/box/box.component.js +61 -0
- package/esm2015/lib/components/box/box.module.js +14 -0
- package/esm2015/lib/components/box/index.js +3 -0
- package/esm2015/lib/components/button/button.component.js +140 -0
- package/esm2015/lib/components/button/button.module.js +15 -0
- package/esm2015/lib/components/button/index.js +3 -0
- package/esm2015/lib/components/checkbox/checkbox.component.js +125 -0
- package/esm2015/lib/components/checkbox/checkbox.module.js +15 -0
- package/esm2015/lib/components/checkbox/index.js +3 -0
- package/esm2015/lib/components/chip/chip.component.js +50 -0
- package/esm2015/lib/components/chip/chip.module.js +17 -0
- package/esm2015/lib/components/chip/index.js +3 -0
- package/esm2015/lib/components/container/container.component.js +47 -0
- package/esm2015/lib/components/container/container.module.js +14 -0
- package/esm2015/lib/components/container/index.js +3 -0
- package/esm2015/lib/components/continue/continue.component.js +173 -0
- package/esm2015/lib/components/continue/continue.module.js +23 -0
- package/esm2015/lib/components/continue/index.js +3 -0
- package/esm2015/lib/components/cover/cover.component.js +61 -0
- package/esm2015/lib/components/cover/cover.module.js +16 -0
- package/esm2015/lib/components/cover/index.js +3 -0
- package/esm2015/lib/components/datepicker/calendar/calendar-date.model.js +2 -0
- package/esm2015/lib/components/datepicker/calendar/calendar.component.js +560 -0
- package/esm2015/lib/components/datepicker/calendar/enums/week-start.enum.js +6 -0
- package/esm2015/lib/components/datepicker/calendar/models/day.model.js +2 -0
- package/esm2015/lib/components/datepicker/calendar/models/select-option.model.js +2 -0
- package/esm2015/lib/components/datepicker/calendar/models/week.model.js +2 -0
- package/esm2015/lib/components/datepicker/datepicker.component.js +511 -0
- package/esm2015/lib/components/datepicker/datepicker.module.js +34 -0
- package/esm2015/lib/components/datepicker/index.js +5 -0
- package/esm2015/lib/components/datepicker/services/calendar.service.js +217 -0
- package/esm2015/lib/components/datepicker-combo/datepicker-combo.component.js +306 -0
- package/esm2015/lib/components/datepicker-combo/datepicker-combo.module.js +22 -0
- package/esm2015/lib/components/datepicker-combo/index.js +3 -0
- package/esm2015/lib/components/dropdown/dropdown.component.js +146 -0
- package/esm2015/lib/components/dropdown/dropdown.module.js +21 -0
- package/esm2015/lib/components/dropdown/index.js +3 -0
- package/esm2015/lib/components/filter/enums/trip-type.enum.js +8 -0
- package/esm2015/lib/components/filter/filter.component.js +1100 -0
- package/esm2015/lib/components/filter/filter.module.js +44 -0
- package/esm2015/lib/components/filter/index.js +4 -0
- package/esm2015/lib/components/grid/col/col.component.js +47 -0
- package/esm2015/lib/components/grid/grid.component.js +55 -0
- package/esm2015/lib/components/grid/grid.module.js +15 -0
- package/esm2015/lib/components/grid/index.js +4 -0
- package/esm2015/lib/components/icon/icon.component.js +42 -0
- package/esm2015/lib/components/icon/icon.module.js +17 -0
- package/esm2015/lib/components/icon/index.js +3 -0
- package/esm2015/lib/components/icon-list/icon-list.component.js +46 -0
- package/esm2015/lib/components/icon-list/icon-list.model.js +2 -0
- package/esm2015/lib/components/icon-list/icon-list.module.js +15 -0
- package/esm2015/lib/components/icon-list/index.js +4 -0
- package/esm2015/lib/components/index.js +49 -0
- package/esm2015/lib/components/info/index.js +4 -0
- package/esm2015/lib/components/info/info.component.js +81 -0
- package/esm2015/lib/components/info/info.module.js +21 -0
- package/esm2015/lib/components/info/models/info.model.js +2 -0
- package/esm2015/lib/components/input/index.js +3 -0
- package/esm2015/lib/components/input/input.component.js +139 -0
- package/esm2015/lib/components/input/input.module.js +16 -0
- package/esm2015/lib/components/journey/index.js +3 -0
- package/esm2015/lib/components/journey/journey.component.js +122 -0
- package/esm2015/lib/components/journey/journey.module.js +19 -0
- package/esm2015/lib/components/journey/models/journey-flight.model.js +2 -0
- package/esm2015/lib/components/journey/models/journey.model.js +2 -0
- package/esm2015/lib/components/journey-availability/index.js +3 -0
- package/esm2015/lib/components/journey-availability/journey-availability.component.js +125 -0
- package/esm2015/lib/components/journey-availability/journey-availability.module.js +26 -0
- package/esm2015/lib/components/journey-availability-list/enums/availability-sort-option.enum.js +7 -0
- package/esm2015/lib/components/journey-availability-list/index.js +3 -0
- package/esm2015/lib/components/journey-availability-list/journey-availability-list.component.js +175 -0
- package/esm2015/lib/components/journey-availability-list/journey-availability-list.module.js +23 -0
- package/esm2015/lib/components/journey-selection/index.js +6 -0
- package/esm2015/lib/components/journey-selection/journey-selection.component.js +110 -0
- package/esm2015/lib/components/journey-selection/journey-selection.module.js +24 -0
- package/esm2015/lib/components/journey-selection/models/journey-selection-collapsed.model.js +2 -0
- package/esm2015/lib/components/journey-selection/models/journey-selection-common.model.js +2 -0
- package/esm2015/lib/components/journey-selection/models/journey-selection-expanded.model.js +2 -0
- package/esm2015/lib/components/journey-selection/models/journey-selection.model.js +2 -0
- package/esm2015/lib/components/journey-stopover/index.js +3 -0
- package/esm2015/lib/components/journey-stopover/journey-stopover.component.js +121 -0
- package/esm2015/lib/components/journey-stopover/journey-stopover.module.js +19 -0
- package/esm2015/lib/components/journey-stopover/models/stopover-time.model.js +2 -0
- package/esm2015/lib/components/list/index.js +4 -0
- package/esm2015/lib/components/list/list-item/list-item.component.js +56 -0
- package/esm2015/lib/components/list/list.component.js +75 -0
- package/esm2015/lib/components/list/list.module.js +15 -0
- package/esm2015/lib/components/modal/index.js +3 -0
- package/esm2015/lib/components/modal/modal.component.js +131 -0
- package/esm2015/lib/components/modal/modal.module.js +25 -0
- package/esm2015/lib/components/number-field/index.js +3 -0
- package/esm2015/lib/components/number-field/number-field.component.js +118 -0
- package/esm2015/lib/components/number-field/number-field.module.js +24 -0
- package/esm2015/lib/components/page-footer/index.js +3 -0
- package/esm2015/lib/components/page-footer/page-footer.component.js +49 -0
- package/esm2015/lib/components/page-footer/page-footer.module.js +16 -0
- package/esm2015/lib/components/page-header/hamburger/hamburger.component.js +24 -0
- package/esm2015/lib/components/page-header/index.js +5 -0
- package/esm2015/lib/components/page-header/page-header.component.js +119 -0
- package/esm2015/lib/components/page-header/page-header.module.js +18 -0
- package/esm2015/lib/components/page-header/search/search.component.js +47 -0
- package/esm2015/lib/components/passenger-select/enums/passenger-type.enum.js +7 -0
- package/esm2015/lib/components/passenger-select/index.js +5 -0
- package/esm2015/lib/components/passenger-select/models/passengers.model.js +2 -0
- package/esm2015/lib/components/passenger-select/passenger-select.component.js +204 -0
- package/esm2015/lib/components/passenger-select/passenger-select.module.js +19 -0
- package/esm2015/lib/components/phone-number/index.js +3 -0
- package/esm2015/lib/components/phone-number/phone-number.component.js +115 -0
- package/esm2015/lib/components/phone-number/phone-number.module.js +27 -0
- package/esm2015/lib/components/premium-toggle/index.js +3 -0
- package/esm2015/lib/components/premium-toggle/premium-toggle.component.js +66 -0
- package/esm2015/lib/components/premium-toggle/premium-toggle.module.js +19 -0
- package/esm2015/lib/components/radio/index.js +3 -0
- package/esm2015/lib/components/radio/radio.component.js +79 -0
- package/esm2015/lib/components/radio/radio.module.js +15 -0
- package/esm2015/lib/components/select/index.js +6 -0
- package/esm2015/lib/components/select/models/select-option.model.js +2 -0
- package/esm2015/lib/components/select/optgroup/optgroup.component.js +31 -0
- package/esm2015/lib/components/select/option/option.component.js +29 -0
- package/esm2015/lib/components/select/select.component.js +316 -0
- package/esm2015/lib/components/select/select.module.js +21 -0
- package/esm2015/lib/components/simple-list/index.js +3 -0
- package/esm2015/lib/components/simple-list/simple-list.component.js +42 -0
- package/esm2015/lib/components/simple-list/simple-list.module.js +14 -0
- package/esm2015/lib/components/slide-toggle/index.js +3 -0
- package/esm2015/lib/components/slide-toggle/slide-toggle.component.js +105 -0
- package/esm2015/lib/components/slide-toggle/slide-toggle.module.js +20 -0
- package/esm2015/lib/components/slider/index.js +3 -0
- package/esm2015/lib/components/slider/slider.component.js +447 -0
- package/esm2015/lib/components/slider/slider.module.js +19 -0
- package/esm2015/lib/components/sort/index.js +3 -0
- package/esm2015/lib/components/sort/sort.component.js +87 -0
- package/esm2015/lib/components/sort/sort.module.js +23 -0
- package/esm2015/lib/components/spinner/index.js +3 -0
- package/esm2015/lib/components/spinner/spinner.component.js +57 -0
- package/esm2015/lib/components/spinner/spinner.module.js +14 -0
- package/esm2015/lib/components/subsidy-discount/index.js +4 -0
- package/esm2015/lib/components/subsidy-discount/models/subsidy-discount.model.js +2 -0
- package/esm2015/lib/components/subsidy-discount/subsidy-discount.component.js +101 -0
- package/esm2015/lib/components/subsidy-discount/subsidy-discount.module.js +23 -0
- package/esm2015/lib/components/suggestions/index.js +3 -0
- package/esm2015/lib/components/suggestions/suggestions.component.js +40 -0
- package/esm2015/lib/components/suggestions/suggestions.module.js +19 -0
- package/esm2015/lib/components/tab-group/index.js +4 -0
- package/esm2015/lib/components/tab-group/tab/tab.component.js +123 -0
- package/esm2015/lib/components/tab-group/tab-group.component.js +85 -0
- package/esm2015/lib/components/tab-group/tab-group.module.js +20 -0
- package/esm2015/lib/components/table/column/column.component.js +17 -0
- package/esm2015/lib/components/table/column-group/column-group.component.js +34 -0
- package/esm2015/lib/components/table/index.js +11 -0
- package/esm2015/lib/components/table/services/table.service.js +20 -0
- package/esm2015/lib/components/table/table-body/table-body.component.js +27 -0
- package/esm2015/lib/components/table/table-foot/table-foot.component.js +27 -0
- package/esm2015/lib/components/table/table-head/table-head.component.js +27 -0
- package/esm2015/lib/components/table/table-row/table-data/table-data.component.js +15 -0
- package/esm2015/lib/components/table/table-row/table-header/table-header.component.js +15 -0
- package/esm2015/lib/components/table/table-row/table-row.component.js +27 -0
- package/esm2015/lib/components/table/table.component.js +29 -0
- package/esm2015/lib/components/table/table.module.js +45 -0
- package/esm2015/lib/components/textarea/index.js +3 -0
- package/esm2015/lib/components/textarea/textarea.component.js +73 -0
- package/esm2015/lib/components/textarea/textarea.module.js +20 -0
- package/esm2015/lib/components/toggle/index.js +3 -0
- package/esm2015/lib/components/toggle/models/options.model.js +3 -0
- package/esm2015/lib/components/toggle/toggle.component.js +77 -0
- package/esm2015/lib/components/toggle/toggle.module.js +22 -0
- package/esm2015/lib/components/trip-summary/index.js +3 -0
- package/esm2015/lib/components/trip-summary/trip-summary.component.js +152 -0
- package/esm2015/lib/components/trip-summary/trip-summary.module.js +23 -0
- package/esm2015/lib/components/weather-icon/index.js +3 -0
- package/esm2015/lib/components/weather-icon/weather-icon.component.js +56 -0
- package/esm2015/lib/components/weather-icon/weather-icon.module.js +14 -0
- package/esm2015/lib/core/base/nas-component.base.js +48 -0
- package/esm2015/lib/core/decorators/debounce.decorator.js +12 -0
- package/esm2015/lib/core/directives/index.js +3 -0
- package/esm2015/lib/core/directives/nas-class/nas-class.directive.js +75 -0
- package/esm2015/lib/core/directives/nas-class/nas-class.module.js +17 -0
- package/esm2015/lib/core/extensions/html-element.extension.js +31 -0
- package/esm2015/lib/core/index.js +5 -0
- package/esm2015/lib/core/models/abandoned-basket-item.model.js +2 -0
- package/esm2015/lib/core/models/animate.model.js +2 -0
- package/esm2015/lib/core/models/class.model.js +2 -0
- package/esm2015/lib/core/models/index.js +7 -0
- package/esm2015/lib/core/models/link.model.js +2 -0
- package/esm2015/lib/core/models/position.model.js +2 -0
- package/esm2015/lib/core/models/utc-date.model.js +40 -0
- package/esm2015/lib/core/services/abandoned-basket/abandoned-basket.service.js +55 -0
- package/esm2015/lib/core/services/animate-helper/animate-helper.service.js +47 -0
- package/esm2015/lib/core/services/bem-helper/bem-helper.service.js +41 -0
- package/esm2015/lib/core/services/date/date-compare.enum.js +7 -0
- package/esm2015/lib/core/services/date/date-helper.service.js +196 -0
- package/esm2015/lib/core/services/device/device-helper.service.js +43 -0
- package/esm2015/lib/core/services/geolocation/geolocation-state.enum.js +8 -0
- package/esm2015/lib/core/services/geolocation/geolocation.service.js +60 -0
- package/esm2015/lib/core/services/index.js +10 -0
- package/esm2015/lib/core/services/language/language-helper.service.js +162 -0
- package/esm2015/lib/core/services/sort/sort.service.js +19 -0
- package/esm2015/lib/core/services/viewport/viewport.service.js +29 -0
- package/esm2015/lib/index.js +5 -0
- package/esm2015/lib/services/get-position.service.js +21 -0
- package/esm2015/lib/services/index.js +2 -0
- package/esm2015/lib/shared/index.js +2 -0
- package/esm2015/lib/shared/models/flight-details.js +3 -0
- package/esm2015/lib/shared/models/index.js +5 -0
- package/esm2015/lib/shared/models/journey-availability-sort.model.js +2 -0
- package/esm2015/lib/shared/models/journey-availability.model.js +2 -0
- package/esm2015/lib/shared/models/journey-details.model.js +2 -0
- package/esm2015/lib/shared/models/journey-duration.model.js +2 -0
- package/esm2015/lib/shared/models/journey-stopover.model.js +2 -0
- package/esm2015/lib/shared/models/journey-transit-info.model.js +2 -0
- package/esm2015/lib/shared/models/operating-carrier.model.js +2 -0
- package/esm2015/lib/shared/models/sort-option.model.js +2 -0
- package/esm2015/lib/shared/models/sort.model.js +2 -0
- package/esm2015/lib/shared/models/trip-item-details.model.js +2 -0
- package/esm2015/lib/shared/models/trip-summary-details.model.js +2 -0
- package/esm2015/lib/shared/models/trip-summary.model.js +2 -0
- package/esm2015/norwegian-core-components.js +12 -0
- package/esm2015/public_api.js +2 -0
- package/fesm2015/norwegian-core-components.js +10595 -0
- package/fesm2015/norwegian-core-components.js.map +1 -0
- package/lib/components/accordion/accordion.component.d.ts +205 -0
- package/lib/components/accordion/accordion.module.d.ts +2 -0
- package/lib/components/accordion/index.d.ts +2 -0
- package/lib/components/airport-select/airport-select-dropdown/airport-select-dropdown.component.d.ts +94 -0
- package/lib/components/airport-select/airport-select.component.d.ts +256 -0
- package/lib/components/airport-select/airport-select.module.d.ts +2 -0
- package/lib/components/airport-select/index.d.ts +3 -0
- package/lib/components/airport-select/models/airport.model.d.ts +10 -0
- package/lib/components/airport-select/models/results-labels.model.d.ts +7 -0
- package/lib/components/airport-select/services/airport-select-dropdown.service.d.ts +7 -0
- package/lib/components/airport-select/services/airport-select.service.d.ts +5 -0
- package/lib/components/autocomplete/autocomplete.component.d.ts +115 -0
- package/lib/components/autocomplete/autocomplete.module.d.ts +2 -0
- package/lib/components/autocomplete/index.d.ts +3 -0
- package/lib/components/autocomplete/models/autocomplete.model.d.ts +5 -0
- package/lib/components/backdrop/backdrop.component.d.ts +32 -0
- package/lib/components/backdrop/backdrop.module.d.ts +2 -0
- package/lib/components/backdrop/index.d.ts +2 -0
- package/lib/components/box/box.component.d.ts +69 -0
- package/lib/components/box/box.module.d.ts +2 -0
- package/lib/components/box/index.d.ts +2 -0
- package/lib/components/button/button.component.d.ts +238 -0
- package/lib/components/button/button.module.d.ts +2 -0
- package/lib/components/button/index.d.ts +2 -0
- package/lib/components/checkbox/checkbox.component.d.ts +119 -0
- package/lib/components/checkbox/checkbox.module.d.ts +2 -0
- package/lib/components/checkbox/index.d.ts +2 -0
- package/lib/components/chip/chip.component.d.ts +61 -0
- package/lib/components/chip/chip.module.d.ts +2 -0
- package/lib/components/chip/index.d.ts +2 -0
- package/lib/components/container/container.component.d.ts +47 -0
- package/lib/components/container/container.module.d.ts +2 -0
- package/lib/components/container/index.d.ts +2 -0
- package/lib/components/continue/continue.component.d.ts +154 -0
- package/lib/components/continue/continue.module.d.ts +2 -0
- package/lib/components/continue/index.d.ts +2 -0
- package/lib/components/cover/cover.component.d.ts +112 -0
- package/lib/components/cover/cover.module.d.ts +2 -0
- package/lib/components/cover/index.d.ts +2 -0
- package/lib/components/datepicker/calendar/calendar-date.model.d.ts +5 -0
- package/lib/components/datepicker/calendar/calendar.component.d.ts +156 -0
- package/lib/components/datepicker/calendar/enums/week-start.enum.d.ts +4 -0
- package/lib/components/datepicker/calendar/models/day.model.d.ts +9 -0
- package/lib/components/datepicker/calendar/models/select-option.model.d.ts +4 -0
- package/lib/components/datepicker/calendar/models/week.model.d.ts +5 -0
- package/lib/components/datepicker/datepicker.component.d.ts +235 -0
- package/lib/components/datepicker/datepicker.module.d.ts +2 -0
- package/lib/components/datepicker/index.d.ts +4 -0
- package/lib/components/datepicker/services/calendar.service.d.ts +24 -0
- package/lib/components/datepicker-combo/datepicker-combo.component.d.ts +246 -0
- package/lib/components/datepicker-combo/datepicker-combo.module.d.ts +2 -0
- package/lib/components/datepicker-combo/index.d.ts +2 -0
- package/lib/components/dropdown/dropdown.component.d.ts +64 -0
- package/lib/components/dropdown/dropdown.module.d.ts +2 -0
- package/lib/components/dropdown/index.d.ts +2 -0
- package/lib/components/filter/enums/trip-type.enum.d.ts +6 -0
- package/lib/components/filter/filter.component.d.ts +693 -0
- package/lib/components/filter/filter.module.d.ts +2 -0
- package/lib/components/filter/index.d.ts +3 -0
- package/lib/components/grid/col/col.component.d.ts +37 -0
- package/lib/components/grid/grid.component.d.ts +61 -0
- package/lib/components/grid/grid.module.d.ts +2 -0
- package/lib/components/grid/index.d.ts +3 -0
- package/lib/components/icon/icon.component.d.ts +57 -0
- package/lib/components/icon/icon.module.d.ts +2 -0
- package/lib/components/icon/index.d.ts +2 -0
- package/lib/components/icon-list/icon-list.component.d.ts +41 -0
- package/lib/components/icon-list/icon-list.model.d.ts +7 -0
- package/lib/components/icon-list/icon-list.module.d.ts +2 -0
- package/lib/components/icon-list/index.d.ts +3 -0
- package/lib/components/index.d.ts +48 -0
- package/lib/components/info/index.d.ts +3 -0
- package/lib/components/info/info.component.d.ts +71 -0
- package/lib/components/info/info.module.d.ts +2 -0
- package/lib/components/info/models/info.model.d.ts +7 -0
- package/lib/components/input/index.d.ts +2 -0
- package/lib/components/input/input.component.d.ts +163 -0
- package/lib/components/input/input.module.d.ts +2 -0
- package/lib/components/journey/index.d.ts +2 -0
- package/lib/components/journey/journey.component.d.ts +119 -0
- package/lib/components/journey/journey.module.d.ts +2 -0
- package/lib/components/journey/models/journey-flight.model.d.ts +10 -0
- package/lib/components/journey/models/journey.model.d.ts +5 -0
- package/lib/components/journey-availability/index.d.ts +2 -0
- package/lib/components/journey-availability/journey-availability.component.d.ts +90 -0
- package/lib/components/journey-availability/journey-availability.module.d.ts +2 -0
- package/lib/components/journey-availability-list/enums/availability-sort-option.enum.d.ts +5 -0
- package/lib/components/journey-availability-list/index.d.ts +2 -0
- package/lib/components/journey-availability-list/journey-availability-list.component.d.ts +116 -0
- package/lib/components/journey-availability-list/journey-availability-list.module.d.ts +2 -0
- package/lib/components/journey-selection/index.d.ts +5 -0
- package/lib/components/journey-selection/journey-selection.component.d.ts +70 -0
- package/lib/components/journey-selection/journey-selection.module.d.ts +2 -0
- package/lib/components/journey-selection/models/journey-selection-collapsed.model.d.ts +11 -0
- package/lib/components/journey-selection/models/journey-selection-common.model.d.ts +7 -0
- package/lib/components/journey-selection/models/journey-selection-expanded.model.d.ts +5 -0
- package/lib/components/journey-selection/models/journey-selection.model.d.ts +14 -0
- package/lib/components/journey-stopover/index.d.ts +2 -0
- package/lib/components/journey-stopover/journey-stopover.component.d.ts +132 -0
- package/lib/components/journey-stopover/journey-stopover.module.d.ts +2 -0
- package/lib/components/journey-stopover/models/stopover-time.model.d.ts +4 -0
- package/lib/components/list/index.d.ts +3 -0
- package/lib/components/list/list-item/list-item.component.d.ts +32 -0
- package/lib/components/list/list.component.d.ts +65 -0
- package/lib/components/list/list.module.d.ts +2 -0
- package/lib/components/modal/index.d.ts +2 -0
- package/lib/components/modal/modal.component.d.ts +119 -0
- package/lib/components/modal/modal.module.d.ts +2 -0
- package/lib/components/number-field/index.d.ts +2 -0
- package/lib/components/number-field/number-field.component.d.ts +96 -0
- package/lib/components/number-field/number-field.module.d.ts +2 -0
- package/lib/components/page-footer/index.d.ts +2 -0
- package/lib/components/page-footer/page-footer.component.d.ts +57 -0
- package/lib/components/page-footer/page-footer.module.d.ts +2 -0
- package/lib/components/page-header/hamburger/hamburger.component.d.ts +9 -0
- package/lib/components/page-header/index.d.ts +4 -0
- package/lib/components/page-header/page-header.component.d.ts +84 -0
- package/lib/components/page-header/page-header.module.d.ts +2 -0
- package/lib/components/page-header/search/search.component.d.ts +23 -0
- package/lib/components/passenger-select/enums/passenger-type.enum.d.ts +5 -0
- package/lib/components/passenger-select/index.d.ts +4 -0
- package/lib/components/passenger-select/models/passengers.model.d.ts +9 -0
- package/lib/components/passenger-select/passenger-select.component.d.ts +111 -0
- package/lib/components/passenger-select/passenger-select.module.d.ts +2 -0
- package/lib/components/phone-number/index.d.ts +2 -0
- package/lib/components/phone-number/phone-number.component.d.ts +278 -0
- package/lib/components/phone-number/phone-number.module.d.ts +2 -0
- package/lib/components/premium-toggle/index.d.ts +2 -0
- package/lib/components/premium-toggle/premium-toggle.component.d.ts +51 -0
- package/lib/components/premium-toggle/premium-toggle.module.d.ts +2 -0
- package/lib/components/radio/index.d.ts +2 -0
- package/lib/components/radio/radio.component.d.ts +115 -0
- package/lib/components/radio/radio.module.d.ts +2 -0
- package/lib/components/select/index.d.ts +5 -0
- package/lib/components/select/models/select-option.model.d.ts +4 -0
- package/lib/components/select/optgroup/optgroup.component.d.ts +22 -0
- package/lib/components/select/option/option.component.d.ts +21 -0
- package/lib/components/select/select.component.d.ts +156 -0
- package/lib/components/select/select.module.d.ts +2 -0
- package/lib/components/simple-list/index.d.ts +2 -0
- package/lib/components/simple-list/simple-list.component.d.ts +49 -0
- package/lib/components/simple-list/simple-list.module.d.ts +2 -0
- package/lib/components/slide-toggle/index.d.ts +2 -0
- package/lib/components/slide-toggle/slide-toggle.component.d.ts +60 -0
- package/lib/components/slide-toggle/slide-toggle.module.d.ts +2 -0
- package/lib/components/slider/index.d.ts +2 -0
- package/lib/components/slider/slider.component.d.ts +177 -0
- package/lib/components/slider/slider.module.d.ts +2 -0
- package/lib/components/sort/index.d.ts +2 -0
- package/lib/components/sort/sort.component.d.ts +47 -0
- package/lib/components/sort/sort.module.d.ts +2 -0
- package/lib/components/spinner/index.d.ts +2 -0
- package/lib/components/spinner/spinner.component.d.ts +58 -0
- package/lib/components/spinner/spinner.module.d.ts +2 -0
- package/lib/components/subsidy-discount/index.d.ts +3 -0
- package/lib/components/subsidy-discount/models/subsidy-discount.model.d.ts +4 -0
- package/lib/components/subsidy-discount/subsidy-discount.component.d.ts +57 -0
- package/lib/components/subsidy-discount/subsidy-discount.module.d.ts +2 -0
- package/lib/components/suggestions/index.d.ts +2 -0
- package/lib/components/suggestions/suggestions.component.d.ts +30 -0
- package/lib/components/suggestions/suggestions.module.d.ts +2 -0
- package/lib/components/tab-group/index.d.ts +3 -0
- package/lib/components/tab-group/tab/tab.component.d.ts +84 -0
- package/lib/components/tab-group/tab-group.component.d.ts +30 -0
- package/lib/components/tab-group/tab-group.module.d.ts +2 -0
- package/lib/components/table/column/column.component.d.ts +3 -0
- package/lib/components/table/column-group/column-group.component.d.ts +12 -0
- package/lib/components/table/index.d.ts +10 -0
- package/lib/components/table/services/table.service.d.ts +5 -0
- package/lib/components/table/table-body/table-body.component.d.ts +12 -0
- package/lib/components/table/table-foot/table-foot.component.d.ts +12 -0
- package/lib/components/table/table-head/table-head.component.d.ts +12 -0
- package/lib/components/table/table-row/table-data/table-data.component.d.ts +2 -0
- package/lib/components/table/table-row/table-header/table-header.component.d.ts +2 -0
- package/lib/components/table/table-row/table-row.component.d.ts +12 -0
- package/lib/components/table/table.component.d.ts +21 -0
- package/lib/components/table/table.module.d.ts +2 -0
- package/lib/components/textarea/index.d.ts +2 -0
- package/lib/components/textarea/textarea.component.d.ts +121 -0
- package/lib/components/textarea/textarea.module.d.ts +2 -0
- package/lib/components/toggle/index.d.ts +2 -0
- package/lib/components/toggle/models/options.model.d.ts +6 -0
- package/lib/components/toggle/toggle.component.d.ts +183 -0
- package/lib/components/toggle/toggle.module.d.ts +2 -0
- package/lib/components/trip-summary/index.d.ts +2 -0
- package/lib/components/trip-summary/trip-summary.component.d.ts +173 -0
- package/lib/components/trip-summary/trip-summary.module.d.ts +2 -0
- package/lib/components/weather-icon/index.d.ts +2 -0
- package/lib/components/weather-icon/weather-icon.component.d.ts +51 -0
- package/lib/components/weather-icon/weather-icon.module.d.ts +2 -0
- package/lib/core/base/nas-component.base.d.ts +11 -0
- package/lib/core/decorators/debounce.decorator.d.ts +1 -0
- package/lib/core/directives/index.d.ts +2 -0
- package/lib/core/directives/nas-class/nas-class.directive.d.ts +11 -0
- package/lib/core/directives/nas-class/nas-class.module.d.ts +2 -0
- package/lib/core/extensions/html-element.extension.d.ts +6 -0
- package/lib/core/index.d.ts +4 -0
- package/lib/core/models/abandoned-basket-item.model.d.ts +14 -0
- package/lib/core/models/animate.model.d.ts +6 -0
- package/lib/core/models/class.model.d.ts +6 -0
- package/lib/core/models/index.d.ts +6 -0
- package/lib/core/models/link.model.d.ts +4 -0
- package/lib/core/models/position.model.d.ts +4 -0
- package/lib/core/models/utc-date.model.d.ts +13 -0
- package/lib/core/services/abandoned-basket/abandoned-basket.service.d.ts +7 -0
- package/lib/core/services/animate-helper/animate-helper.service.d.ts +6 -0
- package/lib/core/services/bem-helper/bem-helper.service.d.ts +4 -0
- package/lib/core/services/date/date-compare.enum.d.ts +5 -0
- package/lib/core/services/date/date-helper.service.d.ts +19 -0
- package/lib/core/services/device/device-helper.service.d.ts +13 -0
- package/lib/core/services/geolocation/geolocation-state.enum.d.ts +6 -0
- package/lib/core/services/geolocation/geolocation.service.d.ts +6 -0
- package/lib/core/services/index.d.ts +9 -0
- package/lib/core/services/language/language-helper.service.d.ts +9 -0
- package/lib/core/services/sort/sort.service.d.ts +3 -0
- package/lib/core/services/viewport/viewport.service.d.ts +8 -0
- package/lib/index.d.ts +4 -0
- package/lib/services/get-position.service.d.ts +6 -0
- package/lib/services/index.d.ts +1 -0
- package/lib/shared/index.d.ts +1 -0
- package/lib/shared/models/flight-details.d.ts +22 -0
- package/lib/shared/models/index.d.ts +4 -0
- package/lib/shared/models/journey-availability-sort.model.d.ts +8 -0
- package/lib/shared/models/journey-availability.model.d.ts +25 -0
- package/lib/shared/models/journey-details.model.d.ts +8 -0
- package/lib/shared/models/journey-duration.model.d.ts +7 -0
- package/lib/shared/models/journey-stopover.model.d.ts +11 -0
- package/lib/shared/models/journey-transit-info.model.d.ts +5 -0
- package/lib/shared/models/operating-carrier.model.d.ts +4 -0
- package/lib/shared/models/sort-option.model.d.ts +11 -0
- package/lib/shared/models/sort.model.d.ts +10 -0
- package/lib/shared/models/trip-item-details.model.d.ts +12 -0
- package/lib/shared/models/trip-summary-details.model.d.ts +5 -0
- package/lib/shared/models/trip-summary.model.d.ts +4 -0
- package/norwegian-core-components.d.ts +11 -0
- package/norwegian-core-components.metadata.json +1 -0
- package/package.json +19 -0
- package/public_api.d.ts +1 -0
- package/styles/1__settings/_colors.scss +65 -0
- package/styles/1__settings/_mixins.scss +226 -0
- package/styles/1__settings/_type.scss +53 -0
- package/styles/1__settings/_vars.scss +62 -0
- package/styles/2__generic/_fonts.scss +99 -0
- package/styles/2__generic/_reset.scss +275 -0
- package/styles/3__base/_animations.scss +138 -0
- package/styles/3__base/_body.scss +23 -0
- package/styles/3__base/_fixes.scss +5 -0
- package/styles/3__base/_form.scss +18 -0
- package/styles/3__base/_grid.scss +115 -0
- package/styles/3__base/_heading.scss +110 -0
- package/styles/3__base/_hr.scss +30 -0
- package/styles/3__base/_input.scss +38 -0
- package/styles/3__base/_link.scss +48 -0
- package/styles/3__base/_table.scss +44 -0
- package/styles/3__base/_type.scss +69 -0
- package/styles/_helpers.scss +4 -0
- package/styles/_index.scss +15 -0
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export var WeekStart;
|
|
2
|
+
(function (WeekStart) {
|
|
3
|
+
WeekStart[WeekStart["monday"] = 0] = "monday";
|
|
4
|
+
WeekStart[WeekStart["sunday"] = 1] = "sunday";
|
|
5
|
+
})(WeekStart || (WeekStart = {}));
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vlay1zdGFydC5lbnVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9kYXRlcGlja2VyL2NhbGVuZGFyL2VudW1zL3dlZWstc3RhcnQuZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxTQUdYO0FBSEQsV0FBWSxTQUFTO0lBQ25CLDZDQUFNLENBQUE7SUFDTiw2Q0FBTSxDQUFBO0FBQ1IsQ0FBQyxFQUhXLFNBQVMsS0FBVCxTQUFTLFFBR3BCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gV2Vla1N0YXJ0IHtcbiAgbW9uZGF5LFxuICBzdW5kYXlcbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5Lm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9kYXRlcGlja2VyL2NhbGVuZGFyL21vZGVscy9kYXkubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRGF5TW9kZWwge1xuICAgIGRhdGU6IHN0cmluZztcbiAgICBpbmRleD86IG51bWJlcjtcbiAgICBpc1NlbGVjdGVkPzogYm9vbGVhbjtcbiAgICBpc0VtcHR5PzogYm9vbGVhbjtcbiAgICBpc0Rpc2FibGVkPzogYm9vbGVhbjtcbiAgICBpc0F2YWlsYWJsZT86IGJvb2xlYW47XG4gICAgaXNBY3RpdmU/OiBib29sZWFuO1xufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LW9wdGlvbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvZGF0ZXBpY2tlci9jYWxlbmRhci9tb2RlbHMvc2VsZWN0LW9wdGlvbi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBTZWxlY3RPcHRpb25Nb2RlbCB7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nO1xufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vlay5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvZGF0ZXBpY2tlci9jYWxlbmRhci9tb2RlbHMvd2Vlay5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF5TW9kZWwgfSBmcm9tICcuL2RheS5tb2RlbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2Vla01vZGVsIHtcbiAgICBkYXlzOiBBcnJheTxEYXlNb2RlbD47XG4gICAgd2Vla051bWJlcjogbnVtYmVyO1xufVxuIl19
|
|
@@ -0,0 +1,511 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright Norwegian Air Shuttle. All Rights Reserved.
|
|
4
|
+
*/
|
|
5
|
+
import { DatePipe } from '@angular/common';
|
|
6
|
+
import { Component, EventEmitter, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
|
|
7
|
+
import { NasComponentBase } from '../../core/base/nas-component.base';
|
|
8
|
+
import { UtcDate } from '../../core/models/utc-date.model';
|
|
9
|
+
import { DateHelper } from '../../core/services/date/date-helper.service';
|
|
10
|
+
/**
|
|
11
|
+
* @description
|
|
12
|
+
* Norwegian Date Picker Component | Functional
|
|
13
|
+
*/
|
|
14
|
+
export class DatepickerComponent extends NasComponentBase {
|
|
15
|
+
constructor(datePipe, dateService) {
|
|
16
|
+
super('nas-datepicker');
|
|
17
|
+
this.datePipe = datePipe;
|
|
18
|
+
this.dateService = dateService;
|
|
19
|
+
this.show = false;
|
|
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
|
+
* Date selected by the user by clicking in date-picker date-box.
|
|
40
|
+
*/
|
|
41
|
+
this.selectedDateChange = new EventEmitter();
|
|
42
|
+
/**
|
|
43
|
+
* @description
|
|
44
|
+
* Month selected by the user by clicking in drop down for month selection or month navigation buttons.
|
|
45
|
+
*/
|
|
46
|
+
this.selectedMonthChange = new EventEmitter();
|
|
47
|
+
/**
|
|
48
|
+
* @description
|
|
49
|
+
* The calendar is open or closed.
|
|
50
|
+
*/
|
|
51
|
+
this.openChange = new EventEmitter();
|
|
52
|
+
/**
|
|
53
|
+
* @description
|
|
54
|
+
* When a user has actively changed the date.
|
|
55
|
+
*/
|
|
56
|
+
this.focusOnNextChange = new EventEmitter();
|
|
57
|
+
/**
|
|
58
|
+
* @description
|
|
59
|
+
* When a user has pressed shift + tab to go to previous control.
|
|
60
|
+
*/
|
|
61
|
+
this.focusOnPreviousChange = new EventEmitter();
|
|
62
|
+
this.forceNotOpenCalendar = false;
|
|
63
|
+
}
|
|
64
|
+
get showBackdrop() {
|
|
65
|
+
return this.show && !this.exists(this.disableBackdrop);
|
|
66
|
+
}
|
|
67
|
+
set showBackdrop(value) {
|
|
68
|
+
if (this.show === value) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
setTimeout(() => {
|
|
72
|
+
this.show = value;
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* @description
|
|
77
|
+
* The lowest date allowed.
|
|
78
|
+
*/
|
|
79
|
+
get lowerLimitDate() {
|
|
80
|
+
return this.lowerLimitDateValue;
|
|
81
|
+
}
|
|
82
|
+
set lowerLimitDate(date) {
|
|
83
|
+
this.lowerLimitDateValue = date;
|
|
84
|
+
if (this.dateService.isLessThan(this.selectedDate, date, false, true, true)) {
|
|
85
|
+
this.selectedDate = date;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* @description
|
|
90
|
+
* boolean value to disable or enable the input of the date picker.
|
|
91
|
+
*/
|
|
92
|
+
get disabled() {
|
|
93
|
+
return this.disabledValue;
|
|
94
|
+
}
|
|
95
|
+
set disabled(value) {
|
|
96
|
+
this.disabledValue = value;
|
|
97
|
+
if (this.nasFormGroup && this.nasFormControlName) {
|
|
98
|
+
setTimeout(() => {
|
|
99
|
+
const control = this.nasFormGroup.get(this.nasFormControlName);
|
|
100
|
+
if (!control) {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
if (value) {
|
|
104
|
+
control.disable();
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
control.enable();
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* @description
|
|
114
|
+
* An array of times to be added in the time selector.
|
|
115
|
+
*/
|
|
116
|
+
get times() {
|
|
117
|
+
return this.timesValue;
|
|
118
|
+
}
|
|
119
|
+
set times(times) {
|
|
120
|
+
if (!times) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
this.timesValue = times;
|
|
124
|
+
this.timeOptions = times.map(x => {
|
|
125
|
+
x.year = new Date().getUTCFullYear();
|
|
126
|
+
const option = {
|
|
127
|
+
title: this.datePipe.transform(this.dateService.date(x), this.timeDisplayFormat, 'UTC', this.locale),
|
|
128
|
+
value: this.dateService.date(x).toISOString()
|
|
129
|
+
};
|
|
130
|
+
return option;
|
|
131
|
+
});
|
|
132
|
+
this.dateDisplayFormat = 'mediumDate';
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* @description
|
|
136
|
+
* The calendar is open or closed.
|
|
137
|
+
*/
|
|
138
|
+
get open() {
|
|
139
|
+
return this.openValue;
|
|
140
|
+
}
|
|
141
|
+
set open(open) {
|
|
142
|
+
if (open === this.openValue) {
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
this.openValue = open;
|
|
146
|
+
if (open) {
|
|
147
|
+
this.openCalendar();
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
this.closeCalendar();
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* @description
|
|
155
|
+
* Set selected month.
|
|
156
|
+
*/
|
|
157
|
+
get selectedMonth() {
|
|
158
|
+
return this.selectedMonthValue;
|
|
159
|
+
}
|
|
160
|
+
set selectedMonth(month) {
|
|
161
|
+
if (!month) {
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
if (this.dateService.isSameMonth(this.selectedMonthValue, month)) {
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
setTimeout(() => {
|
|
168
|
+
this.selectedMonthValue = month;
|
|
169
|
+
this.selectedMonthChange.emit(month);
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* @description
|
|
174
|
+
* Gets or sets the selected Date in the date picker. Setting this date will highlight the date in the date picker
|
|
175
|
+
* and user can change it by clicking from any other enabled dates
|
|
176
|
+
* or by navigating betrween months and selecting from different available month.
|
|
177
|
+
*/
|
|
178
|
+
get selectedDate() {
|
|
179
|
+
return this.selectedDateValue;
|
|
180
|
+
}
|
|
181
|
+
set selectedDate(date) {
|
|
182
|
+
if (!date) {
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
if (this.selectedDateValue && this.dateService.isSameDate(this.selectedDateValue, date)) {
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
if (this.selectedTimeValue) {
|
|
189
|
+
date = new UtcDate(date.year, date.month, date.date, this.selectedTimeValue.hours, this.selectedTimeValue.minutes);
|
|
190
|
+
}
|
|
191
|
+
this.selectedDateValue = date;
|
|
192
|
+
if (this.nasFormGroup && this.nasFormControlName) {
|
|
193
|
+
const control = this.nasFormGroup.get(this.nasFormControlName);
|
|
194
|
+
if (control) {
|
|
195
|
+
const calendarDate = {
|
|
196
|
+
model: this.datePipe.transform(this.dateService.date(date), this.dateDisplayFormat, 'UTC', this.locale),
|
|
197
|
+
date: date
|
|
198
|
+
};
|
|
199
|
+
control.patchValue(calendarDate);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
setTimeout(() => {
|
|
203
|
+
this.model = this.datePipe.transform(this.dateService.date(date), this.dateDisplayFormat, 'UTC', this.locale);
|
|
204
|
+
});
|
|
205
|
+
this.selectedDateChange.emit(date);
|
|
206
|
+
if (this.show) {
|
|
207
|
+
this.closeCalendar();
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* @description
|
|
212
|
+
* Sets the selected time in the time selector.
|
|
213
|
+
*/
|
|
214
|
+
get selectedTime() {
|
|
215
|
+
return this.selectedTimeValue;
|
|
216
|
+
}
|
|
217
|
+
set selectedTime(time) {
|
|
218
|
+
if (!time) {
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
this.selectedTimeValue = time;
|
|
222
|
+
if (this.timeOptions && this.timeOptions.length > 0) {
|
|
223
|
+
const timeOption = this.timeOptions.find(x => x.value === this.dateService.date(time).toISOString());
|
|
224
|
+
if (timeOption) {
|
|
225
|
+
this.selectedTimeOption = timeOption;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
if (this.selectedDate) {
|
|
229
|
+
this.selectedDate = new UtcDate(this.selectedDate.year, this.selectedDate.month, this.selectedDate.date, this.selectedTimeValue.hours, this.selectedTimeValue.minutes);
|
|
230
|
+
}
|
|
231
|
+
else if (this.activeDate) {
|
|
232
|
+
this.selectedDate = new UtcDate(this.activeDate.year, this.activeDate.month, this.activeDate.date, this.selectedTimeValue.hours, this.selectedTimeValue.minutes);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
get activeDate() {
|
|
236
|
+
if (this.activeDateValue) {
|
|
237
|
+
return this.activeDateValue;
|
|
238
|
+
}
|
|
239
|
+
else if (this.selectedDate) {
|
|
240
|
+
this.activeDateValue = this.selectedDate;
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
const now = new Date();
|
|
244
|
+
this.activeDateValue = new UtcDate(now.getFullYear(), now.getMonth(), now.getDate());
|
|
245
|
+
}
|
|
246
|
+
return this.activeDateValue;
|
|
247
|
+
}
|
|
248
|
+
set activeDate(date) {
|
|
249
|
+
if (this.lowerLimitDate && this.dateService.isLessThan(date, this.lowerLimitDate, false, true, true)) {
|
|
250
|
+
return;
|
|
251
|
+
}
|
|
252
|
+
this.activeDateValue = date;
|
|
253
|
+
clearTimeout(this.activeDateTimeout);
|
|
254
|
+
this.activeDateTimeout = setTimeout(() => {
|
|
255
|
+
this.model = this.datePipe.transform(this.dateService.date(this.activeDate), this.dateDisplayFormat, 'UTC', this.locale);
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
ngOnInit() {
|
|
259
|
+
if (this.nasFormGroup && this.nasFormControlName) {
|
|
260
|
+
this.nasFormGroup
|
|
261
|
+
.get(this.nasFormControlName)
|
|
262
|
+
.valueChanges
|
|
263
|
+
.subscribe(value => {
|
|
264
|
+
if (this.model === (value === null || value === void 0 ? void 0 : value.model)) {
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
setTimeout(() => {
|
|
268
|
+
this.model = value === null || value === void 0 ? void 0 : value.model;
|
|
269
|
+
this.selectedDateValue = value === null || value === void 0 ? void 0 : value.date;
|
|
270
|
+
});
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
onInputKeydownShiftTab(event) {
|
|
275
|
+
this.closeCalendar();
|
|
276
|
+
this.focusOnPreviousChange.emit(event);
|
|
277
|
+
}
|
|
278
|
+
onCalendarKeyDown(event) {
|
|
279
|
+
let currentActiveDate = this.activeDate.date;
|
|
280
|
+
let date;
|
|
281
|
+
if (document.activeElement === this.input.nativeElement) {
|
|
282
|
+
event.stopImmediatePropagation();
|
|
283
|
+
}
|
|
284
|
+
switch (event.key) {
|
|
285
|
+
case 'ArrowRight':
|
|
286
|
+
if (this.isActiveElementMonthButtons()) {
|
|
287
|
+
event.preventDefault();
|
|
288
|
+
break;
|
|
289
|
+
}
|
|
290
|
+
currentActiveDate++;
|
|
291
|
+
this.activeDate = this.dateService.utcDate(new Date(Date.UTC(this.activeDate.year, this.activeDate.month, currentActiveDate)));
|
|
292
|
+
this.setFocusOnActiveDateAsync();
|
|
293
|
+
break;
|
|
294
|
+
case 'ArrowLeft':
|
|
295
|
+
if (this.isActiveElementMonthButtons()) {
|
|
296
|
+
event.preventDefault();
|
|
297
|
+
break;
|
|
298
|
+
}
|
|
299
|
+
currentActiveDate--;
|
|
300
|
+
date = this.dateService.utcDate(new Date(Date.UTC(this.activeDate.year, this.activeDate.month, currentActiveDate)));
|
|
301
|
+
if (this.exists(this.disablePastSelection) && this.dateService.isInThePast(date)) {
|
|
302
|
+
break;
|
|
303
|
+
}
|
|
304
|
+
this.activeDate = date;
|
|
305
|
+
this.setFocusOnActiveDateAsync();
|
|
306
|
+
break;
|
|
307
|
+
case 'ArrowUp':
|
|
308
|
+
if (this.isActiveElementMonthButtons()) {
|
|
309
|
+
event.preventDefault();
|
|
310
|
+
break;
|
|
311
|
+
}
|
|
312
|
+
currentActiveDate -= 7;
|
|
313
|
+
date = this.dateService.utcDate(new Date(Date.UTC(this.activeDate.year, this.activeDate.month, currentActiveDate)));
|
|
314
|
+
if (this.exists(this.disablePastSelection) && this.dateService.isInThePast(date)) {
|
|
315
|
+
break;
|
|
316
|
+
}
|
|
317
|
+
this.activeDate = date;
|
|
318
|
+
this.setFocusOnActiveDateAsync();
|
|
319
|
+
event.preventDefault();
|
|
320
|
+
break;
|
|
321
|
+
case 'ArrowDown':
|
|
322
|
+
if (this.isActiveElementMonthButtons()) {
|
|
323
|
+
event.preventDefault();
|
|
324
|
+
break;
|
|
325
|
+
}
|
|
326
|
+
currentActiveDate += 7;
|
|
327
|
+
this.activeDateValue = this.dateService.utcDate(new Date(Date.UTC(this.activeDate.year, this.activeDate.month, currentActiveDate)));
|
|
328
|
+
this.setFocusOnActiveDateAsync();
|
|
329
|
+
event.preventDefault();
|
|
330
|
+
break;
|
|
331
|
+
case 'Escape':
|
|
332
|
+
this.closeCalendar();
|
|
333
|
+
this.forceNotOpenCalendar = true;
|
|
334
|
+
if (this.input) {
|
|
335
|
+
this.input.nativeElement.select();
|
|
336
|
+
}
|
|
337
|
+
break;
|
|
338
|
+
case 'Enter':
|
|
339
|
+
if (this.isActiveElementMonthButtons()) {
|
|
340
|
+
return;
|
|
341
|
+
}
|
|
342
|
+
this.setFocusOnTimeSelectorOrNext(event);
|
|
343
|
+
break;
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
onTimeSelectorKeydown(event) {
|
|
347
|
+
if (event.key === 'Tab') {
|
|
348
|
+
if (event.shiftKey) {
|
|
349
|
+
this.openCalendar();
|
|
350
|
+
}
|
|
351
|
+
else {
|
|
352
|
+
this.focusOnNextChange.emit(event);
|
|
353
|
+
}
|
|
354
|
+
event.preventDefault();
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
setFocusOnTimeSelectorOrNext(event) {
|
|
358
|
+
if (this.timeOptions) {
|
|
359
|
+
setTimeout(() => {
|
|
360
|
+
const selectElement = this.timeSelector.select.nativeElement;
|
|
361
|
+
if (selectElement) {
|
|
362
|
+
selectElement.focus();
|
|
363
|
+
}
|
|
364
|
+
});
|
|
365
|
+
}
|
|
366
|
+
else {
|
|
367
|
+
this.focusOnNextChange.emit(event);
|
|
368
|
+
}
|
|
369
|
+
this.closeCalendar();
|
|
370
|
+
}
|
|
371
|
+
onMonthChange(currentMonth) {
|
|
372
|
+
this.selectedMonth = currentMonth;
|
|
373
|
+
}
|
|
374
|
+
onMouseDownDatepicker() {
|
|
375
|
+
this.openCalendar();
|
|
376
|
+
}
|
|
377
|
+
openCalendar() {
|
|
378
|
+
if (this.show || this.disabled || this.forceNotOpenCalendar) {
|
|
379
|
+
this.forceNotOpenCalendar = false;
|
|
380
|
+
return;
|
|
381
|
+
}
|
|
382
|
+
setTimeout(() => {
|
|
383
|
+
this.show = true;
|
|
384
|
+
});
|
|
385
|
+
this.activeDate = this.selectedDate;
|
|
386
|
+
clearTimeout(this.openCalendarTimeout);
|
|
387
|
+
this.openCalendarTimeout = setTimeout(() => {
|
|
388
|
+
this.input.nativeElement.select();
|
|
389
|
+
this.openChange.emit(this.show);
|
|
390
|
+
}, 100);
|
|
391
|
+
}
|
|
392
|
+
onTimeSelected(option) {
|
|
393
|
+
this.selectedTime = this.dateService.utcDate(option.value);
|
|
394
|
+
this.focusOnNextChange.emit();
|
|
395
|
+
}
|
|
396
|
+
getMainClass() {
|
|
397
|
+
return this.getContainerClass('', [(this.exists(this.timeOptions) && 'has-time'),
|
|
398
|
+
(this.exists(this.compact) && 'compact')]);
|
|
399
|
+
}
|
|
400
|
+
getLabelClass() {
|
|
401
|
+
if (this.exists(this.disabled)) {
|
|
402
|
+
return this.getClass('date-picker-label', ['disabled']);
|
|
403
|
+
}
|
|
404
|
+
else {
|
|
405
|
+
return this.getClass('date-picker-label');
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
closeCalendar() {
|
|
409
|
+
setTimeout(() => {
|
|
410
|
+
this.show = false;
|
|
411
|
+
});
|
|
412
|
+
this.openChange.emit(false);
|
|
413
|
+
}
|
|
414
|
+
selectDate(event) {
|
|
415
|
+
if (!this.isModelValid()) {
|
|
416
|
+
return;
|
|
417
|
+
}
|
|
418
|
+
this.activeDate = this.date();
|
|
419
|
+
if (!this.someValidDaysEqualsSelectedDay(this.activeDate)) {
|
|
420
|
+
return;
|
|
421
|
+
}
|
|
422
|
+
this.selectedDate = this.activeDate;
|
|
423
|
+
this.setFocusOnTimeSelectorOrNext(event);
|
|
424
|
+
this.closeCalendar();
|
|
425
|
+
}
|
|
426
|
+
isActiveElementMonthButtons() {
|
|
427
|
+
return document.activeElement === this.calendar.nextMonthRef.nativeElement ||
|
|
428
|
+
document.activeElement === this.calendar.previousMonthRef.nativeElement ||
|
|
429
|
+
this.calendar.monthSelectRef && document.activeElement === this.calendar.monthSelectRef.select.nativeElement;
|
|
430
|
+
}
|
|
431
|
+
setFocusOnActiveDateAsync() {
|
|
432
|
+
setTimeout(() => {
|
|
433
|
+
const elmementToFocus = this.calendar.activeDateCell;
|
|
434
|
+
if (elmementToFocus) {
|
|
435
|
+
elmementToFocus.focus();
|
|
436
|
+
}
|
|
437
|
+
}, 200);
|
|
438
|
+
}
|
|
439
|
+
isModelValid() {
|
|
440
|
+
const timestamp = Date.parse(this.model);
|
|
441
|
+
return isNaN(timestamp) !== true;
|
|
442
|
+
}
|
|
443
|
+
allDays() {
|
|
444
|
+
const allDays = new Array();
|
|
445
|
+
if (this.calendar) {
|
|
446
|
+
this.calendar.weeks.forEach(x => x && x.days.forEach(d => allDays.push(d)));
|
|
447
|
+
}
|
|
448
|
+
return allDays;
|
|
449
|
+
}
|
|
450
|
+
someValidDaysEqualsSelectedDay(selectedDay) {
|
|
451
|
+
return this.allDays()
|
|
452
|
+
.some(x => x
|
|
453
|
+
&& this.dateService.isSameDate(this.dateService.utcDate(x.date), selectedDay)
|
|
454
|
+
&& (x.isAvailable || !x.isDisabled));
|
|
455
|
+
}
|
|
456
|
+
date() {
|
|
457
|
+
const modelDate = new Date(this.model);
|
|
458
|
+
const modelUtcDate = new UtcDate(modelDate.getFullYear(), modelDate.getMonth(), modelDate.getDate());
|
|
459
|
+
return modelUtcDate;
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
DatepickerComponent.decorators = [
|
|
463
|
+
{ type: Component, args: [{
|
|
464
|
+
selector: 'nas-datepicker',
|
|
465
|
+
template: "<label [nasClass]=\"getMainClass()\">\n <div [nasClass]=\"getClass('date-picker-content')\">\n <div [nasClass]=\"getClass('date-picker-wrapper')\">\n <div [nasClass]=\"getClass('controls', show && 'active')\"\n (mousedown)=\"onMouseDownDatepicker()\">\n <div #datePickerContent\n [nasClass]=\"getLabelClass()\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <input #input\n [nasClass]=\"getClass('date-picker')\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n [attr.aria-required]=\"required\"\n [attr.aria-haspopup]=\"true\"\n (keydown.tab)=\"selectDate($event)\"\n (keydown.shift.tab)=\"onInputKeydownShiftTab($event)\"\n (keydown.enter)=\"selectDate($event)\"\n (keydown.arrowdown)=\"onCalendarKeyDown($event)\"\n (keydown.arrowleft)=\"onCalendarKeyDown($event)\"\n (keydown.arrowright)=\"onCalendarKeyDown($event)\"\n (keydown.arrowup)=\"onCalendarKeyDown($event)\"\n (focus)=\"openCalendar()\"\n [(ngModel)]=\"model\" />\n </div>\n <div [nasClass]=\"getClass('calendar-icon')\">\n <nas-icon *ngIf=\"exists(disabled); else regularIcon\"\n [icon]=\"'calendar--disabled'\"\n [ngStyle]=\"{'pointer-events': 'none'}\">\n </nas-icon>\n <ng-template #regularIcon>\n <nas-icon icon=\"calendar\"\n (click)=\"openCalendar()\">\n </nas-icon>\n </ng-template>\n </div>\n <nas-calendar #calendar *ngIf=\"show\"\n [nasFormGroup]=\"nasFormGroup\"\n [nasFormControlName]=\"nasFormControlName\"\n [dateDisplayFormat]=\"dateDisplayFormat\"\n [noAvailableFlightsLabel]=\"noAvailableFlightsLabel\"\n [availableFlightsLabel]=\"availableFlightsLabel\"\n [availability]=\"exists(availability)\"\n [availableDates]=\"availableDates\"\n [lowerLimitDate]=\"lowerLimitDate\"\n [disablePastSelection]=\"exists(disablePastSelection)\"\n [locale]=\"locale\"\n [ariaLabelPreviousMonth]=\"ariaLabelPreviousMonth\"\n [ariaLabelNextMonth]=\"ariaLabelNextMonth\"\n [(activeDate)]=\"activeDate\"\n [(selectedDate)]=\"selectedDate\"\n (focusOnNextChange)=\"setFocusOnTimeSelectorOrNext($event)\"\n (keydown)=\"onCalendarKeyDown($event)\"\n (monthChange)=\"onMonthChange($event)\">\n </nas-calendar>\n </div>\n <nas-backdrop [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n [(showBackdrop)]=\"showBackdrop\"></nas-backdrop>\n </div>\n</label>\n<div *ngIf=\"timeOptions\"\n [nasClass]=\"getClass('time-selector-wrapper')\">\n <nas-select #timeSelector\n [selected]=\"selectedTimeOption\"\n (selectedChange)=\"onTimeSelected($event)\"\n (keydown)=\"onTimeSelectorKeydown($event)\">\n <nas-option *ngFor=\"let time of timeOptions\"\n [option]=\"time\"></nas-option>\n </nas-select>\n</div>\n<ng-template #content>\n <ng-content></ng-content>\n</ng-template>",
|
|
466
|
+
encapsulation: ViewEncapsulation.None,
|
|
467
|
+
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)}}:host{display:flex}.nas-datepicker{position:relative;top:0;left:0;width:100%;height:100%;overflow-x:visible;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:12px;max-height:98vh;overflow-y:visible}.nas-datepicker__date-picker-wrapper{position:relative;padding-bottom:3px;border-bottom:3px solid #c3c3c3}.nas-datepicker__date-picker-wrapper .nas-datepicker__date-picker{display:block;width:100%;height:35px;padding:0 16px 9px;border:0;border-radius:0;transition:all .2s cubic-bezier(0,0,.1,1);font-family:inherit;outline:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;box-sizing:border-box;color:#003251;font-family:\"Apercu\",\"Helvetica Neue\",Helvetica,Arial,sans-serif;font-weight:normal;font-size:16px;line-height:26px;position:relative;z-index:3;background-color:inherit}.nas-datepicker__date-picker-wrapper .nas-datepicker__date-picker[disabled]{color:#909090;background-color:#fff}.nas-datepicker__date-picker-wrapper .nas-datepicker__date-picker:-moz-placeholder{line-height:normal}.nas-datepicker__date-picker-wrapper .nas-datepicker__date-picker::-moz-placeholder{line-height:normal}.nas-datepicker__date-picker-wrapper .nas-datepicker__date-picker:-ms-input-placeholder{line-height:normal}.nas-datepicker__date-picker-wrapper .nas-datepicker__date-picker::-webkit-input-placeholder{line-height:normal}.nas-datepicker__date-picker-wrapper .nas-datepicker__date-picker:focus~.nas-datepicker__input-line{border-color:#003251}.nas-datepicker__date-picker-wrapper .nas-datepicker__calendar-icon{position:absolute;right:15px;top:50%;margin-top:-12px;vertical-align:middle;cursor:pointer;z-index:3}.nas-datepicker__date-picker-wrapper .nas-datepicker__date-picker-label{padding:9px 16px 0;position:relative;z-index:3;color:#003251;font-family:\"Apercu\",\"Helvetica Neue\",Helvetica,Arial,sans-serif;font-weight:bold;font-size:14px;line-height:20px;background-color:inherit;display:flex}.nas-datepicker__date-picker-wrapper .nas-datepicker__date-picker-label--disabled{color:#909090}.nas-datepicker__date-picker-wrapper nas-calendar{position:absolute;top:75px;vertical-align:middle;right:0px;z-index:4}@media (min-width: 640px){.nas-datepicker__date-picker-wrapper nas-calendar{right:-15px}}.nas-datepicker__date-picker-wrapper .nas-datepicker__controls{background-color:#fff}.nas-datepicker__time-selector-wrapper{border-bottom:3px solid #c3c3c3}.nas-datepicker__time-selector-wrapper nas-select{display:flex}.nas-datepicker__time-selector-wrapper nas-select ::ng-deep .nas-select{margin-bottom:0;margin-left:3px}.nas-datepicker__time-selector-wrapper nas-select ::ng-deep .nas-select:after{bottom:26px}.nas-datepicker__time-selector-wrapper nas-select ::ng-deep .nas-select select{border:3px solid #fff;background-color:#fff;height:64px}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.nas-datepicker__time-selector-wrapper nas-select ::ng-deep .nas-select select{height:60px}}.nas-datepicker__time-selector-wrapper nas-select ::ng-deep .nas-select select:focus{border-color:#003251}.nas-datepicker--has-time{padding-right:3px}.nas-datepicker nas-spinner{position:absolute;top:300px;left:45%;right:45%}.nas-datepicker__backdrop{display:block;position:fixed;z-index:2;top:0;left:0;width:100%;height:100%;color:transparent;background-color:#0019292b;-webkit-animation:datepicker-backdrop .7s ease-out both;animation:datepicker-backdrop .7s ease-out both}.nas-datepicker--compact{padding:0;margin-bottom:0}@-webkit-keyframes datepicker-backdrop{0%{opacity:0}}@keyframes datepicker-backdrop{0%{opacity:0}}\n"]
|
|
468
|
+
},] }
|
|
469
|
+
];
|
|
470
|
+
DatepickerComponent.ctorParameters = () => [
|
|
471
|
+
{ type: DatePipe },
|
|
472
|
+
{ type: DateHelper }
|
|
473
|
+
];
|
|
474
|
+
DatepickerComponent.propDecorators = {
|
|
475
|
+
input: [{ type: ViewChild, args: ['input',] }],
|
|
476
|
+
calendar: [{ type: ViewChild, args: ['calendar',] }],
|
|
477
|
+
datePickerContent: [{ type: ViewChild, args: ['datePickerContent',] }],
|
|
478
|
+
timeSelector: [{ type: ViewChild, args: ['timeSelector',] }],
|
|
479
|
+
ariaLabelBackdrop: [{ type: Input }],
|
|
480
|
+
disableBackdrop: [{ type: Input }],
|
|
481
|
+
noAvailableFlightsLabel: [{ type: Input }],
|
|
482
|
+
availableFlightsLabel: [{ type: Input }],
|
|
483
|
+
disablePastSelection: [{ type: Input }],
|
|
484
|
+
lowerLimitDate: [{ type: Input }],
|
|
485
|
+
availability: [{ type: Input }],
|
|
486
|
+
availableDates: [{ type: Input }],
|
|
487
|
+
disabled: [{ type: Input }],
|
|
488
|
+
placeholder: [{ type: Input }],
|
|
489
|
+
required: [{ type: Input }],
|
|
490
|
+
ariaDescribedby: [{ type: Input }],
|
|
491
|
+
ariaLabel: [{ type: Input }],
|
|
492
|
+
dateDisplayFormat: [{ type: Input }],
|
|
493
|
+
timeDisplayFormat: [{ type: Input }],
|
|
494
|
+
locale: [{ type: Input }],
|
|
495
|
+
compact: [{ type: Input }],
|
|
496
|
+
nasFormGroup: [{ type: Input }],
|
|
497
|
+
nasFormControlName: [{ type: Input }],
|
|
498
|
+
times: [{ type: Input }],
|
|
499
|
+
open: [{ type: Input }],
|
|
500
|
+
selectedMonth: [{ type: Input }],
|
|
501
|
+
selectedDate: [{ type: Input }],
|
|
502
|
+
selectedTime: [{ type: Input }],
|
|
503
|
+
ariaLabelPreviousMonth: [{ type: Input }],
|
|
504
|
+
ariaLabelNextMonth: [{ type: Input }],
|
|
505
|
+
selectedDateChange: [{ type: Output }],
|
|
506
|
+
selectedMonthChange: [{ type: Output }],
|
|
507
|
+
openChange: [{ type: Output }],
|
|
508
|
+
focusOnNextChange: [{ type: Output }],
|
|
509
|
+
focusOnPreviousChange: [{ type: Output }]
|
|
510
|
+
};
|
|
511
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBQ0gsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixFQUVsQixNQUFNLGVBQWUsQ0FBQztBQUt2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUV0RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDM0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBSTFFOzs7R0FHRztBQU9ILE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxnQkFBZ0I7SUFrYXZELFlBQ1UsUUFBa0IsRUFDbEIsV0FBdUI7UUFDL0IsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFGaEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQWphakMsU0FBSSxHQUFHLEtBQUssQ0FBQztRQW1JYjs7OztXQUlHO1FBQ00sc0JBQWlCLEdBQUcsbUJBQW1CLENBQUM7UUFFakQ7OztXQUdHO1FBQ00sc0JBQWlCLEdBQUcsT0FBTyxDQUFDO1FBRXJDOzs7O1dBSUc7UUFDTSxXQUFNLEdBQUcsT0FBTyxDQUFDO1FBdU0xQjs7O1dBR0c7UUFDTyx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBRTNEOzs7V0FHRztRQUNPLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFFNUQ7OztXQUdH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REwsS0FBSztxQ0F5Q0wsS0FBSztpQ0FNTCxLQUFLO2lDQU1MLE1BQU07a0NBTU4sTUFBTTt5QkFNTixNQUFNO2dDQU1OLE1BQU07b0NBTU4sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBOb3J3ZWdpYW4gQWlyIFNodXR0bGUuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cbmltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBPbkluaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDYWxlbmRhckNvbXBvbmVudCB9IGZyb20gJy4vY2FsZW5kYXIvY2FsZW5kYXIuY29tcG9uZW50JztcbmltcG9ydCB7IERheU1vZGVsIH0gZnJvbSAnLi9jYWxlbmRhci9tb2RlbHMvZGF5Lm1vZGVsJztcbmltcG9ydCB7IFNlbGVjdE9wdGlvbk1vZGVsIH0gZnJvbSAnLi9jYWxlbmRhci9tb2RlbHMvc2VsZWN0LW9wdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBOYXNDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vLi4vY29yZS9iYXNlL25hcy1jb21wb25lbnQuYmFzZSc7XG5pbXBvcnQgeyBDbGFzc01vZGVsIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMvY2xhc3MubW9kZWwnO1xuaW1wb3J0IHsgVXRjRGF0ZSB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWxzL3V0Yy1kYXRlLm1vZGVsJztcbmltcG9ydCB7IERhdGVIZWxwZXIgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL2RhdGUvZGF0ZS1oZWxwZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuLi9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYWxlbmRhckRhdGVNb2RlbCB9IGZyb20gJy4vY2FsZW5kYXIvY2FsZW5kYXItZGF0ZS5tb2RlbCc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKiBOb3J3ZWdpYW4gRGF0ZSBQaWNrZXIgQ29tcG9uZW50IHwgRnVuY3Rpb25hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduYXMtZGF0ZXBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIERhdGVwaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBOYXNDb21wb25lbnRCYXNlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgdGltZU9wdGlvbnM6IEFycmF5PFNlbGVjdE9wdGlvbk1vZGVsPjtcbiAgbW9kZWw6IHN0cmluZztcbiAgc2hvdyA9IGZhbHNlO1xuICBzZWxlY3RlZFRpbWVPcHRpb246IFNlbGVjdE9wdGlvbk1vZGVsO1xuXG4gIGdldCBzaG93QmFja2Ryb3AoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2hvdyAmJiAhdGhpcy5leGlzdHModGhpcy5kaXNhYmxlQmFja2Ryb3ApO1xuICB9XG4gIHNldCBzaG93QmFja2Ryb3AodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5zaG93ID09PSB2YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zaG93ID0gdmFsdWU7XG4gICAgfSk7XG4gIH1cblxuICBAVmlld0NoaWxkKCdpbnB1dCcpIGlucHV0OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdjYWxlbmRhcicpIGNhbGVuZGFyOiBDYWxlbmRhckNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnZGF0ZVBpY2tlckNvbnRlbnQnKSBkYXRlUGlja2VyQ29udGVudDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgndGltZVNlbGVjdG9yJykgdGltZVNlbGVjdG9yOiBTZWxlY3RDb21wb25lbnQ7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBZGRzICdhcmlhLWxhYmVsJyB0byB0aGUgYmFja2Ryb3BzLlxuICAgKi9cbiAgQElucHV0KCkgYXJpYUxhYmVsQmFja2Ryb3A6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEEgYm9vbGVhbiB2YWx1ZSB3aGVuIHNldCB3aWxsIGRpc2FibGUgc2hvd2luZyB0aGUgYmFja2Ryb3Agb24gcG9wdXAgb3BlblxuICAgKi9cbiAgQElucHV0KCkgZGlzYWJsZUJhY2tkcm9wOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogTGFiZWwgZm9yIG5vIGF2YWlsYWJsZSBmbGlnaHRzLlxuICAgKi9cbiAgQElucHV0KCkgbm9BdmFpbGFibGVGbGlnaHRzTGFiZWw6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIExhYmVsIGZvciBhdmFpbGFibGUgZmxpZ2h0cy5cbiAgICovXG4gIEBJbnB1dCgpIGF2YWlsYWJsZUZsaWdodHNMYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRGlzYWJsZSBwb3NzaWJpbGl0eSB0byBzZWxlY3QgZGF0ZXMgaW4gdGhlIHBhc3QuXG4gICAqL1xuICBASW5wdXQoKSBkaXNhYmxlUGFzdFNlbGVjdGlvbjogYm9vbGVhbjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSBsb3dlc3QgZGF0ZSBhbGxvd2VkLlxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IGxvd2VyTGltaXREYXRlKCk6IFV0Y0RhdGUge1xuICAgIHJldHVybiB0aGlzLmxvd2VyTGltaXREYXRlVmFsdWU7XG4gIH1cbiAgc2V0IGxvd2VyTGltaXREYXRlKGRhdGU6IFV0Y0RhdGUpIHtcbiAgICB0aGlzLmxvd2VyTGltaXREYXRlVmFsdWUgPSBkYXRlO1xuXG4gICAgaWYgKHRoaXMuZGF0ZVNlcnZpY2UuaXNMZXNzVGhhbih0aGlzLnNlbGVjdGVkRGF0ZSwgZGF0ZSwgZmFsc2UsIHRydWUsIHRydWUpKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IGRhdGU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBTZXRzIHRoZSBkYXRlcGlja2VyIGluIGF2YWlsYWJpbGl0eSBtb2RlIHdoZXJlIGF2YWlsYWJsZSBkYXRlcyBjYW4gYmUgYWRkZWQuXG4gICAqL1xuICBASW5wdXQoKSBhdmFpbGFiaWxpdHk6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBbiBhcnJheSB3aXRoIGFsbCB0aGUgYXZhaWxhYmxlIChzZWxlY3RhYmxlKSBkYXRlcyBvZiB0aGUgbW9udGguXG4gICAqL1xuICBASW5wdXQoKSBhdmFpbGFibGVEYXRlczogQXJyYXk8VXRjRGF0ZT47XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBib29sZWFuIHZhbHVlIHRvIGRpc2FibGUgb3IgZW5hYmxlIHRoZSBpbnB1dCBvZiB0aGUgZGF0ZSBwaWNrZXIuXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgZGlzYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGlzYWJsZWRWYWx1ZTtcbiAgfVxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRpc2FibGVkVmFsdWUgPSB2YWx1ZTtcblxuICAgIGlmICh0aGlzLm5hc0Zvcm1Hcm91cCAmJiB0aGlzLm5hc0Zvcm1Db250cm9sTmFtZSkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLm5hc0Zvcm1Hcm91cC5nZXQodGhpcy5uYXNGb3JtQ29udHJvbE5hbWUpO1xuXG4gICAgICAgIGlmICghY29udHJvbCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgIGNvbnRyb2wuZGlzYWJsZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnRyb2wuZW5hYmxlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSBwbGFjZSBob2xkZXIgc3RyaW5nIGZvciB0aGUgaW5wdXQgZm9yIGRhdGUgcGlja2VyLlxuICAgKi9cbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIHRoaXMgd2lsbCBzZXQgdGhlIHJlcXVpcmVkIGF0dHJpYnV0ZSBvbiB0aGUgaW5wdXQgc28gc3VlciBoYXMgdG8gZGF0ZS1waWNrZXIgdGhlIGRhdGUuXG4gICAqL1xuICBASW5wdXQoKSByZXF1aXJlZDogYm9vbGVhbjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIElzIHVzZWQgdG8gaW5kaWNhdGUgdGhlIElEcyBvZiB0aGUgZWxlbWVudHMgdGhhdCBkZXNjcmliZSB0aGUgZGF0ZSBwaWNrZXIgaW5wdXQuXG4gICAqL1xuICBASW5wdXQoKSBhcmlhRGVzY3JpYmVkYnk6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFyaWEgbGFiZWwgZm9yIGlucHV0IHRoYXQgZW5hYmxlcyBkYXRlLXBpY2tlciBwb3B1cCBvbmNlIGNsaWNrZWQuIEZvciBhY2Nlc3NpYmlsaXR5IHdlYiBzdGFuZGFyZHMuXG4gICAqL1xuICBASW5wdXQoKSBhcmlhTGFiZWw6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSBkaXNwbGF5IGZvcm1hdCBvZiB0aGUgZGF0ZSB3aGVuIHVzZXIgaGFzIHNlbGVjdGVkIHRoZSBkYXRlIGFuZCBpdCBpcyBiZWluZyBzaG93biBpbiB0aGUgaW5wdXQgYm94IGZvciB0aGUgZGF0ZSBwaWNrZXIuXG4gICAqIFBsZWFzZSBsb29rIGF0IHRoZSBhbmd1bGFyIERhdGUgcGlwZSBmb3IgdmFsaWQgZm9ybWF0cyBhbmQgdmFyaWF0aW9ucy5cbiAgICovXG4gIEBJbnB1dCgpIGRhdGVEaXNwbGF5Rm9ybWF0ID0gJ0VFRUUgZCwgTU1NTSB5eXl5JztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSB0aW1lIGRpc3BsYXkgZm9ybWF0LlxuICAgKi9cbiAgQElucHV0KCkgdGltZURpc3BsYXlGb3JtYXQgPSAnSEg6bW0nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSBsb2NhbGUgY29kZSBmb3IgdGhlIGxvY2FsZSBmb3JtYXQgcnVsZXMgdG8gdXNlLiBXaGVuIG5vdCBzdXBwbGllZCwgdXNlcyB0aGUgdmFsdWUgb2YgTE9DQUxFX0lELCB3aGljaCBpcyBlbi1VUyBieSBkZWZhdWx0LlxuICAgKiBUaGlzIHJlcXVpcmVzIHRoYXQgcmVnaXN0ZXJMb2NhbGVEYXRhIGlzIGNhbGxlZCB3aXRoIHRoZSByZXNwZWN0aXZlIGxvY2FsZS5cbiAgICovXG4gIEBJbnB1dCgpIGxvY2FsZSA9ICdlbi1VUyc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIG1vZGlmaWVyIHRvIHJlbW92ZSB0aGUgcGFkZGluZyBhbmQgbWFyZ2lucyBhcm91bmQgdGhlIGVsZW1lbnQuXG4gICAqL1xuICBASW5wdXQoKSBjb21wYWN0OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQWRkcyB0aGUgcGFyZW50J3MgZm9ybSBncm91cC5cbiAgICogSXQgcmVxdWlyZXMgdGhhdCB0aGUgY29uc3VtZXIgaW5jbHVkZWQgUmVhY3RpdmVGb3Jtc01vZHVsZSBpbiBpdCdzIG1vZHVsZS5cbiAgICogSXQgaXMgcmVxdWllcmVkIHRvIGJlIGZpbGxlZCBpZiBuYXNGb3JtQ29udHJvbE5hbWUgYWRkZWQuXG4gICAqL1xuICBASW5wdXQoKSBuYXNGb3JtR3JvdXA6IEZvcm1Hcm91cDtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNldHMgYSBmb3JtQ29udHJvbE5hbWUgZGlyZWN0aXZlIHRvIHRoZSBpbnB1dC5cbiAgICogSXQgcmVxdWlyZXMgdGhhdCB0aGUgY29uc3VtZXIgaW5jbHVkZWQgUmVhY3RpdmVGb3Jtc01vZHVsZSBpbiBpdCdzIG1vZHVsZS5cbiAgICogSXQgcmVxdWllcnMgdGhhdCB0aGUgbmFzRm9ybUdyb3VwIGlucHV0IGlzIGZpbGxlZC5cbiAgICovXG4gIEBJbnB1dCgpIG5hc0Zvcm1Db250cm9sTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQW4gYXJyYXkgb2YgdGltZXMgdG8gYmUgYWRkZWQgaW4gdGhlIHRpbWUgc2VsZWN0b3IuXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgdGltZXMoKTogQXJyYXk8VXRjRGF0ZT4ge1xuICAgIHJldHVybiB0aGlzLnRpbWVzVmFsdWU7XG4gIH1cbiAgc2V0IHRpbWVzKHRpbWVzOiBBcnJheTxVdGNEYXRlPikge1xuICAgIGlmICghdGltZXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnRpbWVzVmFsdWUgPSB0aW1lcztcbiAgICB0aGlzLnRpbWVPcHRpb25zID0gdGltZXMubWFwKHggPT4ge1xuICAgICAgeC55ZWFyID0gbmV3IERhdGUoKS5nZXRVVENGdWxsWWVhcigpO1xuICAgICAgY29uc3Qgb3B0aW9uOiBTZWxlY3RPcHRpb25Nb2RlbCA9IHtcbiAgICAgICAgdGl0bGU6IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMuZGF0ZVNlcnZpY2UuZGF0ZSh4KSwgdGhpcy50aW1lRGlzcGxheUZvcm1hdCwgJ1VUQycsIHRoaXMubG9jYWxlKSxcbiAgICAgICAgdmFsdWU6IHRoaXMuZGF0ZVNlcnZpY2UuZGF0ZSh4KS50b0lTT1N0cmluZygpXG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gb3B0aW9uO1xuICAgIH0pO1xuXG4gICAgdGhpcy5kYXRlRGlzcGxheUZvcm1hdCA9ICdtZWRpdW1EYXRlJztcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogVGhlIGNhbGVuZGFyIGlzIG9wZW4gb3IgY2xvc2VkLlxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IG9wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMub3BlblZhbHVlO1xuICB9XG4gIHNldCBvcGVuKG9wZW46IGJvb2xlYW4pIHtcbiAgICBpZiAob3BlbiA9PT0gdGhpcy5vcGVuVmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm9wZW5WYWx1ZSA9IG9wZW47XG5cbiAgICBpZiAob3Blbikge1xuICAgICAgdGhpcy5vcGVuQ2FsZW5kYXIoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbG9zZUNhbGVuZGFyKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBTZXQgc2VsZWN0ZWQgbW9udGguXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgc2VsZWN0ZWRNb250aCgpOiBVdGNEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZE1vbnRoVmFsdWU7XG4gIH1cbiAgc2V0IHNlbGVjdGVkTW9udGgobW9udGg6IFV0Y0RhdGUpIHtcbiAgICBpZiAoIW1vbnRoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGF0ZVNlcnZpY2UuaXNTYW1lTW9udGgodGhpcy5zZWxlY3RlZE1vbnRoVmFsdWUsIG1vbnRoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zZWxlY3RlZE1vbnRoVmFsdWUgPSBtb250aDtcbiAgICAgIHRoaXMuc2VsZWN0ZWRNb250aENoYW5nZS5lbWl0KG1vbnRoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogR2V0cyBvciBzZXRzIHRoZSBzZWxlY3RlZCBEYXRlIGluIHRoZSBkYXRlIHBpY2tlci4gU2V0dGluZyB0aGlzIGRhdGUgd2lsbCBoaWdobGlnaHQgdGhlIGRhdGUgaW4gdGhlIGRhdGUgcGlja2VyXG4gICAqIGFuZCB1c2VyIGNhbiBjaGFuZ2UgaXQgYnkgY2xpY2tpbmcgZnJvbSBhbnkgb3RoZXIgZW5hYmxlZCBkYXRlc1xuICAgKiBvciBieSBuYXZpZ2F0aW5nIGJldHJ3ZWVuIG1vbnRocyBhbmQgc2VsZWN0aW5nIGZyb20gZGlmZmVyZW50IGF2YWlsYWJsZSBtb250aC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBzZWxlY3RlZERhdGUoKTogVXRjRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWREYXRlVmFsdWU7XG4gIH1cbiAgc2V0IHNlbGVjdGVkRGF0ZShkYXRlOiBVdGNEYXRlKSB7XG4gICAgaWYgKCFkYXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWREYXRlVmFsdWUgJiYgdGhpcy5kYXRlU2VydmljZS5pc1NhbWVEYXRlKHRoaXMuc2VsZWN0ZWREYXRlVmFsdWUsIGRhdGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRUaW1lVmFsdWUpIHtcbiAgICAgIGRhdGUgPSBuZXcgVXRjRGF0ZShkYXRlLnllYXIsIGRhdGUubW9udGgsIGRhdGUuZGF0ZSwgdGhpcy5zZWxlY3RlZFRpbWVWYWx1ZS5ob3VycywgdGhpcy5zZWxlY3RlZFRpbWVWYWx1ZS5taW51dGVzKTtcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGVkRGF0ZVZhbHVlID0gZGF0ZTtcblxuICAgIGlmICh0aGlzLm5hc0Zvcm1Hcm91cCAmJiB0aGlzLm5hc0Zvcm1Db250cm9sTmFtZSkge1xuXG4gICAgICBjb25zdCBjb250cm9sID0gdGhpcy5uYXNGb3JtR3JvdXAuZ2V0KHRoaXMubmFzRm9ybUNvbnRyb2xOYW1lKTtcblxuICAgICAgaWYgKGNvbnRyb2wpIHtcbiAgICAgICAgY29uc3QgY2FsZW5kYXJEYXRlOiBDYWxlbmRhckRhdGVNb2RlbCA9IHtcbiAgICAgICAgICBtb2RlbDogdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5kYXRlU2VydmljZS5kYXRlKGRhdGUpLCB0aGlzLmRhdGVEaXNwbGF5Rm9ybWF0LCAnVVRDJywgdGhpcy5sb2NhbGUpLFxuICAgICAgICAgIGRhdGU6IGRhdGVcbiAgICAgICAgfTtcblxuICAgICAgICBjb250cm9sLnBhdGNoVmFsdWUoY2FsZW5kYXJEYXRlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMubW9kZWwgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLmRhdGVTZXJ2aWNlLmRhdGUoZGF0ZSksIHRoaXMuZGF0ZURpc3BsYXlGb3JtYXQsICdVVEMnLCB0aGlzLmxvY2FsZSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnNlbGVjdGVkRGF0ZUNoYW5nZS5lbWl0KGRhdGUpO1xuXG4gICAgaWYgKHRoaXMuc2hvdykge1xuICAgICAgdGhpcy5jbG9zZUNhbGVuZGFyKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBTZXRzIHRoZSBzZWxlY3RlZCB0aW1lIGluIHRoZSB0aW1lIHNlbGVjdG9yLlxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IHNlbGVjdGVkVGltZSgpOiBVdGNEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFRpbWVWYWx1ZTtcbiAgfVxuICBzZXQgc2VsZWN0ZWRUaW1lKHRpbWU6IFV0Y0RhdGUpIHtcbiAgICBpZiAoIXRpbWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGVkVGltZVZhbHVlID0gdGltZTtcblxuICAgIGlmICh0aGlzLnRpbWVPcHRpb25zICYmIHRoaXMudGltZU9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgdGltZU9wdGlvbiA9IHRoaXMudGltZU9wdGlvbnMuZmluZCh4ID0+IHgudmFsdWUgPT09IHRoaXMuZGF0ZVNlcnZpY2UuZGF0ZSh0aW1lKS50b0lTT1N0cmluZygpKTtcblxuICAgICAgaWYgKHRpbWVPcHRpb24pIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRpbWVPcHRpb24gPSB0aW1lT3B0aW9uO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLnNlbGVjdGVkRGF0ZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBuZXcgVXRjRGF0ZShcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUueWVhcixcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUubW9udGgsXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlLmRhdGUsXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUaW1lVmFsdWUuaG91cnMsXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUaW1lVmFsdWUubWludXRlcyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmFjdGl2ZURhdGUpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gbmV3IFV0Y0RhdGUoXG4gICAgICAgIHRoaXMuYWN0aXZlRGF0ZS55ZWFyLFxuICAgICAgICB0aGlzLmFjdGl2ZURhdGUubW9udGgsXG4gICAgICAgIHRoaXMuYWN0aXZlRGF0ZS5kYXRlLFxuICAgICAgICB0aGlzLnNlbGVjdGVkVGltZVZhbHVlLmhvdXJzLFxuICAgICAgICB0aGlzLnNlbGVjdGVkVGltZVZhbHVlLm1pbnV0ZXNcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBUklBIGxhYmVsIGZvciB0aGUgcHJldmlvdXMgbW9udGggYnV0dG9uIGluIHRoZSBjYWxlbmRhci5cbiAgICovXG4gIEBJbnB1dCgpIGFyaWFMYWJlbFByZXZpb3VzTW9udGg6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFSSUEgbGFiZWwgZm9yIHRoZSBuZXh0IG1vbnRoIGJ1dHRvbiBpbiB0aGUgY2FsZW5kYXIuXG4gICAqL1xuICBASW5wdXQoKSBhcmlhTGFiZWxOZXh0TW9udGg6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIERhdGUgc2VsZWN0ZWQgYnkgdGhlIHVzZXIgYnkgY2xpY2tpbmcgaW4gZGF0ZS1waWNrZXIgZGF0ZS1ib3guXG4gICAqL1xuICBAT3V0cHV0KCkgc2VsZWN0ZWREYXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxVdGNEYXRlPigpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogTW9udGggc2VsZWN0ZWQgYnkgdGhlIHVzZXIgYnkgY2xpY2tpbmcgaW4gZHJvcCBkb3duIGZvciBtb250aCBzZWxlY3Rpb24gb3IgbW9udGggbmF2aWdhdGlvbiBidXR0b25zLlxuICAgKi9cbiAgQE91dHB1dCgpIHNlbGVjdGVkTW9udGhDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFV0Y0RhdGU+KCk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUaGUgY2FsZW5kYXIgaXMgb3BlbiBvciBjbG9zZWQuXG4gICAqL1xuICBAT3V0cHV0KCkgb3BlbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFdoZW4gYSB1c2VyIGhhcyBhY3RpdmVseSBjaGFuZ2VkIHRoZSBkYXRlLlxuICAgKi9cbiAgQE91dHB1dCgpIGZvY3VzT25OZXh0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxLZXlib2FyZEV2ZW50IHwgTW91c2VFdmVudD4oKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFdoZW4gYSB1c2VyIGhhcyBwcmVzc2VkIHNoaWZ0ICsgdGFiIHRvIGdvIHRvIHByZXZpb3VzIGNvbnRyb2wuXG4gICAqL1xuICBAT3V0cHV0KCkgZm9jdXNPblByZXZpb3VzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxLZXlib2FyZEV2ZW50IHwgTW91c2VFdmVudD4oKTtcblxuICBnZXQgYWN0aXZlRGF0ZSgpOiBVdGNEYXRlIHtcbiAgICBpZiAodGhpcy5hY3RpdmVEYXRlVmFsdWUpIHtcbiAgICAgIHJldHVybiB0aGlzLmFjdGl2ZURhdGVWYWx1ZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWREYXRlKSB7XG4gICAgICB0aGlzLmFjdGl2ZURhdGVWYWx1ZSA9IHRoaXMuc2VsZWN0ZWREYXRlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgICAgdGhpcy5hY3RpdmVEYXRlVmFsdWUgPSBuZXcgVXRjRGF0ZShub3cuZ2V0RnVsbFllYXIoKSwgbm93LmdldE1vbnRoKCksIG5vdy5nZXREYXRlKCkpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hY3RpdmVEYXRlVmFsdWU7XG4gIH1cbiAgc2V0IGFjdGl2ZURhdGUoZGF0ZTogVXRjRGF0ZSkge1xuICAgIGlmICh0aGlzLmxvd2VyTGltaXREYXRlICYmIHRoaXMuZGF0ZVNlcnZpY2UuaXNMZXNzVGhhbihkYXRlLCB0aGlzLmxvd2VyTGltaXREYXRlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmFjdGl2ZURhdGVWYWx1ZSA9IGRhdGU7XG5cbiAgICBjbGVhclRpbWVvdXQodGhpcy5hY3RpdmVEYXRlVGltZW91dCk7XG5cbiAgICB0aGlzLmFjdGl2ZURhdGVUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm1vZGVsID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5kYXRlU2VydmljZS5kYXRlKHRoaXMuYWN0aXZlRGF0ZSksIHRoaXMuZGF0ZURpc3BsYXlGb3JtYXQsICdVVEMnLCB0aGlzLmxvY2FsZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5DYWxlbmRhclRpbWVvdXQ6IGFueTtcbiAgcHJpdmF0ZSBhY3RpdmVEYXRlVGltZW91dDogYW55O1xuICBwcml2YXRlIHNlbGVjdGVkRGF0ZVZhbHVlOiBVdGNEYXRlO1xuICBwcml2YXRlIG9wZW5WYWx1ZTogYm9vbGVhbjtcbiAgcHJpdmF0ZSBhY3RpdmVEYXRlVmFsdWU6IFV0Y0RhdGU7XG4gIHByaXZhdGUgdGltZXNWYWx1ZTogQXJyYXk8VXRjRGF0ZT47XG4gIHByaXZhdGUgc2VsZWN0ZWRUaW1lVmFsdWU6IFV0Y0RhdGU7XG4gIHByaXZhdGUgc2VsZWN0ZWRNb250aFZhbHVlOiBVdGNEYXRlO1xuICBwcml2YXRlIGRpc2FibGVkVmFsdWU6IGJvb2xlYW47XG4gIHByaXZhdGUgZm9yY2VOb3RPcGVuQ2FsZW5kYXIgPSBmYWxzZTtcbiAgcHJpdmF0ZSBsb3dlckxpbWl0RGF0ZVZhbHVlOiBVdGNEYXRlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZGF0ZVBpcGU6IERhdGVQaXBlLFxuICAgIHByaXZhdGUgZGF0ZVNlcnZpY2U6IERhdGVIZWxwZXIpIHtcbiAgICBzdXBlcignbmFzLWRhdGVwaWNrZXInKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm5hc0Zvcm1Hcm91cCAmJiB0aGlzLm5hc0Zvcm1Db250cm9sTmFtZSkge1xuICAgICAgdGhpcy5uYXNGb3JtR3JvdXBcbiAgICAgICAgLmdldCh0aGlzLm5hc0Zvcm1Db250cm9sTmFtZSlcbiAgICAgICAgLnZhbHVlQ2hhbmdlc1xuICAgICAgICAuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5tb2RlbCA9PT0gdmFsdWU/Lm1vZGVsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm1vZGVsID0gdmFsdWU/Lm1vZGVsO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVWYWx1ZSA9IHZhbHVlPy5kYXRlO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBvbklucHV0S2V5ZG93blNoaWZ0VGFiKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZUNhbGVuZGFyKCk7XG4gICAgdGhpcy5mb2N1c09uUHJldmlvdXNDaGFuZ2UuZW1pdChldmVudCk7XG4gIH1cblxuICBvbkNhbGVuZGFyS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGxldCBjdXJyZW50QWN0aXZlRGF0ZSA9IHRoaXMuYWN0aXZlRGF0ZS5kYXRlO1xuICAgIGxldCBkYXRlOiBVdGNEYXRlO1xuICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdBcnJvd1JpZ2h0JzpcbiAgICAgICAgaWYgKHRoaXMuaXNBY3RpdmVFbGVtZW50TW9udGhCdXR0b25zKCkpIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgY3VycmVudEFjdGl2ZURhdGUrKztcblxuICAgICAgICB0aGlzLmFjdGl2ZURhdGUgPSB0aGlzLmRhdGVTZXJ2aWNlLnV0Y0RhdGUobmV3IERhdGUoRGF0ZS5VVEModGhpcy5hY3RpdmVEYXRlLnllYXIsIHRoaXMuYWN0aXZlRGF0ZS5tb250aCwgY3VycmVudEFjdGl2ZURhdGUpKSk7XG4gICAgICAgIHRoaXMuc2V0Rm9jdXNPbkFjdGl2ZURhdGVBc3luYygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICAgIGlmICh0aGlzLmlzQWN0aXZlRWxlbWVudE1vbnRoQnV0dG9ucygpKSB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGN1cnJlbnRBY3RpdmVEYXRlLS07XG4gICAgICAgIGRhdGUgPSB0aGlzLmRhdGVTZXJ2aWNlLnV0Y0RhdGUobmV3IERhdGUoRGF0ZS5VVEModGhpcy5hY3RpdmVEYXRlLnllYXIsIHRoaXMuYWN0aXZlRGF0ZS5tb250aCwgY3VycmVudEFjdGl2ZURhdGUpKSk7XG5cbiAgICAgICAgaWYgKHRoaXMuZXhpc3RzKHRoaXMuZGlzYWJsZVBhc3RTZWxlY3Rpb24pICYmIHRoaXMuZGF0ZVNlcnZpY2UuaXNJblRoZVBhc3QoZGF0ZSkpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYWN0aXZlRGF0ZSA9IGRhdGU7XG4gICAgICAgIHRoaXMuc2V0Rm9jdXNPbkFjdGl2ZURhdGVBc3luYygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICBpZiAodGhpcy5pc0FjdGl2ZUVsZW1lbnRNb250aEJ1dHRvbnMoKSkge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50QWN0aXZlRGF0ZSAtPSA3O1xuICAgICAgICBkYXRlID0gdGhpcy5kYXRlU2VydmljZS51dGNEYXRlKG5ldyBEYXRlKERhdGUuVVRDKHRoaXMuYWN0aXZlRGF0ZS55ZWFyLCB0aGlzLmFjdGl2ZURhdGUubW9udGgsIGN1cnJlbnRBY3RpdmVEYXRlKSkpO1xuXG4gICAgICAgIGlmICh0aGlzLmV4aXN0cyh0aGlzLmRpc2FibGVQYXN0U2VsZWN0aW9uKSAmJiB0aGlzLmRhdGVTZXJ2aWNlLmlzSW5UaGVQYXN0KGRhdGUpKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmFjdGl2ZURhdGUgPSBkYXRlO1xuICAgICAgICB0aGlzLnNldEZvY3VzT25BY3RpdmVEYXRlQXN5bmMoKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICBpZiAodGhpcy5pc0FjdGl2ZUVsZW1lbnRNb250aEJ1dHRvbnMoKSkge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50QWN0aXZlRGF0ZSArPSA3O1xuICAgICAgICB0aGlzLmFjdGl2ZURhdGVWYWx1ZSA9IHRoaXMuZGF0ZVNlcnZpY2UudXRjRGF0ZShuZXcgRGF0ZShEYXRlLlVUQyh0aGlzLmFjdGl2ZURhdGUueWVhciwgdGhpcy5hY3RpdmVEYXRlLm1vbnRoLCBjdXJyZW50QWN0aXZlRGF0ZSkpKTtcblxuICAgICAgICB0aGlzLnNldEZvY3VzT25BY3RpdmVEYXRlQXN5bmMoKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdFc2NhcGUnOlxuICAgICAgICB0aGlzLmNsb3NlQ2FsZW5kYXIoKTtcblxuICAgICAgICB0aGlzLmZvcmNlTm90T3BlbkNhbGVuZGFyID0gdHJ1ZTtcblxuICAgICAgICBpZiAodGhpcy5pbnB1dCkge1xuICAgICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZWxlY3QoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgaWYgKHRoaXMuaXNBY3RpdmVFbGVtZW50TW9udGhCdXR0b25zKCkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldEZvY3VzT25UaW1lU2VsZWN0b3JPck5leHQoZXZlbnQpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBvblRpbWVTZWxlY3RvcktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnVGFiJykge1xuICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgIHRoaXMub3BlbkNhbGVuZGFyKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmZvY3VzT25OZXh0Q2hhbmdlLmVtaXQoZXZlbnQpO1xuICAgICAgfVxuXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIHNldEZvY3VzT25UaW1lU2VsZWN0b3JPck5leHQoZXZlbnQ6IEtleWJvYXJkRXZlbnQgfCBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMudGltZU9wdGlvbnMpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCBzZWxlY3RFbGVtZW50ID0gdGhpcy50aW1lU2VsZWN0b3Iuc2VsZWN0Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlmIChzZWxlY3RFbGVtZW50KSB7XG4gICAgICAgICAgc2VsZWN0RWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb2N1c09uTmV4dENoYW5nZS5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICB0aGlzLmNsb3NlQ2FsZW5kYXIoKTtcbiAgfVxuXG4gIG9uTW9udGhDaGFuZ2UoY3VycmVudE1vbnRoOiBVdGNEYXRlKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZE1vbnRoID0gY3VycmVudE1vbnRoO1xuICB9XG5cbiAgb25Nb3VzZURvd25EYXRlcGlja2VyKCk6IHZvaWQge1xuICAgIHRoaXMub3BlbkNhbGVuZGFyKCk7XG4gIH1cblxuICBvcGVuQ2FsZW5kYXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2hvdyB8fCB0aGlzLmRpc2FibGVkIHx8IHRoaXMuZm9yY2VOb3RPcGVuQ2FsZW5kYXIpIHtcbiAgICAgIHRoaXMuZm9yY2VOb3RPcGVuQ2FsZW5kYXIgPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2hvdyA9IHRydWU7XG4gICAgfSk7XG5cbiAgICB0aGlzLmFjdGl2ZURhdGUgPSB0aGlzLnNlbGVjdGVkRGF0ZTtcblxuICAgIGNsZWFyVGltZW91dCh0aGlzLm9wZW5DYWxlbmRhclRpbWVvdXQpO1xuXG4gICAgdGhpcy5vcGVuQ2FsZW5kYXJUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0KCk7XG4gICAgICB0aGlzLm9wZW5DaGFuZ2UuZW1pdCh0aGlzLnNob3cpO1xuICAgIH0sIDEwMCk7XG4gIH1cblxuICBvblRpbWVTZWxlY3RlZChvcHRpb246IFNlbGVjdE9wdGlvbk1vZGVsKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZFRpbWUgPSB0aGlzLmRhdGVTZXJ2aWNlLnV0Y0RhdGUob3B0aW9uLnZhbHVlKTtcbiAgICB0aGlzLmZvY3VzT25OZXh0Q2hhbmdlLmVtaXQoKTtcbiAgfVxuXG4gIGdldE1haW5DbGFzcygpOiBBcnJheTxDbGFzc01vZGVsPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Q29udGFpbmVyQ2xhc3MoJycsIFsodGhpcy5leGlzdHMoPGFueT50aGlzLnRpbWVPcHRpb25zKSAmJiAnaGFzLXRpbWUnKSxcbiAgICAodGhpcy5leGlzdHModGhpcy5jb21wYWN0KSAmJiAnY29tcGFjdCcpXSk7XG4gIH1cblxuICBnZXRMYWJlbENsYXNzKCk6IENsYXNzTW9kZWwge1xuICAgIGlmICh0aGlzLmV4aXN0cyh0aGlzLmRpc2FibGVkKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2xhc3MoJ2RhdGUtcGlja2VyLWxhYmVsJywgWydkaXNhYmxlZCddKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2xhc3MoJ2RhdGUtcGlja2VyLWxhYmVsJyk7XG4gICAgfVxuICB9XG5cbiAgY2xvc2VDYWxlbmRhcigpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2hvdyA9IGZhbHNlO1xuICAgIH0pO1xuXG4gICAgdGhpcy5vcGVuQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICB9XG5cbiAgc2VsZWN0RGF0ZShldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc01vZGVsVmFsaWQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYWN0aXZlRGF0ZSA9IHRoaXMuZGF0ZSgpO1xuXG4gICAgaWYgKCF0aGlzLnNvbWVWYWxpZERheXNFcXVhbHNTZWxlY3RlZERheSh0aGlzLmFjdGl2ZURhdGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY3RlZERhdGUgPSB0aGlzLmFjdGl2ZURhdGU7XG4gICAgdGhpcy5zZXRGb2N1c09uVGltZVNlbGVjdG9yT3JOZXh0KGV2ZW50KTtcblxuICAgIHRoaXMuY2xvc2VDYWxlbmRhcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0FjdGl2ZUVsZW1lbnRNb250aEJ1dHRvbnMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMuY2FsZW5kYXIubmV4dE1vbnRoUmVmLm5hdGl2ZUVsZW1lbnQgfHxcbiAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMuY2FsZW5kYXIucHJldmlvdXNNb250aFJlZi5uYXRpdmVFbGVtZW50IHx8XG4gICAgICB0aGlzLmNhbGVuZGFyLm1vbnRoU2VsZWN0UmVmICYmIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMuY2FsZW5kYXIubW9udGhTZWxlY3RSZWYuc2VsZWN0Lm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBwcml2YXRlIHNldEZvY3VzT25BY3RpdmVEYXRlQXN5bmMoKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBlbG1lbWVudFRvRm9jdXMgPSB0aGlzLmNhbGVuZGFyLmFjdGl2ZURhdGVDZWxsO1xuICAgICAgaWYgKGVsbWVtZW50VG9Gb2N1cykge1xuICAgICAgICBlbG1lbWVudFRvRm9jdXMuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9LCAyMDApO1xuICB9XG5cbiAgcHJpdmF0ZSBpc01vZGVsVmFsaWQoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5wYXJzZSh0aGlzLm1vZGVsKTtcbiAgICByZXR1cm4gaXNOYU4odGltZXN0YW1wKSAhPT0gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgYWxsRGF5cygpOiBBcnJheTxEYXlNb2RlbD4ge1xuICAgIGNvbnN0IGFsbERheXMgPSBuZXcgQXJyYXk8RGF5TW9kZWw+KCk7XG5cbiAgICBpZiAodGhpcy5jYWxlbmRhcikge1xuICAgICAgdGhpcy5jYWxlbmRhci53ZWVrcy5mb3JFYWNoKHggPT4geCAmJiB4LmRheXMuZm9yRWFjaChkID0+IGFsbERheXMucHVzaChkKSkpO1xuICAgIH1cblxuICAgIHJldHVybiBhbGxEYXlzO1xuICB9XG5cbiAgcHJpdmF0ZSBzb21lVmFsaWREYXlzRXF1YWxzU2VsZWN0ZWREYXkoc2VsZWN0ZWREYXk6IFV0Y0RhdGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hbGxEYXlzKClcbiAgICAgIC5zb21lKHggPT4geFxuICAgICAgICAmJiB0aGlzLmRhdGVTZXJ2aWNlLmlzU2FtZURhdGUodGhpcy5kYXRlU2VydmljZS51dGNEYXRlKHguZGF0ZSksIHNlbGVjdGVkRGF5KVxuICAgICAgICAmJiAoeC5pc0F2YWlsYWJsZSB8fCAheC5pc0Rpc2FibGVkKSk7XG4gIH1cblxuICBwcml2YXRlIGRhdGUoKTogVXRjRGF0ZSB7XG4gICAgY29uc3QgbW9kZWxEYXRlID0gbmV3IERhdGUodGhpcy5tb2RlbCk7XG4gICAgY29uc3QgbW9kZWxVdGNEYXRlID0gbmV3IFV0Y0RhdGUobW9kZWxEYXRlLmdldEZ1bGxZZWFyKCksIG1vZGVsRGF0ZS5nZXRNb250aCgpLCBtb2RlbERhdGUuZ2V0RGF0ZSgpKTtcbiAgICByZXR1cm4gbW9kZWxVdGNEYXRlO1xuICB9XG59XG4iXX0=
|