@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.
Files changed (1004) hide show
  1. package/README.md +78 -0
  2. package/assets/documentation/accordion/accordion.md +1 -0
  3. package/assets/documentation/airport-select/airport-select.md +0 -0
  4. package/assets/documentation/autocomplete/autocomplete.md +1 -0
  5. package/assets/documentation/box/box.md +1 -0
  6. package/assets/documentation/button/button.md +10 -0
  7. package/assets/documentation/checkbox/checkbox.md +7 -0
  8. package/assets/documentation/chip/chip.md +1 -0
  9. package/assets/documentation/container/container.md +1 -0
  10. package/assets/documentation/continue/continue.md +1 -0
  11. package/assets/documentation/cover/cover.md +1 -0
  12. package/assets/documentation/datepicker/calendar/calendar.md +3 -0
  13. package/assets/documentation/datepicker/datepicker.md +3 -0
  14. package/assets/documentation/datepicker-combo/datepicker-combo.md +1 -0
  15. package/assets/documentation/dropdown/dropdown.md +3 -0
  16. package/assets/documentation/filter/filter.md +0 -0
  17. package/assets/documentation/grid/grid.md +1 -0
  18. package/assets/documentation/icon/icon.md +4 -0
  19. package/assets/documentation/icon-list/icon-list.md +1 -0
  20. package/assets/documentation/info/info.md +1 -0
  21. package/assets/documentation/input/input.md +1 -0
  22. package/assets/documentation/journey/journey.md +1 -0
  23. package/assets/documentation/journey-availability/journey-availability.md +3 -0
  24. package/assets/documentation/journey-availability-list/journey-availability-list.md +9 -0
  25. package/assets/documentation/journey-selection/journey-selection.md +1 -0
  26. package/assets/documentation/journey-stopover/journey-stopover.md +1 -0
  27. package/assets/documentation/list/list.md +1 -0
  28. package/assets/documentation/modal/modal.md +0 -0
  29. package/assets/documentation/number-field/number-field.md +1 -0
  30. package/assets/documentation/page-footer/page-footer.md +1 -0
  31. package/assets/documentation/page-header/page-header.md +1 -0
  32. package/assets/documentation/passenger-select/passenger-select.md +1 -0
  33. package/assets/documentation/phone-number/phone-number.md +2 -0
  34. package/assets/documentation/premium-toggle/premium-toggle.md +9 -0
  35. package/assets/documentation/radio/radio.md +7 -0
  36. package/assets/documentation/select/select.md +1 -0
  37. package/assets/documentation/simple-list/simple-list.md +1 -0
  38. package/assets/documentation/slide-toggle/slide-toggle.md +1 -0
  39. package/assets/documentation/slider/slider.md +1 -0
  40. package/assets/documentation/sort/sort.md +1 -0
  41. package/assets/documentation/spinner/spinner.md +1 -0
  42. package/assets/documentation/subsidy-discount/subsidy-discount.md +3 -0
  43. package/assets/documentation/suggestions/suggestions.md +1 -0
  44. package/assets/documentation/tab-group/tab-group.md +1 -0
  45. package/assets/documentation/table/table.md +8 -0
  46. package/assets/documentation/textarea/textarea.md +1 -0
  47. package/assets/documentation/toggle/toggle.md +5 -0
  48. package/assets/documentation/trip-summary/trip-summary.md +2 -0
  49. package/assets/documentation/weather-icon/weather-icon.md +1 -0
  50. package/assets/fonts/TiemposHeadlineWeb-Bold.eot +0 -0
  51. package/assets/fonts/TiemposHeadlineWeb-Bold.woff +0 -0
  52. package/assets/fonts/TiemposHeadlineWeb-Bold.woff2 +0 -0
  53. package/assets/fonts/TiemposHeadlineWeb-BoldItalic.eot +0 -0
  54. package/assets/fonts/TiemposHeadlineWeb-BoldItalic.woff +0 -0
  55. package/assets/fonts/TiemposHeadlineWeb-BoldItalic.woff2 +0 -0
  56. package/assets/fonts/TiemposText-Medium.eot +0 -0
  57. package/assets/fonts/TiemposText-Medium.woff +0 -0
  58. package/assets/fonts/TiemposText-Medium.woff2 +0 -0
  59. package/assets/fonts/TiemposTextWeb-Italic.eot +0 -0
  60. package/assets/fonts/TiemposTextWeb-Italic.woff +0 -0
  61. package/assets/fonts/TiemposTextWeb-Italic.woff2 +0 -0
  62. package/assets/fonts/TiemposTextWeb-Regular.eot +0 -0
  63. package/assets/fonts/TiemposTextWeb-Regular.woff +0 -0
  64. package/assets/fonts/TiemposTextWeb-Regular.woff2 +0 -0
  65. package/assets/fonts/apercu_bold_italic_pro-web.eot +0 -0
  66. package/assets/fonts/apercu_bold_italic_pro-web.svg +12420 -0
  67. package/assets/fonts/apercu_bold_italic_pro-web.ttf +0 -0
  68. package/assets/fonts/apercu_bold_italic_pro-web.woff +0 -0
  69. package/assets/fonts/apercu_bold_italic_pro-web.woff2 +0 -0
  70. package/assets/fonts/apercu_bold_italic_pro.otf +0 -0
  71. package/assets/fonts/apercu_bold_pro-web.eot +0 -0
  72. package/assets/fonts/apercu_bold_pro-web.svg +10193 -0
  73. package/assets/fonts/apercu_bold_pro-web.ttf +0 -0
  74. package/assets/fonts/apercu_bold_pro-web.woff +0 -0
  75. package/assets/fonts/apercu_bold_pro-web.woff2 +0 -0
  76. package/assets/fonts/apercu_bold_pro.otf +0 -0
  77. package/assets/fonts/apercu_light_italic_pro-web.eot +0 -0
  78. package/assets/fonts/apercu_light_italic_pro-web.svg +12831 -0
  79. package/assets/fonts/apercu_light_italic_pro-web.ttf +0 -0
  80. package/assets/fonts/apercu_light_italic_pro-web.woff +0 -0
  81. package/assets/fonts/apercu_light_italic_pro-web.woff2 +0 -0
  82. package/assets/fonts/apercu_light_pro-web.eot +0 -0
  83. package/assets/fonts/apercu_light_pro-web.svg +9704 -0
  84. package/assets/fonts/apercu_light_pro-web.ttf +0 -0
  85. package/assets/fonts/apercu_light_pro-web.woff +0 -0
  86. package/assets/fonts/apercu_light_pro-web.woff2 +0 -0
  87. package/assets/fonts/apercu_medium_italic_pro-web.eot +0 -0
  88. package/assets/fonts/apercu_medium_italic_pro-web.svg +12354 -0
  89. package/assets/fonts/apercu_medium_italic_pro-web.ttf +0 -0
  90. package/assets/fonts/apercu_medium_italic_pro-web.woff +0 -0
  91. package/assets/fonts/apercu_medium_italic_pro-web.woff2 +0 -0
  92. package/assets/fonts/apercu_medium_italic_pro.otf +0 -0
  93. package/assets/fonts/apercu_medium_pro-web.eot +0 -0
  94. package/assets/fonts/apercu_medium_pro-web.svg +12254 -0
  95. package/assets/fonts/apercu_medium_pro-web.ttf +0 -0
  96. package/assets/fonts/apercu_medium_pro-web.woff +0 -0
  97. package/assets/fonts/apercu_medium_pro-web.woff2 +0 -0
  98. package/assets/fonts/apercu_medium_pro.otf +0 -0
  99. package/assets/fonts/apercu_mono_pro-web.eot +0 -0
  100. package/assets/fonts/apercu_mono_pro-web.svg +538 -0
  101. package/assets/fonts/apercu_mono_pro-web.ttf +0 -0
  102. package/assets/fonts/apercu_mono_pro-web.woff +0 -0
  103. package/assets/fonts/apercu_mono_pro-web.woff2 +0 -0
  104. package/assets/fonts/apercu_regular_italic_pro-web.eot +0 -0
  105. package/assets/fonts/apercu_regular_italic_pro-web.svg +13059 -0
  106. package/assets/fonts/apercu_regular_italic_pro-web.ttf +0 -0
  107. package/assets/fonts/apercu_regular_italic_pro-web.woff +0 -0
  108. package/assets/fonts/apercu_regular_italic_pro-web.woff2 +0 -0
  109. package/assets/fonts/apercu_regular_italic_pro.otf +0 -0
  110. package/assets/fonts/apercu_regular_pro-web.eot +0 -0
  111. package/assets/fonts/apercu_regular_pro-web.svg +11356 -0
  112. package/assets/fonts/apercu_regular_pro-web.ttf +0 -0
  113. package/assets/fonts/apercu_regular_pro-web.woff +0 -0
  114. package/assets/fonts/apercu_regular_pro-web.woff2 +0 -0
  115. package/assets/fonts/apercu_regular_pro.otf +0 -0
  116. package/assets/icons/flags/ar.svg +20 -0
  117. package/assets/icons/flags/br.svg +30 -0
  118. package/assets/icons/flags/ca.svg +18 -0
  119. package/assets/icons/flags/de.svg +20 -0
  120. package/assets/icons/flags/dk.svg +20 -0
  121. package/assets/icons/flags/en.svg +20 -0
  122. package/assets/icons/flags/es.svg +20 -0
  123. package/assets/icons/flags/fi.svg +20 -0
  124. package/assets/icons/flags/fr.svg +20 -0
  125. package/assets/icons/flags/ie.svg +22 -0
  126. package/assets/icons/flags/it.svg +20 -0
  127. package/assets/icons/flags/nl.svg +20 -0
  128. package/assets/icons/flags/no.svg +20 -0
  129. package/assets/icons/flags/pl.svg +20 -0
  130. package/assets/icons/flags/se.svg +20 -0
  131. package/assets/icons/flags/uk.svg +20 -0
  132. package/assets/icons/flags/us.svg +20 -0
  133. package/assets/icons/icon-add--light.svg +11 -0
  134. package/assets/icons/icon-add.svg +7 -0
  135. package/assets/icons/icon-arrow-left--light.svg +7 -0
  136. package/assets/icons/icon-arrow-left.svg +7 -0
  137. package/assets/icons/icon-arrow-right--light.svg +7 -0
  138. package/assets/icons/icon-arrow-right.svg +6 -0
  139. package/assets/icons/icon-check.svg +7 -0
  140. package/assets/icons/icon-chevron-down.svg +1 -0
  141. package/assets/icons/icon-chevron-left--light.svg +1 -0
  142. package/assets/icons/icon-chevron-left-outlined.svg +4 -0
  143. package/assets/icons/icon-chevron-left.svg +1 -0
  144. package/assets/icons/icon-chevron-right--light.svg +1 -0
  145. package/assets/icons/icon-chevron-right-outlined.svg +4 -0
  146. package/assets/icons/icon-chevron-right.svg +1 -0
  147. package/assets/icons/icon-dropdown-arrow--disabled.svg +8 -0
  148. package/assets/icons/icon-dropdown-arrow--light.svg +8 -0
  149. package/assets/icons/icon-dropdown-arrow.svg +8 -0
  150. package/assets/icons/icon-error.svg +11 -0
  151. package/assets/icons/icon-flight-direct.svg +8 -0
  152. package/assets/icons/icon-flight-one-stop.svg +8 -0
  153. package/assets/icons/icon-flight-two-stops.svg +9 -0
  154. package/assets/icons/icon-geolocation--disabled.svg +8 -0
  155. package/assets/icons/icon-geolocation--light.svg +8 -0
  156. package/assets/icons/icon-geolocation.svg +8 -0
  157. package/assets/icons/icon-goto.svg +8 -0
  158. package/assets/icons/icon-home.svg +1 -0
  159. package/assets/icons/icon-marker.svg +8 -0
  160. package/assets/icons/icon-menu--dark.svg +9 -0
  161. package/assets/icons/icon-menu.svg +9 -0
  162. package/assets/icons/icon-nav_right--large.svg +7 -0
  163. package/assets/icons/icon-nav_right--small.svg +7 -0
  164. package/assets/icons/icon-nav_right.svg +7 -0
  165. package/assets/icons/icon-negative.svg +11 -0
  166. package/assets/icons/icon-ol_li.svg +7 -0
  167. package/assets/icons/icon-one-stop-arrow.svg +8 -0
  168. package/assets/icons/icon-passenger--children.svg +1 -0
  169. package/assets/icons/icon-passenger--female.svg +1 -0
  170. package/assets/icons/icon-passenger--infant.svg +1 -0
  171. package/assets/icons/icon-passenger--male.svg +1 -0
  172. package/assets/icons/icon-positive.svg +10 -0
  173. package/assets/icons/icon-red-circle.svg +7 -0
  174. package/assets/icons/icon-remove.svg +8 -0
  175. package/assets/icons/icon-share_facebook.svg +10 -0
  176. package/assets/icons/icon-share_instagram.svg +12 -0
  177. package/assets/icons/icon-share_twitter.svg +13 -0
  178. package/assets/icons/icon-share_youtube.svg +11 -0
  179. package/assets/icons/icon-star.svg +9 -0
  180. package/assets/icons/icon-subtract--light.svg +12 -0
  181. package/assets/icons/icon-subtract.svg +9 -0
  182. package/assets/icons/icon-switch--secondary.svg +1 -0
  183. package/assets/icons/icon-switch.svg +1 -0
  184. package/assets/icons/icon-two-stops-arrow.svg +10 -0
  185. package/assets/icons/large/baggage-hand-baggage.svg +41 -0
  186. package/assets/icons/large/baggage.svg +75 -0
  187. package/assets/icons/large/car-rentals.svg +61 -0
  188. package/assets/icons/large/cashpoints.svg +92 -0
  189. package/assets/icons/large/celebration.svg +77 -0
  190. package/assets/icons/large/central-airports.svg +44 -0
  191. package/assets/icons/large/customer-service.svg +47 -0
  192. package/assets/icons/large/destinations.svg +78 -0
  193. package/assets/icons/large/direct-flights.svg +73 -0
  194. package/assets/icons/large/entertainment.svg +89 -0
  195. package/assets/icons/large/family.svg +88 -0
  196. package/assets/icons/large/fast-track.svg +57 -0
  197. package/assets/icons/large/food.svg +48 -0
  198. package/assets/icons/large/from-a-to-b.svg +66 -0
  199. package/assets/icons/large/hotels.svg +84 -0
  200. package/assets/icons/large/lounge.svg +67 -0
  201. package/assets/icons/large/new-aircrafts.svg +60 -0
  202. package/assets/icons/large/personnel.svg +54 -0
  203. package/assets/icons/large/premium.svg +49 -0
  204. package/assets/icons/large/wifi.svg +112 -0
  205. package/assets/icons/list--journey.svg +207 -0
  206. package/assets/icons/medium/accommodation--light.svg +16 -0
  207. package/assets/icons/medium/accommodation.svg +15 -0
  208. package/assets/icons/medium/alert--error.svg +11 -0
  209. package/assets/icons/medium/alert--light.svg +10 -0
  210. package/assets/icons/medium/alert--success.svg +9 -0
  211. package/assets/icons/medium/alert.svg +11 -0
  212. package/assets/icons/medium/arrow-down--light.svg +11 -0
  213. package/assets/icons/medium/arrow-down.svg +11 -0
  214. package/assets/icons/medium/arrow-left--light.svg +11 -0
  215. package/assets/icons/medium/arrow-left.svg +11 -0
  216. package/assets/icons/medium/arrow-right--light.svg +11 -0
  217. package/assets/icons/medium/arrow-right.svg +11 -0
  218. package/assets/icons/medium/arrow-up--light.svg +11 -0
  219. package/assets/icons/medium/arrow-up.svg +11 -0
  220. package/assets/icons/medium/baggage--light.svg +10 -0
  221. package/assets/icons/medium/baggage-checked-in--light.svg +19 -0
  222. package/assets/icons/medium/baggage-checked-in.svg +20 -0
  223. package/assets/icons/medium/baggage-hand-baggage--light.svg +32 -0
  224. package/assets/icons/medium/baggage-hand-baggage.svg +36 -0
  225. package/assets/icons/medium/baggage-special-baggage--light.svg +21 -0
  226. package/assets/icons/medium/baggage-special-baggage.svg +23 -0
  227. package/assets/icons/medium/baggage-sports-equipment--light.svg +18 -0
  228. package/assets/icons/medium/baggage-sports-equipment.svg +21 -0
  229. package/assets/icons/medium/baggage.svg +11 -0
  230. package/assets/icons/medium/baggages--light.svg +1 -0
  231. package/assets/icons/medium/baggages.svg +1 -0
  232. package/assets/icons/medium/car-rental--light.svg +26 -0
  233. package/assets/icons/medium/car-rental.svg +26 -0
  234. package/assets/icons/medium/card--light.svg +18 -0
  235. package/assets/icons/medium/card.svg +18 -0
  236. package/assets/icons/medium/cashpoints--light.svg +29 -0
  237. package/assets/icons/medium/cashpoints.svg +31 -0
  238. package/assets/icons/medium/central-airports--light.svg +25 -0
  239. package/assets/icons/medium/central-airports.svg +25 -0
  240. package/assets/icons/medium/customer-service--light.svg +19 -0
  241. package/assets/icons/medium/customer-service.svg +22 -0
  242. package/assets/icons/medium/direct-flights--light.svg +24 -0
  243. package/assets/icons/medium/direct-flights.svg +25 -0
  244. package/assets/icons/medium/direct-to-gate--light.svg +18 -0
  245. package/assets/icons/medium/direct-to-gate.svg +18 -0
  246. package/assets/icons/medium/docs--light.svg +10 -0
  247. package/assets/icons/medium/docs.svg +10 -0
  248. package/assets/icons/medium/entertainment--light.svg +71 -0
  249. package/assets/icons/medium/entertainment.svg +81 -0
  250. package/assets/icons/medium/facebook.svg +12 -0
  251. package/assets/icons/medium/family.svg +29 -0
  252. package/assets/icons/medium/fast-track--light.svg +19 -0
  253. package/assets/icons/medium/fast-track.svg +23 -0
  254. package/assets/icons/medium/flexible-tickets--light.svg +16 -0
  255. package/assets/icons/medium/flexible-tickets.svg +18 -0
  256. package/assets/icons/medium/flight-arrival--light.svg +16 -0
  257. package/assets/icons/medium/flight-arrival.svg +15 -0
  258. package/assets/icons/medium/flight-departure--light.svg +12 -0
  259. package/assets/icons/medium/flight-departure.svg +12 -0
  260. package/assets/icons/medium/flight-oneway--light.svg +12 -0
  261. package/assets/icons/medium/flight-oneway.svg +13 -0
  262. package/assets/icons/medium/flight-outbound--light.svg +11 -0
  263. package/assets/icons/medium/flight-outbound.svg +11 -0
  264. package/assets/icons/medium/flight-return--light.svg +11 -0
  265. package/assets/icons/medium/flight-return-trip.svg +13 -0
  266. package/assets/icons/medium/flight-return.svg +11 -0
  267. package/assets/icons/medium/flight-tickets--light.svg +22 -0
  268. package/assets/icons/medium/flight-tickets.svg +21 -0
  269. package/assets/icons/medium/food--light.svg +16 -0
  270. package/assets/icons/medium/food.svg +19 -0
  271. package/assets/icons/medium/frequent-departures--light.svg +16 -0
  272. package/assets/icons/medium/frequent-departures.svg +16 -0
  273. package/assets/icons/medium/from-a-to-b--light.svg +17 -0
  274. package/assets/icons/medium/from-a-to-b.svg +17 -0
  275. package/assets/icons/medium/in-flight-entertainment--light.svg +20 -0
  276. package/assets/icons/medium/in-flight-entertainment.svg +21 -0
  277. package/assets/icons/medium/instagram.svg +14 -0
  278. package/assets/icons/medium/linkedin.svg +17 -0
  279. package/assets/icons/medium/lounge--light.svg +19 -0
  280. package/assets/icons/medium/lounge.svg +21 -0
  281. package/assets/icons/medium/mobile--light.svg +10 -0
  282. package/assets/icons/medium/mobile.svg +9 -0
  283. package/assets/icons/medium/my-profile-female.svg +55 -0
  284. package/assets/icons/medium/my-profile-male.svg +48 -0
  285. package/assets/icons/medium/new-airplanes--light.svg +14 -0
  286. package/assets/icons/medium/new-airplanes.svg +14 -0
  287. package/assets/icons/medium/personnel--light.svg +19 -0
  288. package/assets/icons/medium/personnel.svg +27 -0
  289. package/assets/icons/medium/phone--light.svg +15 -0
  290. package/assets/icons/medium/phone.svg +15 -0
  291. package/assets/icons/medium/premium--light.svg +23 -0
  292. package/assets/icons/medium/premium.svg +23 -0
  293. package/assets/icons/medium/print--light.svg +14 -0
  294. package/assets/icons/medium/printer.svg +14 -0
  295. package/assets/icons/medium/relax--light.svg +27 -0
  296. package/assets/icons/medium/relax.svg +28 -0
  297. package/assets/icons/medium/rewards--light.svg +19 -0
  298. package/assets/icons/medium/rewards-fast-track.svg +17 -0
  299. package/assets/icons/medium/rewards-luggage.svg +22 -0
  300. package/assets/icons/medium/rewards-seat.svg +21 -0
  301. package/assets/icons/medium/rewards.svg +19 -0
  302. package/assets/icons/medium/route-network--light.svg +28 -0
  303. package/assets/icons/medium/route-network.svg +28 -0
  304. package/assets/icons/medium/seat-reservation--light.svg +16 -0
  305. package/assets/icons/medium/seat-reservation.svg +16 -0
  306. package/assets/icons/medium/special-needs--light.svg +15 -0
  307. package/assets/icons/medium/special-needs.svg +15 -0
  308. package/assets/icons/medium/transit-stop--light.svg +30 -0
  309. package/assets/icons/medium/transit-stop.svg +33 -0
  310. package/assets/icons/medium/trash--light.svg +7 -0
  311. package/assets/icons/medium/trash.svg +7 -0
  312. package/assets/icons/medium/travel-deals--light.svg +24 -0
  313. package/assets/icons/medium/travel-deals.svg +24 -0
  314. package/assets/icons/medium/twitter.svg +17 -0
  315. package/assets/icons/medium/type-asia--light.svg +19 -0
  316. package/assets/icons/medium/type-asia.svg +19 -0
  317. package/assets/icons/medium/type-city-vibes--light.svg +14 -0
  318. package/assets/icons/medium/type-city-vibes.svg +14 -0
  319. package/assets/icons/medium/type-greece--light.svg +24 -0
  320. package/assets/icons/medium/type-greece.svg +28 -0
  321. package/assets/icons/medium/type-norway--light.svg +18 -0
  322. package/assets/icons/medium/type-norway.svg +18 -0
  323. package/assets/icons/medium/type-scandinavia--light.svg +32 -0
  324. package/assets/icons/medium/type-scandinavia.svg +32 -0
  325. package/assets/icons/medium/type-shopping--light.svg +20 -0
  326. package/assets/icons/medium/type-shopping.svg +20 -0
  327. package/assets/icons/medium/type-skiing--light.svg +32 -0
  328. package/assets/icons/medium/type-skiing.svg +32 -0
  329. package/assets/icons/medium/type-spain--light.svg +12 -0
  330. package/assets/icons/medium/type-spain.svg +12 -0
  331. package/assets/icons/medium/type-sun-and-sea--light.svg +34 -0
  332. package/assets/icons/medium/type-sun-and-sea.svg +34 -0
  333. package/assets/icons/medium/type-usa--light.svg +46 -0
  334. package/assets/icons/medium/type-usa.svg +46 -0
  335. package/assets/icons/medium/wifi--light.svg +15 -0
  336. package/assets/icons/medium/wifi.svg +15 -0
  337. package/assets/icons/medium/youtube.svg +12 -0
  338. package/assets/icons/mobile-landscape.svg +12 -0
  339. package/assets/icons/mobile-portrait.svg +12 -0
  340. package/assets/icons/small/accommodation--light.svg +15 -0
  341. package/assets/icons/small/accommodation.svg +21 -0
  342. package/assets/icons/small/alert--error.svg +7 -0
  343. package/assets/icons/small/alert--light.svg +10 -0
  344. package/assets/icons/small/alert.svg +10 -0
  345. package/assets/icons/small/arrow-down--light.svg +11 -0
  346. package/assets/icons/small/arrow-down.svg +11 -0
  347. package/assets/icons/small/arrow-left--light.svg +10 -0
  348. package/assets/icons/small/arrow-left.svg +10 -0
  349. package/assets/icons/small/arrow-right--light.svg +11 -0
  350. package/assets/icons/small/arrow-right.svg +11 -0
  351. package/assets/icons/small/arrow-up--light.svg +10 -0
  352. package/assets/icons/small/arrow-up.svg +10 -0
  353. package/assets/icons/small/baggage--light.svg +8 -0
  354. package/assets/icons/small/baggage-checked-in--light.svg +16 -0
  355. package/assets/icons/small/baggage-checked-in.svg +16 -0
  356. package/assets/icons/small/baggage-hand-baggage--light.svg +11 -0
  357. package/assets/icons/small/baggage-hand-baggage.svg +11 -0
  358. package/assets/icons/small/baggage-special-baggage--light.svg +20 -0
  359. package/assets/icons/small/baggage-special-baggage.svg +20 -0
  360. package/assets/icons/small/baggage-sports-equipment--light.svg +25 -0
  361. package/assets/icons/small/baggage-sports-equipment.svg +25 -0
  362. package/assets/icons/small/baggage.svg +10 -0
  363. package/assets/icons/small/baggages--light.svg +1 -0
  364. package/assets/icons/small/baggages.svg +1 -0
  365. package/assets/icons/small/calendar--disabled.svg +14 -0
  366. package/assets/icons/small/calendar--light.svg +14 -0
  367. package/assets/icons/small/calendar.svg +14 -0
  368. package/assets/icons/small/car-rental--light.svg +14 -0
  369. package/assets/icons/small/car-rental.svg +14 -0
  370. package/assets/icons/small/card--light.svg +8 -0
  371. package/assets/icons/small/card.svg +8 -0
  372. package/assets/icons/small/cashpoints--light.svg +21 -0
  373. package/assets/icons/small/cashpoints.svg +21 -0
  374. package/assets/icons/small/central-airports--light.svg +10 -0
  375. package/assets/icons/small/central-airports.svg +10 -0
  376. package/assets/icons/small/check-in--light.svg +11 -0
  377. package/assets/icons/small/check-in.svg +11 -0
  378. package/assets/icons/small/customer-service--light.svg +18 -0
  379. package/assets/icons/small/customer-service.svg +18 -0
  380. package/assets/icons/small/destination--light.svg +9 -0
  381. package/assets/icons/small/destination.svg +9 -0
  382. package/assets/icons/small/direct-flights--light.svg +16 -0
  383. package/assets/icons/small/direct-flights.svg +16 -0
  384. package/assets/icons/small/docs--light.svg +10 -0
  385. package/assets/icons/small/docs.svg +10 -0
  386. package/assets/icons/small/duty-free.svg +24 -0
  387. package/assets/icons/small/email.svg +1 -0
  388. package/assets/icons/small/facebook.svg +12 -0
  389. package/assets/icons/small/family.svg +24 -0
  390. package/assets/icons/small/fast-track--light.svg +15 -0
  391. package/assets/icons/small/fast-track.svg +15 -0
  392. package/assets/icons/small/flexible-tickets--light.svg +12 -0
  393. package/assets/icons/small/flexible-tickets.svg +12 -0
  394. package/assets/icons/small/flight-arrival--light.svg +13 -0
  395. package/assets/icons/small/flight-arrival.svg +16 -0
  396. package/assets/icons/small/flight-departure--light.svg +18 -0
  397. package/assets/icons/small/flight-departure-ground.svg +22 -0
  398. package/assets/icons/small/flight-departure-left.svg +18 -0
  399. package/assets/icons/small/flight-departure.svg +18 -0
  400. package/assets/icons/small/flight-outbound--light.svg +14 -0
  401. package/assets/icons/small/flight-outbound.svg +14 -0
  402. package/assets/icons/small/flight-return--light.svg +14 -0
  403. package/assets/icons/small/flight-return.svg +14 -0
  404. package/assets/icons/small/flight-tickets--light.svg +17 -0
  405. package/assets/icons/small/flight-tickets.svg +17 -0
  406. package/assets/icons/small/food--light.svg +15 -0
  407. package/assets/icons/small/food.svg +15 -0
  408. package/assets/icons/small/from-a-to-b--light.svg +21 -0
  409. package/assets/icons/small/from-a-to-b.svg +23 -0
  410. package/assets/icons/small/google-plus.svg +1 -0
  411. package/assets/icons/small/hotel--light.svg +10 -0
  412. package/assets/icons/small/hotel.svg +11 -0
  413. package/assets/icons/small/in-flight-entertainment--light.svg +10 -0
  414. package/assets/icons/small/in-flight-entertainment.svg +10 -0
  415. package/assets/icons/small/info--light.svg +4 -0
  416. package/assets/icons/small/info--outlined.svg +4 -0
  417. package/assets/icons/small/info.svg +4 -0
  418. package/assets/icons/small/instagram.svg +14 -0
  419. package/assets/icons/small/linkedin.svg +18 -0
  420. package/assets/icons/small/lounge--light.svg +18 -0
  421. package/assets/icons/small/lounge.svg +18 -0
  422. package/assets/icons/small/mail--light.svg +9 -0
  423. package/assets/icons/small/mail.svg +9 -0
  424. package/assets/icons/small/mobile--light.svg +8 -0
  425. package/assets/icons/small/mobile.svg +8 -0
  426. package/assets/icons/small/my-profile--light.svg +14 -0
  427. package/assets/icons/small/my-profile-female--light.svg +49 -0
  428. package/assets/icons/small/my-profile-female.svg +48 -0
  429. package/assets/icons/small/my-profile-male--light.svg +49 -0
  430. package/assets/icons/small/my-profile-male.svg +50 -0
  431. package/assets/icons/small/my-profile.svg +14 -0
  432. package/assets/icons/small/new-airplanes--light.svg +14 -0
  433. package/assets/icons/small/new-airplanes.svg +14 -0
  434. package/assets/icons/small/personnel--light.svg +14 -0
  435. package/assets/icons/small/personnel.svg +14 -0
  436. package/assets/icons/small/pintrest.svg +1 -0
  437. package/assets/icons/small/premium--light.svg +17 -0
  438. package/assets/icons/small/premium.svg +17 -0
  439. package/assets/icons/small/print.svg +14 -0
  440. package/assets/icons/small/reddit.svg +1 -0
  441. package/assets/icons/small/rewards--light.svg +19 -0
  442. package/assets/icons/small/rewards-fast-track.svg +17 -0
  443. package/assets/icons/small/rewards-luggage.svg +22 -0
  444. package/assets/icons/small/rewards-seat.svg +22 -0
  445. package/assets/icons/small/rewards.svg +19 -0
  446. package/assets/icons/small/route-network--light.svg +25 -0
  447. package/assets/icons/small/route-network.svg +25 -0
  448. package/assets/icons/small/search--light.svg +16 -0
  449. package/assets/icons/small/search.svg +16 -0
  450. package/assets/icons/small/seat-reservation--light.svg +14 -0
  451. package/assets/icons/small/seat-reservation.svg +14 -0
  452. package/assets/icons/small/skis--light.svg +24 -0
  453. package/assets/icons/small/skis.svg +24 -0
  454. package/assets/icons/small/special-needs--light.svg +16 -0
  455. package/assets/icons/small/special-needs.svg +16 -0
  456. package/assets/icons/small/sun--light.svg +17 -0
  457. package/assets/icons/small/sun.svg +19 -0
  458. package/assets/icons/small/transit-stop--light.svg +19 -0
  459. package/assets/icons/small/transit-stop.svg +21 -0
  460. package/assets/icons/small/trash--light.svg +7 -0
  461. package/assets/icons/small/trash.svg +7 -0
  462. package/assets/icons/small/travel-deals--light.svg +9 -0
  463. package/assets/icons/small/travel-deals.svg +9 -0
  464. package/assets/icons/small/twitter.svg +17 -0
  465. package/assets/icons/small/type-asia--light.svg +20 -0
  466. package/assets/icons/small/type-asia.svg +20 -0
  467. package/assets/icons/small/type-city-vibes--light.svg +10 -0
  468. package/assets/icons/small/type-city-vibes.svg +10 -0
  469. package/assets/icons/small/type-greece--light.svg +22 -0
  470. package/assets/icons/small/type-greece.svg +22 -0
  471. package/assets/icons/small/type-norway--light.svg +15 -0
  472. package/assets/icons/small/type-norway.svg +15 -0
  473. package/assets/icons/small/type-scandinavia--light.svg +17 -0
  474. package/assets/icons/small/type-scandinavia.svg +35 -0
  475. package/assets/icons/small/type-shopping--light.svg +13 -0
  476. package/assets/icons/small/type-shopping.svg +13 -0
  477. package/assets/icons/small/type-skiing--light.svg +18 -0
  478. package/assets/icons/small/type-skiing.svg +18 -0
  479. package/assets/icons/small/type-spain--light.svg +12 -0
  480. package/assets/icons/small/type-spain.svg +12 -0
  481. package/assets/icons/small/type-sun-and-sea--light.svg +59 -0
  482. package/assets/icons/small/type-sun-and-sea.svg +59 -0
  483. package/assets/icons/small/type-usa--light.svg +24 -0
  484. package/assets/icons/small/type-usa.svg +24 -0
  485. package/assets/icons/small/wifi--light.svg +17 -0
  486. package/assets/icons/small/wifi.svg +17 -0
  487. package/assets/icons/small/youtube.svg +11 -0
  488. package/assets/icons/tablet-landscape.svg +12 -0
  489. package/assets/icons/tablet-portrait.svg +12 -0
  490. package/assets/icons/upgrade.svg +8 -0
  491. package/assets/icons/weather/humidity.svg +1 -0
  492. package/assets/icons/weather/sun.svg +1 -0
  493. package/assets/icons/weather/sunrise.svg +1 -0
  494. package/assets/icons/weather/sunset.svg +1 -0
  495. package/assets/icons/weather/temperature.svg +1 -0
  496. package/assets/icons/weather/weather--cloud.svg +1 -0
  497. package/assets/icons/weather/weather--rain-sun.svg +1 -0
  498. package/assets/icons/weather/weather--rain.svg +1 -0
  499. package/assets/icons/weather/weather--storm.svg +1 -0
  500. package/assets/icons/weather/weather--sun-cloud.svg +1 -0
  501. package/assets/icons/weather/weather--sun.svg +1 -0
  502. package/assets/images/cloud-1.svg +1 -0
  503. package/assets/images/logo--mobile.svg +50 -0
  504. package/assets/images/logo.svg +135 -0
  505. package/assets/images/slider-bar.svg +7 -0
  506. package/assets/images/slider-thumb-disabled.svg +19 -0
  507. package/assets/images/slider-thumb.svg +14 -0
  508. package/bundles/norwegian-core-components.umd.js +11898 -0
  509. package/bundles/norwegian-core-components.umd.js.map +1 -0
  510. package/esm2015/lib/components/accordion/accordion.component.js +118 -0
  511. package/esm2015/lib/components/accordion/accordion.module.js +15 -0
  512. package/esm2015/lib/components/accordion/index.js +3 -0
  513. package/esm2015/lib/components/airport-select/airport-select-dropdown/airport-select-dropdown.component.js +583 -0
  514. package/esm2015/lib/components/airport-select/airport-select.component.js +400 -0
  515. package/esm2015/lib/components/airport-select/airport-select.module.js +27 -0
  516. package/esm2015/lib/components/airport-select/index.js +4 -0
  517. package/esm2015/lib/components/airport-select/models/airport.model.js +2 -0
  518. package/esm2015/lib/components/airport-select/models/results-labels.model.js +3 -0
  519. package/esm2015/lib/components/airport-select/services/airport-select-dropdown.service.js +34 -0
  520. package/esm2015/lib/components/airport-select/services/airport-select.service.js +29 -0
  521. package/esm2015/lib/components/autocomplete/autocomplete.component.js +265 -0
  522. package/esm2015/lib/components/autocomplete/autocomplete.module.js +26 -0
  523. package/esm2015/lib/components/autocomplete/index.js +4 -0
  524. package/esm2015/lib/components/autocomplete/models/autocomplete.model.js +2 -0
  525. package/esm2015/lib/components/backdrop/backdrop.component.js +54 -0
  526. package/esm2015/lib/components/backdrop/backdrop.module.js +17 -0
  527. package/esm2015/lib/components/backdrop/index.js +3 -0
  528. package/esm2015/lib/components/box/box.component.js +61 -0
  529. package/esm2015/lib/components/box/box.module.js +14 -0
  530. package/esm2015/lib/components/box/index.js +3 -0
  531. package/esm2015/lib/components/button/button.component.js +140 -0
  532. package/esm2015/lib/components/button/button.module.js +15 -0
  533. package/esm2015/lib/components/button/index.js +3 -0
  534. package/esm2015/lib/components/checkbox/checkbox.component.js +125 -0
  535. package/esm2015/lib/components/checkbox/checkbox.module.js +15 -0
  536. package/esm2015/lib/components/checkbox/index.js +3 -0
  537. package/esm2015/lib/components/chip/chip.component.js +50 -0
  538. package/esm2015/lib/components/chip/chip.module.js +17 -0
  539. package/esm2015/lib/components/chip/index.js +3 -0
  540. package/esm2015/lib/components/container/container.component.js +47 -0
  541. package/esm2015/lib/components/container/container.module.js +14 -0
  542. package/esm2015/lib/components/container/index.js +3 -0
  543. package/esm2015/lib/components/continue/continue.component.js +173 -0
  544. package/esm2015/lib/components/continue/continue.module.js +23 -0
  545. package/esm2015/lib/components/continue/index.js +3 -0
  546. package/esm2015/lib/components/cover/cover.component.js +61 -0
  547. package/esm2015/lib/components/cover/cover.module.js +16 -0
  548. package/esm2015/lib/components/cover/index.js +3 -0
  549. package/esm2015/lib/components/datepicker/calendar/calendar-date.model.js +2 -0
  550. package/esm2015/lib/components/datepicker/calendar/calendar.component.js +560 -0
  551. package/esm2015/lib/components/datepicker/calendar/enums/week-start.enum.js +6 -0
  552. package/esm2015/lib/components/datepicker/calendar/models/day.model.js +2 -0
  553. package/esm2015/lib/components/datepicker/calendar/models/select-option.model.js +2 -0
  554. package/esm2015/lib/components/datepicker/calendar/models/week.model.js +2 -0
  555. package/esm2015/lib/components/datepicker/datepicker.component.js +511 -0
  556. package/esm2015/lib/components/datepicker/datepicker.module.js +34 -0
  557. package/esm2015/lib/components/datepicker/index.js +5 -0
  558. package/esm2015/lib/components/datepicker/services/calendar.service.js +217 -0
  559. package/esm2015/lib/components/datepicker-combo/datepicker-combo.component.js +306 -0
  560. package/esm2015/lib/components/datepicker-combo/datepicker-combo.module.js +22 -0
  561. package/esm2015/lib/components/datepicker-combo/index.js +3 -0
  562. package/esm2015/lib/components/dropdown/dropdown.component.js +146 -0
  563. package/esm2015/lib/components/dropdown/dropdown.module.js +21 -0
  564. package/esm2015/lib/components/dropdown/index.js +3 -0
  565. package/esm2015/lib/components/filter/enums/trip-type.enum.js +8 -0
  566. package/esm2015/lib/components/filter/filter.component.js +1100 -0
  567. package/esm2015/lib/components/filter/filter.module.js +44 -0
  568. package/esm2015/lib/components/filter/index.js +4 -0
  569. package/esm2015/lib/components/grid/col/col.component.js +47 -0
  570. package/esm2015/lib/components/grid/grid.component.js +55 -0
  571. package/esm2015/lib/components/grid/grid.module.js +15 -0
  572. package/esm2015/lib/components/grid/index.js +4 -0
  573. package/esm2015/lib/components/icon/icon.component.js +42 -0
  574. package/esm2015/lib/components/icon/icon.module.js +17 -0
  575. package/esm2015/lib/components/icon/index.js +3 -0
  576. package/esm2015/lib/components/icon-list/icon-list.component.js +46 -0
  577. package/esm2015/lib/components/icon-list/icon-list.model.js +2 -0
  578. package/esm2015/lib/components/icon-list/icon-list.module.js +15 -0
  579. package/esm2015/lib/components/icon-list/index.js +4 -0
  580. package/esm2015/lib/components/index.js +49 -0
  581. package/esm2015/lib/components/info/index.js +4 -0
  582. package/esm2015/lib/components/info/info.component.js +81 -0
  583. package/esm2015/lib/components/info/info.module.js +21 -0
  584. package/esm2015/lib/components/info/models/info.model.js +2 -0
  585. package/esm2015/lib/components/input/index.js +3 -0
  586. package/esm2015/lib/components/input/input.component.js +139 -0
  587. package/esm2015/lib/components/input/input.module.js +16 -0
  588. package/esm2015/lib/components/journey/index.js +3 -0
  589. package/esm2015/lib/components/journey/journey.component.js +122 -0
  590. package/esm2015/lib/components/journey/journey.module.js +19 -0
  591. package/esm2015/lib/components/journey/models/journey-flight.model.js +2 -0
  592. package/esm2015/lib/components/journey/models/journey.model.js +2 -0
  593. package/esm2015/lib/components/journey-availability/index.js +3 -0
  594. package/esm2015/lib/components/journey-availability/journey-availability.component.js +125 -0
  595. package/esm2015/lib/components/journey-availability/journey-availability.module.js +26 -0
  596. package/esm2015/lib/components/journey-availability-list/enums/availability-sort-option.enum.js +7 -0
  597. package/esm2015/lib/components/journey-availability-list/index.js +3 -0
  598. package/esm2015/lib/components/journey-availability-list/journey-availability-list.component.js +175 -0
  599. package/esm2015/lib/components/journey-availability-list/journey-availability-list.module.js +23 -0
  600. package/esm2015/lib/components/journey-selection/index.js +6 -0
  601. package/esm2015/lib/components/journey-selection/journey-selection.component.js +110 -0
  602. package/esm2015/lib/components/journey-selection/journey-selection.module.js +24 -0
  603. package/esm2015/lib/components/journey-selection/models/journey-selection-collapsed.model.js +2 -0
  604. package/esm2015/lib/components/journey-selection/models/journey-selection-common.model.js +2 -0
  605. package/esm2015/lib/components/journey-selection/models/journey-selection-expanded.model.js +2 -0
  606. package/esm2015/lib/components/journey-selection/models/journey-selection.model.js +2 -0
  607. package/esm2015/lib/components/journey-stopover/index.js +3 -0
  608. package/esm2015/lib/components/journey-stopover/journey-stopover.component.js +121 -0
  609. package/esm2015/lib/components/journey-stopover/journey-stopover.module.js +19 -0
  610. package/esm2015/lib/components/journey-stopover/models/stopover-time.model.js +2 -0
  611. package/esm2015/lib/components/list/index.js +4 -0
  612. package/esm2015/lib/components/list/list-item/list-item.component.js +56 -0
  613. package/esm2015/lib/components/list/list.component.js +75 -0
  614. package/esm2015/lib/components/list/list.module.js +15 -0
  615. package/esm2015/lib/components/modal/index.js +3 -0
  616. package/esm2015/lib/components/modal/modal.component.js +131 -0
  617. package/esm2015/lib/components/modal/modal.module.js +25 -0
  618. package/esm2015/lib/components/number-field/index.js +3 -0
  619. package/esm2015/lib/components/number-field/number-field.component.js +118 -0
  620. package/esm2015/lib/components/number-field/number-field.module.js +24 -0
  621. package/esm2015/lib/components/page-footer/index.js +3 -0
  622. package/esm2015/lib/components/page-footer/page-footer.component.js +49 -0
  623. package/esm2015/lib/components/page-footer/page-footer.module.js +16 -0
  624. package/esm2015/lib/components/page-header/hamburger/hamburger.component.js +24 -0
  625. package/esm2015/lib/components/page-header/index.js +5 -0
  626. package/esm2015/lib/components/page-header/page-header.component.js +119 -0
  627. package/esm2015/lib/components/page-header/page-header.module.js +18 -0
  628. package/esm2015/lib/components/page-header/search/search.component.js +47 -0
  629. package/esm2015/lib/components/passenger-select/enums/passenger-type.enum.js +7 -0
  630. package/esm2015/lib/components/passenger-select/index.js +5 -0
  631. package/esm2015/lib/components/passenger-select/models/passengers.model.js +2 -0
  632. package/esm2015/lib/components/passenger-select/passenger-select.component.js +204 -0
  633. package/esm2015/lib/components/passenger-select/passenger-select.module.js +19 -0
  634. package/esm2015/lib/components/phone-number/index.js +3 -0
  635. package/esm2015/lib/components/phone-number/phone-number.component.js +115 -0
  636. package/esm2015/lib/components/phone-number/phone-number.module.js +27 -0
  637. package/esm2015/lib/components/premium-toggle/index.js +3 -0
  638. package/esm2015/lib/components/premium-toggle/premium-toggle.component.js +66 -0
  639. package/esm2015/lib/components/premium-toggle/premium-toggle.module.js +19 -0
  640. package/esm2015/lib/components/radio/index.js +3 -0
  641. package/esm2015/lib/components/radio/radio.component.js +79 -0
  642. package/esm2015/lib/components/radio/radio.module.js +15 -0
  643. package/esm2015/lib/components/select/index.js +6 -0
  644. package/esm2015/lib/components/select/models/select-option.model.js +2 -0
  645. package/esm2015/lib/components/select/optgroup/optgroup.component.js +31 -0
  646. package/esm2015/lib/components/select/option/option.component.js +29 -0
  647. package/esm2015/lib/components/select/select.component.js +316 -0
  648. package/esm2015/lib/components/select/select.module.js +21 -0
  649. package/esm2015/lib/components/simple-list/index.js +3 -0
  650. package/esm2015/lib/components/simple-list/simple-list.component.js +42 -0
  651. package/esm2015/lib/components/simple-list/simple-list.module.js +14 -0
  652. package/esm2015/lib/components/slide-toggle/index.js +3 -0
  653. package/esm2015/lib/components/slide-toggle/slide-toggle.component.js +105 -0
  654. package/esm2015/lib/components/slide-toggle/slide-toggle.module.js +20 -0
  655. package/esm2015/lib/components/slider/index.js +3 -0
  656. package/esm2015/lib/components/slider/slider.component.js +447 -0
  657. package/esm2015/lib/components/slider/slider.module.js +19 -0
  658. package/esm2015/lib/components/sort/index.js +3 -0
  659. package/esm2015/lib/components/sort/sort.component.js +87 -0
  660. package/esm2015/lib/components/sort/sort.module.js +23 -0
  661. package/esm2015/lib/components/spinner/index.js +3 -0
  662. package/esm2015/lib/components/spinner/spinner.component.js +57 -0
  663. package/esm2015/lib/components/spinner/spinner.module.js +14 -0
  664. package/esm2015/lib/components/subsidy-discount/index.js +4 -0
  665. package/esm2015/lib/components/subsidy-discount/models/subsidy-discount.model.js +2 -0
  666. package/esm2015/lib/components/subsidy-discount/subsidy-discount.component.js +101 -0
  667. package/esm2015/lib/components/subsidy-discount/subsidy-discount.module.js +23 -0
  668. package/esm2015/lib/components/suggestions/index.js +3 -0
  669. package/esm2015/lib/components/suggestions/suggestions.component.js +40 -0
  670. package/esm2015/lib/components/suggestions/suggestions.module.js +19 -0
  671. package/esm2015/lib/components/tab-group/index.js +4 -0
  672. package/esm2015/lib/components/tab-group/tab/tab.component.js +123 -0
  673. package/esm2015/lib/components/tab-group/tab-group.component.js +85 -0
  674. package/esm2015/lib/components/tab-group/tab-group.module.js +20 -0
  675. package/esm2015/lib/components/table/column/column.component.js +17 -0
  676. package/esm2015/lib/components/table/column-group/column-group.component.js +34 -0
  677. package/esm2015/lib/components/table/index.js +11 -0
  678. package/esm2015/lib/components/table/services/table.service.js +20 -0
  679. package/esm2015/lib/components/table/table-body/table-body.component.js +27 -0
  680. package/esm2015/lib/components/table/table-foot/table-foot.component.js +27 -0
  681. package/esm2015/lib/components/table/table-head/table-head.component.js +27 -0
  682. package/esm2015/lib/components/table/table-row/table-data/table-data.component.js +15 -0
  683. package/esm2015/lib/components/table/table-row/table-header/table-header.component.js +15 -0
  684. package/esm2015/lib/components/table/table-row/table-row.component.js +27 -0
  685. package/esm2015/lib/components/table/table.component.js +29 -0
  686. package/esm2015/lib/components/table/table.module.js +45 -0
  687. package/esm2015/lib/components/textarea/index.js +3 -0
  688. package/esm2015/lib/components/textarea/textarea.component.js +73 -0
  689. package/esm2015/lib/components/textarea/textarea.module.js +20 -0
  690. package/esm2015/lib/components/toggle/index.js +3 -0
  691. package/esm2015/lib/components/toggle/models/options.model.js +3 -0
  692. package/esm2015/lib/components/toggle/toggle.component.js +77 -0
  693. package/esm2015/lib/components/toggle/toggle.module.js +22 -0
  694. package/esm2015/lib/components/trip-summary/index.js +3 -0
  695. package/esm2015/lib/components/trip-summary/trip-summary.component.js +152 -0
  696. package/esm2015/lib/components/trip-summary/trip-summary.module.js +23 -0
  697. package/esm2015/lib/components/weather-icon/index.js +3 -0
  698. package/esm2015/lib/components/weather-icon/weather-icon.component.js +56 -0
  699. package/esm2015/lib/components/weather-icon/weather-icon.module.js +14 -0
  700. package/esm2015/lib/core/base/nas-component.base.js +48 -0
  701. package/esm2015/lib/core/decorators/debounce.decorator.js +12 -0
  702. package/esm2015/lib/core/directives/index.js +3 -0
  703. package/esm2015/lib/core/directives/nas-class/nas-class.directive.js +75 -0
  704. package/esm2015/lib/core/directives/nas-class/nas-class.module.js +17 -0
  705. package/esm2015/lib/core/extensions/html-element.extension.js +31 -0
  706. package/esm2015/lib/core/index.js +5 -0
  707. package/esm2015/lib/core/models/abandoned-basket-item.model.js +2 -0
  708. package/esm2015/lib/core/models/animate.model.js +2 -0
  709. package/esm2015/lib/core/models/class.model.js +2 -0
  710. package/esm2015/lib/core/models/index.js +7 -0
  711. package/esm2015/lib/core/models/link.model.js +2 -0
  712. package/esm2015/lib/core/models/position.model.js +2 -0
  713. package/esm2015/lib/core/models/utc-date.model.js +40 -0
  714. package/esm2015/lib/core/services/abandoned-basket/abandoned-basket.service.js +55 -0
  715. package/esm2015/lib/core/services/animate-helper/animate-helper.service.js +47 -0
  716. package/esm2015/lib/core/services/bem-helper/bem-helper.service.js +41 -0
  717. package/esm2015/lib/core/services/date/date-compare.enum.js +7 -0
  718. package/esm2015/lib/core/services/date/date-helper.service.js +196 -0
  719. package/esm2015/lib/core/services/device/device-helper.service.js +43 -0
  720. package/esm2015/lib/core/services/geolocation/geolocation-state.enum.js +8 -0
  721. package/esm2015/lib/core/services/geolocation/geolocation.service.js +60 -0
  722. package/esm2015/lib/core/services/index.js +10 -0
  723. package/esm2015/lib/core/services/language/language-helper.service.js +162 -0
  724. package/esm2015/lib/core/services/sort/sort.service.js +19 -0
  725. package/esm2015/lib/core/services/viewport/viewport.service.js +29 -0
  726. package/esm2015/lib/index.js +5 -0
  727. package/esm2015/lib/services/get-position.service.js +21 -0
  728. package/esm2015/lib/services/index.js +2 -0
  729. package/esm2015/lib/shared/index.js +2 -0
  730. package/esm2015/lib/shared/models/flight-details.js +3 -0
  731. package/esm2015/lib/shared/models/index.js +5 -0
  732. package/esm2015/lib/shared/models/journey-availability-sort.model.js +2 -0
  733. package/esm2015/lib/shared/models/journey-availability.model.js +2 -0
  734. package/esm2015/lib/shared/models/journey-details.model.js +2 -0
  735. package/esm2015/lib/shared/models/journey-duration.model.js +2 -0
  736. package/esm2015/lib/shared/models/journey-stopover.model.js +2 -0
  737. package/esm2015/lib/shared/models/journey-transit-info.model.js +2 -0
  738. package/esm2015/lib/shared/models/operating-carrier.model.js +2 -0
  739. package/esm2015/lib/shared/models/sort-option.model.js +2 -0
  740. package/esm2015/lib/shared/models/sort.model.js +2 -0
  741. package/esm2015/lib/shared/models/trip-item-details.model.js +2 -0
  742. package/esm2015/lib/shared/models/trip-summary-details.model.js +2 -0
  743. package/esm2015/lib/shared/models/trip-summary.model.js +2 -0
  744. package/esm2015/norwegian-core-components.js +12 -0
  745. package/esm2015/public_api.js +2 -0
  746. package/fesm2015/norwegian-core-components.js +10595 -0
  747. package/fesm2015/norwegian-core-components.js.map +1 -0
  748. package/lib/components/accordion/accordion.component.d.ts +205 -0
  749. package/lib/components/accordion/accordion.module.d.ts +2 -0
  750. package/lib/components/accordion/index.d.ts +2 -0
  751. package/lib/components/airport-select/airport-select-dropdown/airport-select-dropdown.component.d.ts +94 -0
  752. package/lib/components/airport-select/airport-select.component.d.ts +256 -0
  753. package/lib/components/airport-select/airport-select.module.d.ts +2 -0
  754. package/lib/components/airport-select/index.d.ts +3 -0
  755. package/lib/components/airport-select/models/airport.model.d.ts +10 -0
  756. package/lib/components/airport-select/models/results-labels.model.d.ts +7 -0
  757. package/lib/components/airport-select/services/airport-select-dropdown.service.d.ts +7 -0
  758. package/lib/components/airport-select/services/airport-select.service.d.ts +5 -0
  759. package/lib/components/autocomplete/autocomplete.component.d.ts +115 -0
  760. package/lib/components/autocomplete/autocomplete.module.d.ts +2 -0
  761. package/lib/components/autocomplete/index.d.ts +3 -0
  762. package/lib/components/autocomplete/models/autocomplete.model.d.ts +5 -0
  763. package/lib/components/backdrop/backdrop.component.d.ts +32 -0
  764. package/lib/components/backdrop/backdrop.module.d.ts +2 -0
  765. package/lib/components/backdrop/index.d.ts +2 -0
  766. package/lib/components/box/box.component.d.ts +69 -0
  767. package/lib/components/box/box.module.d.ts +2 -0
  768. package/lib/components/box/index.d.ts +2 -0
  769. package/lib/components/button/button.component.d.ts +238 -0
  770. package/lib/components/button/button.module.d.ts +2 -0
  771. package/lib/components/button/index.d.ts +2 -0
  772. package/lib/components/checkbox/checkbox.component.d.ts +119 -0
  773. package/lib/components/checkbox/checkbox.module.d.ts +2 -0
  774. package/lib/components/checkbox/index.d.ts +2 -0
  775. package/lib/components/chip/chip.component.d.ts +61 -0
  776. package/lib/components/chip/chip.module.d.ts +2 -0
  777. package/lib/components/chip/index.d.ts +2 -0
  778. package/lib/components/container/container.component.d.ts +47 -0
  779. package/lib/components/container/container.module.d.ts +2 -0
  780. package/lib/components/container/index.d.ts +2 -0
  781. package/lib/components/continue/continue.component.d.ts +154 -0
  782. package/lib/components/continue/continue.module.d.ts +2 -0
  783. package/lib/components/continue/index.d.ts +2 -0
  784. package/lib/components/cover/cover.component.d.ts +112 -0
  785. package/lib/components/cover/cover.module.d.ts +2 -0
  786. package/lib/components/cover/index.d.ts +2 -0
  787. package/lib/components/datepicker/calendar/calendar-date.model.d.ts +5 -0
  788. package/lib/components/datepicker/calendar/calendar.component.d.ts +156 -0
  789. package/lib/components/datepicker/calendar/enums/week-start.enum.d.ts +4 -0
  790. package/lib/components/datepicker/calendar/models/day.model.d.ts +9 -0
  791. package/lib/components/datepicker/calendar/models/select-option.model.d.ts +4 -0
  792. package/lib/components/datepicker/calendar/models/week.model.d.ts +5 -0
  793. package/lib/components/datepicker/datepicker.component.d.ts +235 -0
  794. package/lib/components/datepicker/datepicker.module.d.ts +2 -0
  795. package/lib/components/datepicker/index.d.ts +4 -0
  796. package/lib/components/datepicker/services/calendar.service.d.ts +24 -0
  797. package/lib/components/datepicker-combo/datepicker-combo.component.d.ts +246 -0
  798. package/lib/components/datepicker-combo/datepicker-combo.module.d.ts +2 -0
  799. package/lib/components/datepicker-combo/index.d.ts +2 -0
  800. package/lib/components/dropdown/dropdown.component.d.ts +64 -0
  801. package/lib/components/dropdown/dropdown.module.d.ts +2 -0
  802. package/lib/components/dropdown/index.d.ts +2 -0
  803. package/lib/components/filter/enums/trip-type.enum.d.ts +6 -0
  804. package/lib/components/filter/filter.component.d.ts +693 -0
  805. package/lib/components/filter/filter.module.d.ts +2 -0
  806. package/lib/components/filter/index.d.ts +3 -0
  807. package/lib/components/grid/col/col.component.d.ts +37 -0
  808. package/lib/components/grid/grid.component.d.ts +61 -0
  809. package/lib/components/grid/grid.module.d.ts +2 -0
  810. package/lib/components/grid/index.d.ts +3 -0
  811. package/lib/components/icon/icon.component.d.ts +57 -0
  812. package/lib/components/icon/icon.module.d.ts +2 -0
  813. package/lib/components/icon/index.d.ts +2 -0
  814. package/lib/components/icon-list/icon-list.component.d.ts +41 -0
  815. package/lib/components/icon-list/icon-list.model.d.ts +7 -0
  816. package/lib/components/icon-list/icon-list.module.d.ts +2 -0
  817. package/lib/components/icon-list/index.d.ts +3 -0
  818. package/lib/components/index.d.ts +48 -0
  819. package/lib/components/info/index.d.ts +3 -0
  820. package/lib/components/info/info.component.d.ts +71 -0
  821. package/lib/components/info/info.module.d.ts +2 -0
  822. package/lib/components/info/models/info.model.d.ts +7 -0
  823. package/lib/components/input/index.d.ts +2 -0
  824. package/lib/components/input/input.component.d.ts +163 -0
  825. package/lib/components/input/input.module.d.ts +2 -0
  826. package/lib/components/journey/index.d.ts +2 -0
  827. package/lib/components/journey/journey.component.d.ts +119 -0
  828. package/lib/components/journey/journey.module.d.ts +2 -0
  829. package/lib/components/journey/models/journey-flight.model.d.ts +10 -0
  830. package/lib/components/journey/models/journey.model.d.ts +5 -0
  831. package/lib/components/journey-availability/index.d.ts +2 -0
  832. package/lib/components/journey-availability/journey-availability.component.d.ts +90 -0
  833. package/lib/components/journey-availability/journey-availability.module.d.ts +2 -0
  834. package/lib/components/journey-availability-list/enums/availability-sort-option.enum.d.ts +5 -0
  835. package/lib/components/journey-availability-list/index.d.ts +2 -0
  836. package/lib/components/journey-availability-list/journey-availability-list.component.d.ts +116 -0
  837. package/lib/components/journey-availability-list/journey-availability-list.module.d.ts +2 -0
  838. package/lib/components/journey-selection/index.d.ts +5 -0
  839. package/lib/components/journey-selection/journey-selection.component.d.ts +70 -0
  840. package/lib/components/journey-selection/journey-selection.module.d.ts +2 -0
  841. package/lib/components/journey-selection/models/journey-selection-collapsed.model.d.ts +11 -0
  842. package/lib/components/journey-selection/models/journey-selection-common.model.d.ts +7 -0
  843. package/lib/components/journey-selection/models/journey-selection-expanded.model.d.ts +5 -0
  844. package/lib/components/journey-selection/models/journey-selection.model.d.ts +14 -0
  845. package/lib/components/journey-stopover/index.d.ts +2 -0
  846. package/lib/components/journey-stopover/journey-stopover.component.d.ts +132 -0
  847. package/lib/components/journey-stopover/journey-stopover.module.d.ts +2 -0
  848. package/lib/components/journey-stopover/models/stopover-time.model.d.ts +4 -0
  849. package/lib/components/list/index.d.ts +3 -0
  850. package/lib/components/list/list-item/list-item.component.d.ts +32 -0
  851. package/lib/components/list/list.component.d.ts +65 -0
  852. package/lib/components/list/list.module.d.ts +2 -0
  853. package/lib/components/modal/index.d.ts +2 -0
  854. package/lib/components/modal/modal.component.d.ts +119 -0
  855. package/lib/components/modal/modal.module.d.ts +2 -0
  856. package/lib/components/number-field/index.d.ts +2 -0
  857. package/lib/components/number-field/number-field.component.d.ts +96 -0
  858. package/lib/components/number-field/number-field.module.d.ts +2 -0
  859. package/lib/components/page-footer/index.d.ts +2 -0
  860. package/lib/components/page-footer/page-footer.component.d.ts +57 -0
  861. package/lib/components/page-footer/page-footer.module.d.ts +2 -0
  862. package/lib/components/page-header/hamburger/hamburger.component.d.ts +9 -0
  863. package/lib/components/page-header/index.d.ts +4 -0
  864. package/lib/components/page-header/page-header.component.d.ts +84 -0
  865. package/lib/components/page-header/page-header.module.d.ts +2 -0
  866. package/lib/components/page-header/search/search.component.d.ts +23 -0
  867. package/lib/components/passenger-select/enums/passenger-type.enum.d.ts +5 -0
  868. package/lib/components/passenger-select/index.d.ts +4 -0
  869. package/lib/components/passenger-select/models/passengers.model.d.ts +9 -0
  870. package/lib/components/passenger-select/passenger-select.component.d.ts +111 -0
  871. package/lib/components/passenger-select/passenger-select.module.d.ts +2 -0
  872. package/lib/components/phone-number/index.d.ts +2 -0
  873. package/lib/components/phone-number/phone-number.component.d.ts +278 -0
  874. package/lib/components/phone-number/phone-number.module.d.ts +2 -0
  875. package/lib/components/premium-toggle/index.d.ts +2 -0
  876. package/lib/components/premium-toggle/premium-toggle.component.d.ts +51 -0
  877. package/lib/components/premium-toggle/premium-toggle.module.d.ts +2 -0
  878. package/lib/components/radio/index.d.ts +2 -0
  879. package/lib/components/radio/radio.component.d.ts +115 -0
  880. package/lib/components/radio/radio.module.d.ts +2 -0
  881. package/lib/components/select/index.d.ts +5 -0
  882. package/lib/components/select/models/select-option.model.d.ts +4 -0
  883. package/lib/components/select/optgroup/optgroup.component.d.ts +22 -0
  884. package/lib/components/select/option/option.component.d.ts +21 -0
  885. package/lib/components/select/select.component.d.ts +156 -0
  886. package/lib/components/select/select.module.d.ts +2 -0
  887. package/lib/components/simple-list/index.d.ts +2 -0
  888. package/lib/components/simple-list/simple-list.component.d.ts +49 -0
  889. package/lib/components/simple-list/simple-list.module.d.ts +2 -0
  890. package/lib/components/slide-toggle/index.d.ts +2 -0
  891. package/lib/components/slide-toggle/slide-toggle.component.d.ts +60 -0
  892. package/lib/components/slide-toggle/slide-toggle.module.d.ts +2 -0
  893. package/lib/components/slider/index.d.ts +2 -0
  894. package/lib/components/slider/slider.component.d.ts +177 -0
  895. package/lib/components/slider/slider.module.d.ts +2 -0
  896. package/lib/components/sort/index.d.ts +2 -0
  897. package/lib/components/sort/sort.component.d.ts +47 -0
  898. package/lib/components/sort/sort.module.d.ts +2 -0
  899. package/lib/components/spinner/index.d.ts +2 -0
  900. package/lib/components/spinner/spinner.component.d.ts +58 -0
  901. package/lib/components/spinner/spinner.module.d.ts +2 -0
  902. package/lib/components/subsidy-discount/index.d.ts +3 -0
  903. package/lib/components/subsidy-discount/models/subsidy-discount.model.d.ts +4 -0
  904. package/lib/components/subsidy-discount/subsidy-discount.component.d.ts +57 -0
  905. package/lib/components/subsidy-discount/subsidy-discount.module.d.ts +2 -0
  906. package/lib/components/suggestions/index.d.ts +2 -0
  907. package/lib/components/suggestions/suggestions.component.d.ts +30 -0
  908. package/lib/components/suggestions/suggestions.module.d.ts +2 -0
  909. package/lib/components/tab-group/index.d.ts +3 -0
  910. package/lib/components/tab-group/tab/tab.component.d.ts +84 -0
  911. package/lib/components/tab-group/tab-group.component.d.ts +30 -0
  912. package/lib/components/tab-group/tab-group.module.d.ts +2 -0
  913. package/lib/components/table/column/column.component.d.ts +3 -0
  914. package/lib/components/table/column-group/column-group.component.d.ts +12 -0
  915. package/lib/components/table/index.d.ts +10 -0
  916. package/lib/components/table/services/table.service.d.ts +5 -0
  917. package/lib/components/table/table-body/table-body.component.d.ts +12 -0
  918. package/lib/components/table/table-foot/table-foot.component.d.ts +12 -0
  919. package/lib/components/table/table-head/table-head.component.d.ts +12 -0
  920. package/lib/components/table/table-row/table-data/table-data.component.d.ts +2 -0
  921. package/lib/components/table/table-row/table-header/table-header.component.d.ts +2 -0
  922. package/lib/components/table/table-row/table-row.component.d.ts +12 -0
  923. package/lib/components/table/table.component.d.ts +21 -0
  924. package/lib/components/table/table.module.d.ts +2 -0
  925. package/lib/components/textarea/index.d.ts +2 -0
  926. package/lib/components/textarea/textarea.component.d.ts +121 -0
  927. package/lib/components/textarea/textarea.module.d.ts +2 -0
  928. package/lib/components/toggle/index.d.ts +2 -0
  929. package/lib/components/toggle/models/options.model.d.ts +6 -0
  930. package/lib/components/toggle/toggle.component.d.ts +183 -0
  931. package/lib/components/toggle/toggle.module.d.ts +2 -0
  932. package/lib/components/trip-summary/index.d.ts +2 -0
  933. package/lib/components/trip-summary/trip-summary.component.d.ts +173 -0
  934. package/lib/components/trip-summary/trip-summary.module.d.ts +2 -0
  935. package/lib/components/weather-icon/index.d.ts +2 -0
  936. package/lib/components/weather-icon/weather-icon.component.d.ts +51 -0
  937. package/lib/components/weather-icon/weather-icon.module.d.ts +2 -0
  938. package/lib/core/base/nas-component.base.d.ts +11 -0
  939. package/lib/core/decorators/debounce.decorator.d.ts +1 -0
  940. package/lib/core/directives/index.d.ts +2 -0
  941. package/lib/core/directives/nas-class/nas-class.directive.d.ts +11 -0
  942. package/lib/core/directives/nas-class/nas-class.module.d.ts +2 -0
  943. package/lib/core/extensions/html-element.extension.d.ts +6 -0
  944. package/lib/core/index.d.ts +4 -0
  945. package/lib/core/models/abandoned-basket-item.model.d.ts +14 -0
  946. package/lib/core/models/animate.model.d.ts +6 -0
  947. package/lib/core/models/class.model.d.ts +6 -0
  948. package/lib/core/models/index.d.ts +6 -0
  949. package/lib/core/models/link.model.d.ts +4 -0
  950. package/lib/core/models/position.model.d.ts +4 -0
  951. package/lib/core/models/utc-date.model.d.ts +13 -0
  952. package/lib/core/services/abandoned-basket/abandoned-basket.service.d.ts +7 -0
  953. package/lib/core/services/animate-helper/animate-helper.service.d.ts +6 -0
  954. package/lib/core/services/bem-helper/bem-helper.service.d.ts +4 -0
  955. package/lib/core/services/date/date-compare.enum.d.ts +5 -0
  956. package/lib/core/services/date/date-helper.service.d.ts +19 -0
  957. package/lib/core/services/device/device-helper.service.d.ts +13 -0
  958. package/lib/core/services/geolocation/geolocation-state.enum.d.ts +6 -0
  959. package/lib/core/services/geolocation/geolocation.service.d.ts +6 -0
  960. package/lib/core/services/index.d.ts +9 -0
  961. package/lib/core/services/language/language-helper.service.d.ts +9 -0
  962. package/lib/core/services/sort/sort.service.d.ts +3 -0
  963. package/lib/core/services/viewport/viewport.service.d.ts +8 -0
  964. package/lib/index.d.ts +4 -0
  965. package/lib/services/get-position.service.d.ts +6 -0
  966. package/lib/services/index.d.ts +1 -0
  967. package/lib/shared/index.d.ts +1 -0
  968. package/lib/shared/models/flight-details.d.ts +22 -0
  969. package/lib/shared/models/index.d.ts +4 -0
  970. package/lib/shared/models/journey-availability-sort.model.d.ts +8 -0
  971. package/lib/shared/models/journey-availability.model.d.ts +25 -0
  972. package/lib/shared/models/journey-details.model.d.ts +8 -0
  973. package/lib/shared/models/journey-duration.model.d.ts +7 -0
  974. package/lib/shared/models/journey-stopover.model.d.ts +11 -0
  975. package/lib/shared/models/journey-transit-info.model.d.ts +5 -0
  976. package/lib/shared/models/operating-carrier.model.d.ts +4 -0
  977. package/lib/shared/models/sort-option.model.d.ts +11 -0
  978. package/lib/shared/models/sort.model.d.ts +10 -0
  979. package/lib/shared/models/trip-item-details.model.d.ts +12 -0
  980. package/lib/shared/models/trip-summary-details.model.d.ts +5 -0
  981. package/lib/shared/models/trip-summary.model.d.ts +4 -0
  982. package/norwegian-core-components.d.ts +11 -0
  983. package/norwegian-core-components.metadata.json +1 -0
  984. package/package.json +19 -0
  985. package/public_api.d.ts +1 -0
  986. package/styles/1__settings/_colors.scss +65 -0
  987. package/styles/1__settings/_mixins.scss +226 -0
  988. package/styles/1__settings/_type.scss +53 -0
  989. package/styles/1__settings/_vars.scss +62 -0
  990. package/styles/2__generic/_fonts.scss +99 -0
  991. package/styles/2__generic/_reset.scss +275 -0
  992. package/styles/3__base/_animations.scss +138 -0
  993. package/styles/3__base/_body.scss +23 -0
  994. package/styles/3__base/_fixes.scss +5 -0
  995. package/styles/3__base/_form.scss +18 -0
  996. package/styles/3__base/_grid.scss +115 -0
  997. package/styles/3__base/_heading.scss +110 -0
  998. package/styles/3__base/_hr.scss +30 -0
  999. package/styles/3__base/_input.scss +38 -0
  1000. package/styles/3__base/_link.scss +48 -0
  1001. package/styles/3__base/_table.scss +44 -0
  1002. package/styles/3__base/_type.scss +69 -0
  1003. package/styles/_helpers.scss +4 -0
  1004. 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=