@norwegian/core-components 5.18.1 → 5.18.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (516) hide show
  1. package/esm2020/lib/components/accordion/accordion.component.mjs +148 -0
  2. package/esm2020/lib/components/accordion/accordion.module.mjs +20 -0
  3. package/esm2020/lib/components/airport-select/airport-select-dropdown/airport-select-dropdown.component.mjs +610 -0
  4. package/esm2020/lib/components/airport-select/airport-select.component.mjs +438 -0
  5. package/esm2020/lib/components/airport-select/airport-select.module.mjs +42 -0
  6. package/esm2020/lib/components/airport-select/services/airport-select-dropdown.service.mjs +35 -0
  7. package/esm2020/lib/components/airport-select/services/airport-select.service.mjs +38 -0
  8. package/esm2020/lib/components/autocomplete/autocomplete.component.mjs +287 -0
  9. package/esm2020/lib/components/autocomplete/autocomplete.module.mjs +43 -0
  10. package/esm2020/lib/components/backdrop/backdrop.component.mjs +56 -0
  11. package/esm2020/lib/components/backdrop/backdrop.module.mjs +24 -0
  12. package/esm2020/lib/components/box/box.component.mjs +68 -0
  13. package/esm2020/lib/components/box/box.module.mjs +19 -0
  14. package/esm2020/lib/components/button/button.component.mjs +167 -0
  15. package/esm2020/lib/components/button/button.module.mjs +20 -0
  16. package/esm2020/lib/components/checkbox/checkbox.component.mjs +148 -0
  17. package/esm2020/lib/components/checkbox/checkbox.module.mjs +20 -0
  18. package/esm2020/lib/components/chip/chip.component.mjs +53 -0
  19. package/esm2020/lib/components/chip/chip.module.mjs +24 -0
  20. package/esm2020/lib/components/container/container.component.mjs +50 -0
  21. package/esm2020/lib/components/container/container.module.mjs +19 -0
  22. package/esm2020/lib/components/continue/continue.component.mjs +194 -0
  23. package/esm2020/lib/components/continue/continue.module.mjs +34 -0
  24. package/esm2020/lib/components/cover/cover.component.mjs +75 -0
  25. package/esm2020/lib/components/cover/cover.module.mjs +21 -0
  26. package/esm2020/lib/components/datepicker/calendar/calendar.component.mjs +583 -0
  27. package/esm2020/lib/components/datepicker/datepicker.component.mjs +550 -0
  28. package/esm2020/lib/components/datepicker/datepicker.module.mjs +55 -0
  29. package/esm2020/lib/components/datepicker/services/calendar.service.mjs +213 -0
  30. package/esm2020/lib/components/datepicker-combo/datepicker-combo.component.mjs +355 -0
  31. package/esm2020/lib/components/datepicker-combo/datepicker-combo.module.mjs +31 -0
  32. package/esm2020/lib/components/divider/divider.component.mjs +61 -0
  33. package/esm2020/lib/components/divider/divider.module.mjs +20 -0
  34. package/esm2020/lib/components/dropdown/dropdown.component.mjs +169 -0
  35. package/esm2020/lib/components/dropdown/dropdown.module.mjs +32 -0
  36. package/esm2020/lib/components/filter/filter.component.mjs +1253 -0
  37. package/esm2020/lib/components/filter/filter.module.mjs +73 -0
  38. package/esm2020/lib/components/grid/col/col.component.mjs +49 -0
  39. package/esm2020/lib/components/grid/grid.component.mjs +72 -0
  40. package/esm2020/lib/components/grid/grid.module.mjs +20 -0
  41. package/esm2020/lib/components/icon/icon.component.mjs +44 -0
  42. package/esm2020/lib/components/icon/icon.module.mjs +24 -0
  43. package/esm2020/lib/components/icon-list/icon-list.component.mjs +50 -0
  44. package/esm2020/lib/components/icon-list/icon-list.module.mjs +20 -0
  45. package/esm2020/lib/components/info/info.component.mjs +106 -0
  46. package/esm2020/lib/components/info/info.module.mjs +36 -0
  47. package/esm2020/lib/components/input/input.component.mjs +179 -0
  48. package/esm2020/lib/components/input/input.module.mjs +21 -0
  49. package/esm2020/lib/components/journey/journey.component.mjs +126 -0
  50. package/esm2020/lib/components/journey/journey.module.mjs +28 -0
  51. package/esm2020/lib/components/journey-availability/journey-availability.component.mjs +126 -0
  52. package/esm2020/lib/components/journey-availability/journey-availability.module.mjs +39 -0
  53. package/esm2020/lib/components/journey-availability-list/journey-availability-list.component.mjs +185 -0
  54. package/{esm2015/lib/components/journey-availability-list/journey-availability-list.module.js → esm2020/lib/components/journey-availability-list/journey-availability-list.module.mjs} +27 -14
  55. package/esm2020/lib/components/journey-selection/journey-selection.component.mjs +112 -0
  56. package/esm2020/lib/components/journey-selection/journey-selection.module.mjs +35 -0
  57. package/esm2020/lib/components/journey-stopover/journey-stopover.component.mjs +125 -0
  58. package/esm2020/lib/components/journey-stopover/journey-stopover.module.mjs +28 -0
  59. package/esm2020/lib/components/list/list-item/list-item.component.mjs +52 -0
  60. package/esm2020/lib/components/list/list.component.mjs +78 -0
  61. package/esm2020/lib/components/list/list.module.mjs +20 -0
  62. package/esm2020/lib/components/modal/modal.component.mjs +141 -0
  63. package/esm2020/lib/components/modal/modal.module.mjs +38 -0
  64. package/esm2020/lib/components/number-field/number-field.component.mjs +135 -0
  65. package/esm2020/lib/components/number-field/number-field.module.mjs +39 -0
  66. package/esm2020/lib/components/page-footer/page-footer.component.mjs +54 -0
  67. package/esm2020/lib/components/page-footer/page-footer.module.mjs +21 -0
  68. package/esm2020/lib/components/page-header/hamburger/hamburger.component.mjs +22 -0
  69. package/esm2020/lib/components/page-header/page-header.component.mjs +142 -0
  70. package/esm2020/lib/components/page-header/page-header.module.mjs +23 -0
  71. package/esm2020/lib/components/page-header/search/search.component.mjs +49 -0
  72. package/{esm2015/lib/components/passenger-select/models/passengers.model.js → esm2020/lib/components/passenger-select/models/passengers.model.mjs} +1 -1
  73. package/esm2020/lib/components/passenger-select/passenger-select.component.mjs +225 -0
  74. package/esm2020/lib/components/passenger-select/passenger-select.module.mjs +28 -0
  75. package/esm2020/lib/components/phone-number/phone-number.component.mjs +148 -0
  76. package/esm2020/lib/components/phone-number/phone-number.module.mjs +44 -0
  77. package/esm2020/lib/components/premium-toggle/premium-toggle.component.mjs +69 -0
  78. package/esm2020/lib/components/premium-toggle/premium-toggle.module.mjs +28 -0
  79. package/esm2020/lib/components/radio/radio.component.mjs +98 -0
  80. package/esm2020/lib/components/radio/radio.module.mjs +20 -0
  81. package/esm2020/lib/components/select/optgroup/optgroup.component.mjs +29 -0
  82. package/esm2020/lib/components/select/option/option.component.mjs +26 -0
  83. package/esm2020/lib/components/select/select.component.mjs +354 -0
  84. package/esm2020/lib/components/select/select.module.mjs +30 -0
  85. package/esm2020/lib/components/simple-list/simple-list.component.mjs +48 -0
  86. package/esm2020/lib/components/simple-list/simple-list.module.mjs +19 -0
  87. package/esm2020/lib/components/slide-toggle/slide-toggle.component.mjs +111 -0
  88. package/esm2020/lib/components/slide-toggle/slide-toggle.module.mjs +31 -0
  89. package/esm2020/lib/components/slider/slider.component.mjs +501 -0
  90. package/esm2020/lib/components/slider/slider.module.mjs +28 -0
  91. package/esm2020/lib/components/sort/sort.component.mjs +93 -0
  92. package/esm2020/lib/components/sort/sort.module.mjs +36 -0
  93. package/esm2020/lib/components/spinner/spinner.component.mjs +112 -0
  94. package/esm2020/lib/components/spinner/spinner.module.mjs +19 -0
  95. package/esm2020/lib/components/subsidy-discount/subsidy-discount.component.mjs +110 -0
  96. package/esm2020/lib/components/subsidy-discount/subsidy-discount.module.mjs +36 -0
  97. package/esm2020/lib/components/suggestions/suggestions.component.mjs +43 -0
  98. package/esm2020/lib/components/suggestions/suggestions.module.mjs +28 -0
  99. package/esm2020/lib/components/tab-group/tab/tab.component.mjs +131 -0
  100. package/esm2020/lib/components/tab-group/tab-group.component.mjs +87 -0
  101. package/esm2020/lib/components/tab-group/tab-group.module.mjs +29 -0
  102. package/esm2020/lib/components/table/column/column.component.mjs +16 -0
  103. package/esm2020/lib/components/table/column-group/column-group.component.mjs +30 -0
  104. package/esm2020/lib/components/table/services/table.service.mjs +21 -0
  105. package/esm2020/lib/components/table/table-body/table-body.component.mjs +23 -0
  106. package/esm2020/lib/components/table/table-foot/table-foot.component.mjs +23 -0
  107. package/esm2020/lib/components/table/table-head/table-head.component.mjs +23 -0
  108. package/esm2020/lib/components/table/table-row/table-data/table-data.component.mjs +15 -0
  109. package/esm2020/lib/components/table/table-row/table-header/table-header.component.mjs +15 -0
  110. package/esm2020/lib/components/table/table-row/table-row.component.mjs +23 -0
  111. package/esm2020/lib/components/table/table.component.mjs +29 -0
  112. package/esm2020/lib/components/table/table.module.mjs +68 -0
  113. package/esm2020/lib/components/textarea/textarea.component.mjs +93 -0
  114. package/esm2020/lib/components/textarea/textarea.module.mjs +31 -0
  115. package/esm2020/lib/components/toggle/toggle.component.mjs +103 -0
  116. package/esm2020/lib/components/toggle/toggle.module.mjs +35 -0
  117. package/esm2020/lib/components/trip-summary/trip-summary.component.mjs +170 -0
  118. package/esm2020/lib/components/trip-summary/trip-summary.module.mjs +36 -0
  119. package/esm2020/lib/components/weather-icon/weather-icon.component.mjs +60 -0
  120. package/esm2020/lib/components/weather-icon/weather-icon.module.mjs +19 -0
  121. package/esm2020/lib/core/base/nas-component.base.mjs +47 -0
  122. package/esm2020/lib/core/directives/nas-class/nas-class.directive.mjs +80 -0
  123. package/esm2020/lib/core/directives/nas-class/nas-class.module.mjs +22 -0
  124. package/{esm2015/lib/core/extensions/html-element.extension.js → esm2020/lib/core/extensions/html-element.extension.mjs} +1 -1
  125. package/esm2020/lib/core/services/abandoned-basket/abandoned-basket.service.mjs +58 -0
  126. package/esm2020/lib/core/services/animate-helper/animate-helper.service.mjs +49 -0
  127. package/esm2020/lib/core/services/bem-helper/bem-helper.service.mjs +44 -0
  128. package/esm2020/lib/core/services/date/date-helper.service.mjs +199 -0
  129. package/esm2020/lib/core/services/device/device-helper.service.mjs +46 -0
  130. package/esm2020/lib/core/services/geolocation/geolocation.service.mjs +63 -0
  131. package/esm2020/lib/core/services/language/language-helper.service.mjs +129 -0
  132. package/esm2020/lib/core/services/sort/sort.service.mjs +22 -0
  133. package/esm2020/lib/core/services/viewport/viewport.service.mjs +32 -0
  134. package/esm2020/lib/services/get-position.service.mjs +23 -0
  135. package/esm2020/norwegian-core-components.mjs +5 -0
  136. package/fesm2015/norwegian-core-components.mjs +11843 -0
  137. package/fesm2015/norwegian-core-components.mjs.map +1 -0
  138. package/fesm2020/norwegian-core-components.mjs +11829 -0
  139. package/fesm2020/norwegian-core-components.mjs.map +1 -0
  140. package/index.d.ts +5 -0
  141. package/lib/components/accordion/accordion.component.d.ts +3 -0
  142. package/lib/components/accordion/accordion.module.d.ts +8 -0
  143. package/lib/components/airport-select/airport-select-dropdown/airport-select-dropdown.component.d.ts +5 -2
  144. package/lib/components/airport-select/airport-select.component.d.ts +5 -2
  145. package/lib/components/airport-select/airport-select.module.d.ts +11 -0
  146. package/lib/components/airport-select/services/airport-select-dropdown.service.d.ts +3 -0
  147. package/lib/components/airport-select/services/airport-select.service.d.ts +3 -0
  148. package/lib/components/autocomplete/autocomplete.component.d.ts +5 -2
  149. package/lib/components/autocomplete/autocomplete.module.d.ts +11 -0
  150. package/lib/components/backdrop/backdrop.component.d.ts +3 -0
  151. package/lib/components/backdrop/backdrop.module.d.ts +7 -0
  152. package/lib/components/box/box.component.d.ts +3 -4
  153. package/lib/components/box/box.module.d.ts +7 -0
  154. package/lib/components/button/button.component.d.ts +3 -0
  155. package/lib/components/button/button.module.d.ts +8 -0
  156. package/lib/components/checkbox/checkbox.component.d.ts +5 -2
  157. package/lib/components/checkbox/checkbox.module.d.ts +8 -0
  158. package/lib/components/chip/chip.component.d.ts +3 -0
  159. package/lib/components/chip/chip.module.d.ts +7 -0
  160. package/lib/components/container/container.component.d.ts +3 -4
  161. package/lib/components/container/container.module.d.ts +7 -0
  162. package/lib/components/continue/continue.component.d.ts +3 -0
  163. package/lib/components/continue/continue.module.d.ts +9 -0
  164. package/lib/components/cover/cover.component.d.ts +3 -0
  165. package/lib/components/cover/cover.module.d.ts +9 -0
  166. package/lib/components/datepicker/calendar/calendar.component.d.ts +5 -2
  167. package/lib/components/datepicker/datepicker.component.d.ts +5 -2
  168. package/lib/components/datepicker/datepicker.module.d.ts +14 -0
  169. package/lib/components/datepicker/services/calendar.service.d.ts +3 -0
  170. package/lib/components/datepicker-combo/datepicker-combo.component.d.ts +3 -0
  171. package/lib/components/datepicker-combo/datepicker-combo.module.d.ts +8 -0
  172. package/lib/components/divider/divider.component.d.ts +3 -4
  173. package/lib/components/divider/divider.module.d.ts +8 -0
  174. package/lib/components/dropdown/dropdown.component.d.ts +3 -0
  175. package/lib/components/dropdown/dropdown.module.d.ts +9 -0
  176. package/lib/components/filter/filter.component.d.ts +5 -2
  177. package/lib/components/filter/filter.module.d.ts +18 -0
  178. package/lib/components/grid/col/col.component.d.ts +4 -1
  179. package/lib/components/grid/grid.component.d.ts +3 -4
  180. package/lib/components/grid/grid.module.d.ts +8 -0
  181. package/lib/components/icon/icon.component.d.ts +3 -4
  182. package/lib/components/icon/icon.module.d.ts +7 -0
  183. package/lib/components/icon-list/icon-list.component.d.ts +3 -0
  184. package/lib/components/icon-list/icon-list.module.d.ts +8 -0
  185. package/lib/components/info/info.component.d.ts +3 -0
  186. package/lib/components/info/info.module.d.ts +10 -0
  187. package/lib/components/input/input.component.d.ts +5 -2
  188. package/lib/components/input/input.module.d.ts +9 -0
  189. package/lib/components/journey/journey.component.d.ts +3 -0
  190. package/lib/components/journey/journey.module.d.ts +8 -0
  191. package/lib/components/journey-availability/journey-availability.component.d.ts +3 -0
  192. package/lib/components/journey-availability/journey-availability.module.d.ts +10 -0
  193. package/lib/components/journey-availability-list/journey-availability-list.component.d.ts +3 -0
  194. package/lib/components/journey-availability-list/journey-availability-list.module.d.ts +10 -0
  195. package/lib/components/journey-selection/journey-selection.component.d.ts +3 -0
  196. package/lib/components/journey-selection/journey-selection.module.d.ts +9 -0
  197. package/lib/components/journey-stopover/journey-stopover.component.d.ts +3 -0
  198. package/lib/components/journey-stopover/journey-stopover.module.d.ts +8 -0
  199. package/lib/components/list/list-item/list-item.component.d.ts +3 -0
  200. package/lib/components/list/list.component.d.ts +4 -1
  201. package/lib/components/list/list.module.d.ts +8 -0
  202. package/lib/components/modal/modal.component.d.ts +3 -0
  203. package/lib/components/modal/modal.module.d.ts +10 -0
  204. package/lib/components/number-field/number-field.component.d.ts +5 -2
  205. package/lib/components/number-field/number-field.module.d.ts +10 -0
  206. package/lib/components/page-footer/page-footer.component.d.ts +3 -0
  207. package/lib/components/page-footer/page-footer.module.d.ts +9 -0
  208. package/lib/components/page-header/hamburger/hamburger.component.d.ts +3 -0
  209. package/lib/components/page-header/page-header.component.d.ts +3 -0
  210. package/lib/components/page-header/page-header.module.d.ts +11 -0
  211. package/lib/components/page-header/search/search.component.d.ts +3 -0
  212. package/lib/components/passenger-select/models/passengers.model.d.ts +2 -2
  213. package/lib/components/passenger-select/passenger-select.component.d.ts +5 -2
  214. package/lib/components/passenger-select/passenger-select.module.d.ts +8 -0
  215. package/lib/components/phone-number/phone-number.component.d.ts +5 -2
  216. package/lib/components/phone-number/phone-number.module.d.ts +11 -0
  217. package/lib/components/premium-toggle/premium-toggle.component.d.ts +3 -0
  218. package/lib/components/premium-toggle/premium-toggle.module.d.ts +8 -0
  219. package/lib/components/radio/radio.component.d.ts +5 -2
  220. package/lib/components/radio/radio.module.d.ts +8 -0
  221. package/lib/components/select/optgroup/optgroup.component.d.ts +3 -0
  222. package/lib/components/select/option/option.component.d.ts +3 -0
  223. package/lib/components/select/select.component.d.ts +6 -3
  224. package/lib/components/select/select.module.d.ts +10 -0
  225. package/lib/components/simple-list/simple-list.component.d.ts +4 -1
  226. package/lib/components/simple-list/simple-list.module.d.ts +7 -0
  227. package/lib/components/slide-toggle/slide-toggle.component.d.ts +5 -2
  228. package/lib/components/slide-toggle/slide-toggle.module.d.ts +8 -0
  229. package/lib/components/slider/slider.component.d.ts +5 -2
  230. package/lib/components/slider/slider.module.d.ts +8 -0
  231. package/lib/components/sort/sort.component.d.ts +3 -0
  232. package/lib/components/sort/sort.module.d.ts +10 -0
  233. package/lib/components/spinner/spinner.component.d.ts +3 -0
  234. package/lib/components/spinner/spinner.module.d.ts +7 -0
  235. package/lib/components/subsidy-discount/subsidy-discount.component.d.ts +3 -0
  236. package/lib/components/subsidy-discount/subsidy-discount.module.d.ts +10 -0
  237. package/lib/components/suggestions/suggestions.component.d.ts +3 -0
  238. package/lib/components/suggestions/suggestions.module.d.ts +8 -0
  239. package/lib/components/tab-group/tab/tab.component.d.ts +3 -0
  240. package/lib/components/tab-group/tab-group.component.d.ts +3 -0
  241. package/lib/components/tab-group/tab-group.module.d.ts +9 -0
  242. package/lib/components/table/column/column.component.d.ts +3 -0
  243. package/lib/components/table/column-group/column-group.component.d.ts +3 -0
  244. package/lib/components/table/services/table.service.d.ts +3 -0
  245. package/lib/components/table/table-body/table-body.component.d.ts +3 -0
  246. package/lib/components/table/table-foot/table-foot.component.d.ts +3 -0
  247. package/lib/components/table/table-head/table-head.component.d.ts +3 -0
  248. package/lib/components/table/table-row/table-data/table-data.component.d.ts +3 -0
  249. package/lib/components/table/table-row/table-header/table-header.component.d.ts +3 -0
  250. package/lib/components/table/table-row/table-row.component.d.ts +3 -0
  251. package/lib/components/table/table.component.d.ts +3 -0
  252. package/lib/components/table/table.module.d.ts +15 -0
  253. package/lib/components/textarea/textarea.component.d.ts +5 -2
  254. package/lib/components/textarea/textarea.module.d.ts +8 -0
  255. package/lib/components/toggle/toggle.component.d.ts +6 -3
  256. package/lib/components/toggle/toggle.module.d.ts +9 -0
  257. package/lib/components/trip-summary/trip-summary.component.d.ts +3 -0
  258. package/lib/components/trip-summary/trip-summary.module.d.ts +10 -0
  259. package/lib/components/weather-icon/weather-icon.component.d.ts +3 -0
  260. package/lib/components/weather-icon/weather-icon.module.d.ts +7 -0
  261. package/lib/core/directives/nas-class/nas-class.directive.d.ts +3 -0
  262. package/lib/core/directives/nas-class/nas-class.module.d.ts +6 -0
  263. package/lib/core/services/abandoned-basket/abandoned-basket.service.d.ts +3 -0
  264. package/lib/core/services/animate-helper/animate-helper.service.d.ts +3 -0
  265. package/lib/core/services/bem-helper/bem-helper.service.d.ts +3 -0
  266. package/lib/core/services/date/date-helper.service.d.ts +3 -0
  267. package/lib/core/services/device/device-helper.service.d.ts +3 -0
  268. package/lib/core/services/geolocation/geolocation.service.d.ts +3 -0
  269. package/lib/core/services/language/language-helper.service.d.ts +3 -0
  270. package/lib/core/services/sort/sort.service.d.ts +3 -0
  271. package/lib/core/services/viewport/viewport.service.d.ts +3 -0
  272. package/lib/services/get-position.service.d.ts +3 -0
  273. package/package.json +23 -11
  274. package/styles/2__generic/_fonts.scss +32 -61
  275. package/bundles/norwegian-core-components.umd.js +0 -12203
  276. package/bundles/norwegian-core-components.umd.js.map +0 -1
  277. package/esm2015/lib/components/accordion/accordion.component.js +0 -130
  278. package/esm2015/lib/components/accordion/accordion.module.js +0 -15
  279. package/esm2015/lib/components/airport-select/airport-select-dropdown/airport-select-dropdown.component.js +0 -583
  280. package/esm2015/lib/components/airport-select/airport-select.component.js +0 -400
  281. package/esm2015/lib/components/airport-select/airport-select.module.js +0 -27
  282. package/esm2015/lib/components/airport-select/services/airport-select-dropdown.service.js +0 -34
  283. package/esm2015/lib/components/airport-select/services/airport-select.service.js +0 -37
  284. package/esm2015/lib/components/autocomplete/autocomplete.component.js +0 -265
  285. package/esm2015/lib/components/autocomplete/autocomplete.module.js +0 -26
  286. package/esm2015/lib/components/backdrop/backdrop.component.js +0 -54
  287. package/esm2015/lib/components/backdrop/backdrop.module.js +0 -17
  288. package/esm2015/lib/components/box/box.component.js +0 -61
  289. package/esm2015/lib/components/box/box.module.js +0 -14
  290. package/esm2015/lib/components/button/button.component.js +0 -140
  291. package/esm2015/lib/components/button/button.module.js +0 -15
  292. package/esm2015/lib/components/checkbox/checkbox.component.js +0 -127
  293. package/esm2015/lib/components/checkbox/checkbox.module.js +0 -15
  294. package/esm2015/lib/components/chip/chip.component.js +0 -50
  295. package/esm2015/lib/components/chip/chip.module.js +0 -17
  296. package/esm2015/lib/components/container/container.component.js +0 -47
  297. package/esm2015/lib/components/container/container.module.js +0 -14
  298. package/esm2015/lib/components/continue/continue.component.js +0 -173
  299. package/esm2015/lib/components/continue/continue.module.js +0 -23
  300. package/esm2015/lib/components/cover/cover.component.js +0 -61
  301. package/esm2015/lib/components/cover/cover.module.js +0 -16
  302. package/esm2015/lib/components/datepicker/calendar/calendar.component.js +0 -560
  303. package/esm2015/lib/components/datepicker/datepicker.component.js +0 -515
  304. package/esm2015/lib/components/datepicker/datepicker.module.js +0 -34
  305. package/esm2015/lib/components/datepicker/services/calendar.service.js +0 -217
  306. package/esm2015/lib/components/datepicker-combo/datepicker-combo.component.js +0 -317
  307. package/esm2015/lib/components/datepicker-combo/datepicker-combo.module.js +0 -22
  308. package/esm2015/lib/components/divider/divider.component.js +0 -53
  309. package/esm2015/lib/components/divider/divider.module.js +0 -15
  310. package/esm2015/lib/components/dropdown/dropdown.component.js +0 -150
  311. package/esm2015/lib/components/dropdown/dropdown.module.js +0 -21
  312. package/esm2015/lib/components/filter/filter.component.js +0 -1122
  313. package/esm2015/lib/components/filter/filter.module.js +0 -44
  314. package/esm2015/lib/components/grid/col/col.component.js +0 -49
  315. package/esm2015/lib/components/grid/grid.component.js +0 -63
  316. package/esm2015/lib/components/grid/grid.module.js +0 -15
  317. package/esm2015/lib/components/icon/icon.component.js +0 -42
  318. package/esm2015/lib/components/icon/icon.module.js +0 -17
  319. package/esm2015/lib/components/icon-list/icon-list.component.js +0 -46
  320. package/esm2015/lib/components/icon-list/icon-list.module.js +0 -15
  321. package/esm2015/lib/components/info/info.component.js +0 -94
  322. package/esm2015/lib/components/info/info.module.js +0 -23
  323. package/esm2015/lib/components/input/input.component.js +0 -148
  324. package/esm2015/lib/components/input/input.module.js +0 -16
  325. package/esm2015/lib/components/journey/journey.component.js +0 -122
  326. package/esm2015/lib/components/journey/journey.module.js +0 -19
  327. package/esm2015/lib/components/journey-availability/journey-availability.component.js +0 -125
  328. package/esm2015/lib/components/journey-availability/journey-availability.module.js +0 -26
  329. package/esm2015/lib/components/journey-availability-list/journey-availability-list.component.js +0 -175
  330. package/esm2015/lib/components/journey-selection/journey-selection.component.js +0 -110
  331. package/esm2015/lib/components/journey-selection/journey-selection.module.js +0 -24
  332. package/esm2015/lib/components/journey-stopover/journey-stopover.component.js +0 -121
  333. package/esm2015/lib/components/journey-stopover/journey-stopover.module.js +0 -19
  334. package/esm2015/lib/components/list/list-item/list-item.component.js +0 -56
  335. package/esm2015/lib/components/list/list.component.js +0 -75
  336. package/esm2015/lib/components/list/list.module.js +0 -15
  337. package/esm2015/lib/components/modal/modal.component.js +0 -131
  338. package/esm2015/lib/components/modal/modal.module.js +0 -25
  339. package/esm2015/lib/components/number-field/number-field.component.js +0 -118
  340. package/esm2015/lib/components/number-field/number-field.module.js +0 -24
  341. package/esm2015/lib/components/page-footer/page-footer.component.js +0 -49
  342. package/esm2015/lib/components/page-footer/page-footer.module.js +0 -16
  343. package/esm2015/lib/components/page-header/hamburger/hamburger.component.js +0 -24
  344. package/esm2015/lib/components/page-header/page-header.component.js +0 -126
  345. package/esm2015/lib/components/page-header/page-header.module.js +0 -18
  346. package/esm2015/lib/components/page-header/search/search.component.js +0 -47
  347. package/esm2015/lib/components/passenger-select/passenger-select.component.js +0 -207
  348. package/esm2015/lib/components/passenger-select/passenger-select.module.js +0 -19
  349. package/esm2015/lib/components/phone-number/phone-number.component.js +0 -115
  350. package/esm2015/lib/components/phone-number/phone-number.module.js +0 -27
  351. package/esm2015/lib/components/premium-toggle/premium-toggle.component.js +0 -66
  352. package/esm2015/lib/components/premium-toggle/premium-toggle.module.js +0 -19
  353. package/esm2015/lib/components/radio/radio.component.js +0 -79
  354. package/esm2015/lib/components/radio/radio.module.js +0 -15
  355. package/esm2015/lib/components/select/optgroup/optgroup.component.js +0 -31
  356. package/esm2015/lib/components/select/option/option.component.js +0 -29
  357. package/esm2015/lib/components/select/select.component.js +0 -325
  358. package/esm2015/lib/components/select/select.module.js +0 -21
  359. package/esm2015/lib/components/simple-list/simple-list.component.js +0 -42
  360. package/esm2015/lib/components/simple-list/simple-list.module.js +0 -14
  361. package/esm2015/lib/components/slide-toggle/slide-toggle.component.js +0 -105
  362. package/esm2015/lib/components/slide-toggle/slide-toggle.module.js +0 -20
  363. package/esm2015/lib/components/slider/slider.component.js +0 -475
  364. package/esm2015/lib/components/slider/slider.module.js +0 -19
  365. package/esm2015/lib/components/sort/sort.component.js +0 -87
  366. package/esm2015/lib/components/sort/sort.module.js +0 -23
  367. package/esm2015/lib/components/spinner/spinner.component.js +0 -109
  368. package/esm2015/lib/components/spinner/spinner.module.js +0 -14
  369. package/esm2015/lib/components/subsidy-discount/subsidy-discount.component.js +0 -101
  370. package/esm2015/lib/components/subsidy-discount/subsidy-discount.module.js +0 -23
  371. package/esm2015/lib/components/suggestions/suggestions.component.js +0 -40
  372. package/esm2015/lib/components/suggestions/suggestions.module.js +0 -19
  373. package/esm2015/lib/components/tab-group/tab/tab.component.js +0 -123
  374. package/esm2015/lib/components/tab-group/tab-group.component.js +0 -85
  375. package/esm2015/lib/components/tab-group/tab-group.module.js +0 -20
  376. package/esm2015/lib/components/table/column/column.component.js +0 -17
  377. package/esm2015/lib/components/table/column-group/column-group.component.js +0 -34
  378. package/esm2015/lib/components/table/services/table.service.js +0 -20
  379. package/esm2015/lib/components/table/table-body/table-body.component.js +0 -27
  380. package/esm2015/lib/components/table/table-foot/table-foot.component.js +0 -27
  381. package/esm2015/lib/components/table/table-head/table-head.component.js +0 -27
  382. package/esm2015/lib/components/table/table-row/table-data/table-data.component.js +0 -15
  383. package/esm2015/lib/components/table/table-row/table-header/table-header.component.js +0 -15
  384. package/esm2015/lib/components/table/table-row/table-row.component.js +0 -27
  385. package/esm2015/lib/components/table/table.component.js +0 -29
  386. package/esm2015/lib/components/table/table.module.js +0 -45
  387. package/esm2015/lib/components/textarea/textarea.component.js +0 -73
  388. package/esm2015/lib/components/textarea/textarea.module.js +0 -20
  389. package/esm2015/lib/components/toggle/toggle.component.js +0 -86
  390. package/esm2015/lib/components/toggle/toggle.module.js +0 -22
  391. package/esm2015/lib/components/trip-summary/trip-summary.component.js +0 -152
  392. package/esm2015/lib/components/trip-summary/trip-summary.module.js +0 -23
  393. package/esm2015/lib/components/weather-icon/weather-icon.component.js +0 -56
  394. package/esm2015/lib/components/weather-icon/weather-icon.module.js +0 -14
  395. package/esm2015/lib/core/base/nas-component.base.js +0 -48
  396. package/esm2015/lib/core/directives/nas-class/nas-class.directive.js +0 -75
  397. package/esm2015/lib/core/directives/nas-class/nas-class.module.js +0 -17
  398. package/esm2015/lib/core/services/abandoned-basket/abandoned-basket.service.js +0 -55
  399. package/esm2015/lib/core/services/animate-helper/animate-helper.service.js +0 -47
  400. package/esm2015/lib/core/services/bem-helper/bem-helper.service.js +0 -41
  401. package/esm2015/lib/core/services/date/date-helper.service.js +0 -196
  402. package/esm2015/lib/core/services/device/device-helper.service.js +0 -43
  403. package/esm2015/lib/core/services/geolocation/geolocation.service.js +0 -60
  404. package/esm2015/lib/core/services/language/language-helper.service.js +0 -162
  405. package/esm2015/lib/core/services/sort/sort.service.js +0 -19
  406. package/esm2015/lib/core/services/viewport/viewport.service.js +0 -29
  407. package/esm2015/lib/services/get-position.service.js +0 -21
  408. package/esm2015/norwegian-core-components.js +0 -12
  409. package/fesm2015/norwegian-core-components.js +0 -10860
  410. package/fesm2015/norwegian-core-components.js.map +0 -1
  411. package/norwegian-core-components.d.ts +0 -11
  412. package/norwegian-core-components.metadata.json +0 -1
  413. /package/{esm2015/lib/components/accordion/index.js → esm2020/lib/components/accordion/index.mjs} +0 -0
  414. /package/{esm2015/lib/components/airport-select/index.js → esm2020/lib/components/airport-select/index.mjs} +0 -0
  415. /package/{esm2015/lib/components/airport-select/models/airport.model.js → esm2020/lib/components/airport-select/models/airport.model.mjs} +0 -0
  416. /package/{esm2015/lib/components/airport-select/models/results-labels.model.js → esm2020/lib/components/airport-select/models/results-labels.model.mjs} +0 -0
  417. /package/{esm2015/lib/components/autocomplete/index.js → esm2020/lib/components/autocomplete/index.mjs} +0 -0
  418. /package/{esm2015/lib/components/autocomplete/models/autocomplete.model.js → esm2020/lib/components/autocomplete/models/autocomplete.model.mjs} +0 -0
  419. /package/{esm2015/lib/components/backdrop/index.js → esm2020/lib/components/backdrop/index.mjs} +0 -0
  420. /package/{esm2015/lib/components/box/index.js → esm2020/lib/components/box/index.mjs} +0 -0
  421. /package/{esm2015/lib/components/button/index.js → esm2020/lib/components/button/index.mjs} +0 -0
  422. /package/{esm2015/lib/components/checkbox/index.js → esm2020/lib/components/checkbox/index.mjs} +0 -0
  423. /package/{esm2015/lib/components/chip/index.js → esm2020/lib/components/chip/index.mjs} +0 -0
  424. /package/{esm2015/lib/components/container/index.js → esm2020/lib/components/container/index.mjs} +0 -0
  425. /package/{esm2015/lib/components/continue/index.js → esm2020/lib/components/continue/index.mjs} +0 -0
  426. /package/{esm2015/lib/components/cover/index.js → esm2020/lib/components/cover/index.mjs} +0 -0
  427. /package/{esm2015/lib/components/datepicker/calendar/calendar-date.model.js → esm2020/lib/components/datepicker/calendar/calendar-date.model.mjs} +0 -0
  428. /package/{esm2015/lib/components/datepicker/calendar/enums/week-start.enum.js → esm2020/lib/components/datepicker/calendar/enums/week-start.enum.mjs} +0 -0
  429. /package/{esm2015/lib/components/datepicker/calendar/models/day.model.js → esm2020/lib/components/datepicker/calendar/models/day.model.mjs} +0 -0
  430. /package/{esm2015/lib/components/datepicker/calendar/models/select-option.model.js → esm2020/lib/components/datepicker/calendar/models/select-option.model.mjs} +0 -0
  431. /package/{esm2015/lib/components/datepicker/calendar/models/week.model.js → esm2020/lib/components/datepicker/calendar/models/week.model.mjs} +0 -0
  432. /package/{esm2015/lib/components/datepicker/index.js → esm2020/lib/components/datepicker/index.mjs} +0 -0
  433. /package/{esm2015/lib/components/datepicker-combo/index.js → esm2020/lib/components/datepicker-combo/index.mjs} +0 -0
  434. /package/{esm2015/lib/components/divider/index.js → esm2020/lib/components/divider/index.mjs} +0 -0
  435. /package/{esm2015/lib/components/dropdown/index.js → esm2020/lib/components/dropdown/index.mjs} +0 -0
  436. /package/{esm2015/lib/components/filter/enums/trip-type.enum.js → esm2020/lib/components/filter/enums/trip-type.enum.mjs} +0 -0
  437. /package/{esm2015/lib/components/filter/index.js → esm2020/lib/components/filter/index.mjs} +0 -0
  438. /package/{esm2015/lib/components/grid/index.js → esm2020/lib/components/grid/index.mjs} +0 -0
  439. /package/{esm2015/lib/components/icon/index.js → esm2020/lib/components/icon/index.mjs} +0 -0
  440. /package/{esm2015/lib/components/icon-list/icon-list.model.js → esm2020/lib/components/icon-list/icon-list.model.mjs} +0 -0
  441. /package/{esm2015/lib/components/icon-list/index.js → esm2020/lib/components/icon-list/index.mjs} +0 -0
  442. /package/{esm2015/lib/components/index.js → esm2020/lib/components/index.mjs} +0 -0
  443. /package/{esm2015/lib/components/info/index.js → esm2020/lib/components/info/index.mjs} +0 -0
  444. /package/{esm2015/lib/components/info/models/info.model.js → esm2020/lib/components/info/models/info.model.mjs} +0 -0
  445. /package/{esm2015/lib/components/input/index.js → esm2020/lib/components/input/index.mjs} +0 -0
  446. /package/{esm2015/lib/components/journey/index.js → esm2020/lib/components/journey/index.mjs} +0 -0
  447. /package/{esm2015/lib/components/journey/models/journey-flight.model.js → esm2020/lib/components/journey/models/journey-flight.model.mjs} +0 -0
  448. /package/{esm2015/lib/components/journey/models/journey.model.js → esm2020/lib/components/journey/models/journey.model.mjs} +0 -0
  449. /package/{esm2015/lib/components/journey-availability/index.js → esm2020/lib/components/journey-availability/index.mjs} +0 -0
  450. /package/{esm2015/lib/components/journey-availability-list/enums/availability-sort-option.enum.js → esm2020/lib/components/journey-availability-list/enums/availability-sort-option.enum.mjs} +0 -0
  451. /package/{esm2015/lib/components/journey-availability-list/index.js → esm2020/lib/components/journey-availability-list/index.mjs} +0 -0
  452. /package/{esm2015/lib/components/journey-selection/index.js → esm2020/lib/components/journey-selection/index.mjs} +0 -0
  453. /package/{esm2015/lib/components/journey-selection/models/journey-selection-collapsed.model.js → esm2020/lib/components/journey-selection/models/journey-selection-collapsed.model.mjs} +0 -0
  454. /package/{esm2015/lib/components/journey-selection/models/journey-selection-common.model.js → esm2020/lib/components/journey-selection/models/journey-selection-common.model.mjs} +0 -0
  455. /package/{esm2015/lib/components/journey-selection/models/journey-selection-expanded.model.js → esm2020/lib/components/journey-selection/models/journey-selection-expanded.model.mjs} +0 -0
  456. /package/{esm2015/lib/components/journey-selection/models/journey-selection.model.js → esm2020/lib/components/journey-selection/models/journey-selection.model.mjs} +0 -0
  457. /package/{esm2015/lib/components/journey-stopover/index.js → esm2020/lib/components/journey-stopover/index.mjs} +0 -0
  458. /package/{esm2015/lib/components/journey-stopover/models/stopover-time.model.js → esm2020/lib/components/journey-stopover/models/stopover-time.model.mjs} +0 -0
  459. /package/{esm2015/lib/components/list/index.js → esm2020/lib/components/list/index.mjs} +0 -0
  460. /package/{esm2015/lib/components/modal/index.js → esm2020/lib/components/modal/index.mjs} +0 -0
  461. /package/{esm2015/lib/components/number-field/index.js → esm2020/lib/components/number-field/index.mjs} +0 -0
  462. /package/{esm2015/lib/components/page-footer/index.js → esm2020/lib/components/page-footer/index.mjs} +0 -0
  463. /package/{esm2015/lib/components/page-header/index.js → esm2020/lib/components/page-header/index.mjs} +0 -0
  464. /package/{esm2015/lib/components/passenger-select/enums/passenger-type.enum.js → esm2020/lib/components/passenger-select/enums/passenger-type.enum.mjs} +0 -0
  465. /package/{esm2015/lib/components/passenger-select/index.js → esm2020/lib/components/passenger-select/index.mjs} +0 -0
  466. /package/{esm2015/lib/components/phone-number/index.js → esm2020/lib/components/phone-number/index.mjs} +0 -0
  467. /package/{esm2015/lib/components/premium-toggle/index.js → esm2020/lib/components/premium-toggle/index.mjs} +0 -0
  468. /package/{esm2015/lib/components/radio/index.js → esm2020/lib/components/radio/index.mjs} +0 -0
  469. /package/{esm2015/lib/components/select/index.js → esm2020/lib/components/select/index.mjs} +0 -0
  470. /package/{esm2015/lib/components/select/models/select-option.model.js → esm2020/lib/components/select/models/select-option.model.mjs} +0 -0
  471. /package/{esm2015/lib/components/simple-list/index.js → esm2020/lib/components/simple-list/index.mjs} +0 -0
  472. /package/{esm2015/lib/components/slide-toggle/index.js → esm2020/lib/components/slide-toggle/index.mjs} +0 -0
  473. /package/{esm2015/lib/components/slider/index.js → esm2020/lib/components/slider/index.mjs} +0 -0
  474. /package/{esm2015/lib/components/sort/index.js → esm2020/lib/components/sort/index.mjs} +0 -0
  475. /package/{esm2015/lib/components/spinner/index.js → esm2020/lib/components/spinner/index.mjs} +0 -0
  476. /package/{esm2015/lib/components/subsidy-discount/index.js → esm2020/lib/components/subsidy-discount/index.mjs} +0 -0
  477. /package/{esm2015/lib/components/subsidy-discount/models/subsidy-discount.model.js → esm2020/lib/components/subsidy-discount/models/subsidy-discount.model.mjs} +0 -0
  478. /package/{esm2015/lib/components/suggestions/index.js → esm2020/lib/components/suggestions/index.mjs} +0 -0
  479. /package/{esm2015/lib/components/tab-group/index.js → esm2020/lib/components/tab-group/index.mjs} +0 -0
  480. /package/{esm2015/lib/components/table/index.js → esm2020/lib/components/table/index.mjs} +0 -0
  481. /package/{esm2015/lib/components/textarea/index.js → esm2020/lib/components/textarea/index.mjs} +0 -0
  482. /package/{esm2015/lib/components/toggle/index.js → esm2020/lib/components/toggle/index.mjs} +0 -0
  483. /package/{esm2015/lib/components/toggle/models/options.model.js → esm2020/lib/components/toggle/models/options.model.mjs} +0 -0
  484. /package/{esm2015/lib/components/trip-summary/index.js → esm2020/lib/components/trip-summary/index.mjs} +0 -0
  485. /package/{esm2015/lib/components/weather-icon/index.js → esm2020/lib/components/weather-icon/index.mjs} +0 -0
  486. /package/{esm2015/lib/core/decorators/debounce.decorator.js → esm2020/lib/core/decorators/debounce.decorator.mjs} +0 -0
  487. /package/{esm2015/lib/core/directives/index.js → esm2020/lib/core/directives/index.mjs} +0 -0
  488. /package/{esm2015/lib/core/index.js → esm2020/lib/core/index.mjs} +0 -0
  489. /package/{esm2015/lib/core/models/abandoned-basket-item.model.js → esm2020/lib/core/models/abandoned-basket-item.model.mjs} +0 -0
  490. /package/{esm2015/lib/core/models/animate.model.js → esm2020/lib/core/models/animate.model.mjs} +0 -0
  491. /package/{esm2015/lib/core/models/class.model.js → esm2020/lib/core/models/class.model.mjs} +0 -0
  492. /package/{esm2015/lib/core/models/index.js → esm2020/lib/core/models/index.mjs} +0 -0
  493. /package/{esm2015/lib/core/models/link.model.js → esm2020/lib/core/models/link.model.mjs} +0 -0
  494. /package/{esm2015/lib/core/models/position.model.js → esm2020/lib/core/models/position.model.mjs} +0 -0
  495. /package/{esm2015/lib/core/models/utc-date.model.js → esm2020/lib/core/models/utc-date.model.mjs} +0 -0
  496. /package/{esm2015/lib/core/services/date/date-compare.enum.js → esm2020/lib/core/services/date/date-compare.enum.mjs} +0 -0
  497. /package/{esm2015/lib/core/services/geolocation/geolocation-state.enum.js → esm2020/lib/core/services/geolocation/geolocation-state.enum.mjs} +0 -0
  498. /package/{esm2015/lib/core/services/index.js → esm2020/lib/core/services/index.mjs} +0 -0
  499. /package/{esm2015/lib/index.js → esm2020/lib/index.mjs} +0 -0
  500. /package/{esm2015/lib/services/index.js → esm2020/lib/services/index.mjs} +0 -0
  501. /package/{esm2015/lib/shared/index.js → esm2020/lib/shared/index.mjs} +0 -0
  502. /package/{esm2015/lib/shared/models/flight-details.js → esm2020/lib/shared/models/flight-details.mjs} +0 -0
  503. /package/{esm2015/lib/shared/models/index.js → esm2020/lib/shared/models/index.mjs} +0 -0
  504. /package/{esm2015/lib/shared/models/journey-availability-sort.model.js → esm2020/lib/shared/models/journey-availability-sort.model.mjs} +0 -0
  505. /package/{esm2015/lib/shared/models/journey-availability.model.js → esm2020/lib/shared/models/journey-availability.model.mjs} +0 -0
  506. /package/{esm2015/lib/shared/models/journey-details.model.js → esm2020/lib/shared/models/journey-details.model.mjs} +0 -0
  507. /package/{esm2015/lib/shared/models/journey-duration.model.js → esm2020/lib/shared/models/journey-duration.model.mjs} +0 -0
  508. /package/{esm2015/lib/shared/models/journey-stopover.model.js → esm2020/lib/shared/models/journey-stopover.model.mjs} +0 -0
  509. /package/{esm2015/lib/shared/models/journey-transit-info.model.js → esm2020/lib/shared/models/journey-transit-info.model.mjs} +0 -0
  510. /package/{esm2015/lib/shared/models/operating-carrier.model.js → esm2020/lib/shared/models/operating-carrier.model.mjs} +0 -0
  511. /package/{esm2015/lib/shared/models/sort-option.model.js → esm2020/lib/shared/models/sort-option.model.mjs} +0 -0
  512. /package/{esm2015/lib/shared/models/sort.model.js → esm2020/lib/shared/models/sort.model.mjs} +0 -0
  513. /package/{esm2015/lib/shared/models/trip-item-details.model.js → esm2020/lib/shared/models/trip-item-details.model.mjs} +0 -0
  514. /package/{esm2015/lib/shared/models/trip-summary-details.model.js → esm2020/lib/shared/models/trip-summary-details.model.mjs} +0 -0
  515. /package/{esm2015/lib/shared/models/trip-summary.model.js → esm2020/lib/shared/models/trip-summary.model.mjs} +0 -0
  516. /package/{esm2015/public_api.js → esm2020/public_api.mjs} +0 -0
@@ -1,217 +0,0 @@
1
- import { DatePipe } from '@angular/common';
2
- import { Injectable } from '@angular/core';
3
- import { UtcDate } from '../../../core/models/utc-date.model';
4
- import { DateHelper } from '../../../core/services/date/date-helper.service';
5
- import { WeekStart } from '../calendar/enums/week-start.enum';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/common";
8
- import * as i2 from "../../../core/services/index";
9
- export class CalendarService {
10
- constructor(datePipe, dateService) {
11
- this.datePipe = datePipe;
12
- this.dateService = dateService;
13
- }
14
- getMonthNames(locale) {
15
- const month = new Date();
16
- month.setMonth(0);
17
- month.setDate(1);
18
- const monthNames = new Array();
19
- for (let index = 0; index < 12; index++) {
20
- const currentMonth = new Date(Date.UTC(month.getFullYear(), month.getMonth() + index, 1));
21
- monthNames.push(this.datePipe.transform(currentMonth, 'LLLL', 'UTC', locale));
22
- }
23
- return monthNames;
24
- }
25
- getWeekdays(weekStart, locale) {
26
- const weekday = this.getMonday();
27
- const weekdays = new Array();
28
- for (let index = 0; index < 7; index++) {
29
- const currentDay = new Date(Date.UTC(weekday.getFullYear(), weekday.getMonth(), weekday.getDate() + index));
30
- weekdays.push(this.datePipe.transform(currentDay, 'EEE', 'UTC', locale));
31
- }
32
- if (weekStart !== WeekStart.monday) {
33
- const sunday = weekdays.pop();
34
- weekdays.unshift(sunday);
35
- }
36
- return weekdays;
37
- }
38
- updateAvailableDaysWithSelectedDate(availableDays, selectedDate) {
39
- if (!availableDays || !selectedDate) {
40
- return;
41
- }
42
- availableDays = availableDays.map((x) => {
43
- if (!this.dateService.isSameDate(this.dateService.utcDate(x.date), selectedDate)) {
44
- return x;
45
- }
46
- if (x.isDisabled) {
47
- selectedDate.setDate(selectedDate.date + 1);
48
- return x;
49
- }
50
- x.isSelected = true;
51
- return x;
52
- });
53
- }
54
- setActiveDate(date, weeks) {
55
- if (!weeks || weeks.length <= 0) {
56
- return;
57
- }
58
- for (const day of this.getDays(weeks)) {
59
- if (!day) {
60
- continue;
61
- }
62
- day.isActive = false;
63
- const utcDate = this.dateService.utcDate(day.date);
64
- if (this.dateService.isSameDate(utcDate, date)) {
65
- day.isActive = true;
66
- }
67
- }
68
- }
69
- getDays(weeks) {
70
- const flatten = new Array();
71
- weeks.forEach(x => x.days.forEach(d => flatten.push(d)));
72
- return flatten;
73
- }
74
- getWeeks(availableDays, weekStart) {
75
- if (!availableDays) {
76
- return;
77
- }
78
- const sortedDays = availableDays
79
- .sort((a, b) => this.dateService
80
- .date(this.dateService.utcDate(a.date)).getTime() - this.dateService.date(this.dateService.utcDate(b.date)).getTime());
81
- const weeks = new Array();
82
- let index = 0;
83
- for (let week = 0; week < 6; week++) {
84
- const days = new Array();
85
- for (let day = 0; day < 7; day++) {
86
- const currentDayModel = sortedDays[0];
87
- if (currentDayModel) {
88
- const currentDate = this.dateService.utcDate(currentDayModel.date);
89
- currentDayModel.isEmpty = currentDayModel.isAvailable;
90
- let currentDay = currentDate.getDay();
91
- if (weekStart === WeekStart.monday) {
92
- if (currentDay === 0) {
93
- currentDay = 6;
94
- }
95
- else {
96
- currentDay -= 1;
97
- }
98
- }
99
- if (currentDay === day) {
100
- index = index + 1;
101
- currentDayModel.index = index;
102
- days.push(currentDayModel);
103
- sortedDays.shift();
104
- }
105
- else {
106
- days.push(null);
107
- }
108
- }
109
- }
110
- const firstDayInWeek = days.find(x => x != null);
111
- let firstDateDateInWeek;
112
- if (firstDayInWeek) {
113
- const utcDate = this.dateService.utcDate(firstDayInWeek.date);
114
- firstDateDateInWeek = new Date(utcDate.year, utcDate.month, utcDate.date);
115
- }
116
- if (!days.every(x => x === null)) {
117
- weeks.push({
118
- days: days,
119
- weekNumber: this.dateService.getWeekNumber(firstDateDateInWeek)
120
- });
121
- }
122
- }
123
- return weeks;
124
- }
125
- getCurrentMonth(date) {
126
- let currentMonth;
127
- if (date) {
128
- currentMonth = this.dateService.utcDate(new Date(Date.UTC(date.year, date.month, 1)));
129
- }
130
- else {
131
- currentMonth = this.dateService.utcDate();
132
- }
133
- return currentMonth;
134
- }
135
- getMonthsSelectOptions(disablePastSelection, maxMonthIndex, monthNames) {
136
- const months = new Array();
137
- if (disablePastSelection === false) {
138
- return months;
139
- }
140
- for (let index = 0; index < maxMonthIndex; index++) {
141
- const date = this.dateService.utcDate().toDate();
142
- date.setUTCDate(1);
143
- date.setUTCMonth(date.getUTCMonth() + index);
144
- const selectOption = {
145
- title: `${monthNames[date.getUTCMonth()]} - ${date.getUTCFullYear()}`,
146
- value: date.toISOString()
147
- };
148
- months.push(selectOption);
149
- }
150
- return months;
151
- }
152
- getSelectedMonth(months, currentMonth) {
153
- if (!months) {
154
- return null;
155
- }
156
- const selected = months.find(x => {
157
- const date = this.dateService.utcDate(x.value);
158
- date.setDate(1);
159
- const month = new UtcDate(currentMonth.year, currentMonth.month, 1);
160
- return this.dateService.isSameMonth(date, month);
161
- });
162
- return selected;
163
- }
164
- getAvailableDays(currentMonth, availableDates, availability, disablePastSelection, lowerLimitDate, activeDate, selectedDate) {
165
- const firstDateInThisMonth = new Date();
166
- firstDateInThisMonth.setUTCDate(1);
167
- firstDateInThisMonth.setUTCHours(0, 0, 0, 0);
168
- const currentDate = currentMonth
169
- ? new Date(Date.UTC(currentMonth.year, currentMonth.month, 1))
170
- : firstDateInThisMonth;
171
- const currentDateMonth = currentDate.getUTCMonth();
172
- const days = new Array();
173
- while (currentDate.getUTCMonth() === currentDateMonth) {
174
- const utcDate = this.dateService.utcDate(currentDate);
175
- const day = {
176
- date: this.dateService.date(utcDate).toISOString(),
177
- isAvailable: this.isAvailable(utcDate, availableDates, availability, disablePastSelection),
178
- isDisabled: this.dateService.isLessThan(utcDate, lowerLimitDate) ? true : false,
179
- isActive: this.dateService.isSameDate(this.dateService.utcDate(currentDate), activeDate)
180
- };
181
- if (selectedDate && this.dateService.isSameDate(selectedDate, utcDate) && day.isSelected || !day.isAvailable) {
182
- day.isSelected = false;
183
- }
184
- days.push(day);
185
- currentDate.setUTCDate(currentDate.getUTCDate() + 1);
186
- }
187
- return days;
188
- }
189
- isAvailable(date, availableDates, availability, disablePastSelection) {
190
- if (!availability) {
191
- return disablePastSelection && this.dateService.isInThePast(date, false, true, true) ? false : true;
192
- }
193
- if ((disablePastSelection && this.dateService.isInThePast(date, false, true, true))
194
- || !availableDates
195
- || !availableDates.some(x => this.dateService.isSameDate(x, date))) {
196
- return false;
197
- }
198
- return true;
199
- }
200
- getMonday() {
201
- const date = new Date();
202
- const day = date.getDay();
203
- const diff = date.getDate() - day + (day === 0 ? -6 : 1);
204
- return new Date(date.setDate(diff));
205
- }
206
- }
207
- CalendarService.ɵprov = i0.ɵɵdefineInjectable({ factory: function CalendarService_Factory() { return new CalendarService(i0.ɵɵinject(i1.DatePipe), i0.ɵɵinject(i2.DateHelper)); }, token: CalendarService, providedIn: "root" });
208
- CalendarService.decorators = [
209
- { type: Injectable, args: [{
210
- providedIn: 'root'
211
- },] }
212
- ];
213
- CalendarService.ctorParameters = () => [
214
- { type: DatePipe },
215
- { type: DateHelper }
216
- ];
217
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvZGF0ZXBpY2tlci9zZXJ2aWNlcy9jYWxlbmRhci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saURBQWlELENBQUM7QUFFN0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7O0FBTzlELE1BQU0sT0FBTyxlQUFlO0lBRTFCLFlBQW9CLFFBQWtCLEVBQVUsV0FBdUI7UUFBbkQsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFZO0lBQUksQ0FBQztJQUU1RSxhQUFhLENBQUMsTUFBZTtRQUMzQixNQUFNLEtBQUssR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3pCLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVqQixNQUFNLFVBQVUsR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO1FBRXZDLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDdkMsTUFBTSxZQUFZLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxHQUFHLEtBQUssRUFBRSxD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Q0FBQyxDQUFDLENBQUM7UUFDekQsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdEMsQ0FBQzs7OztZQWhRRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQVhRLFFBQVE7WUFHUixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVXRjRGF0ZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvbW9kZWxzL3V0Yy1kYXRlLm1vZGVsJztcbmltcG9ydCB7IERhdGVIZWxwZXIgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL2RhdGUvZGF0ZS1oZWxwZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTZWxlY3RPcHRpb25Nb2RlbCB9IGZyb20gJy4uLy4uL3NlbGVjdC9tb2RlbHMvc2VsZWN0LW9wdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBXZWVrU3RhcnQgfSBmcm9tICcuLi9jYWxlbmRhci9lbnVtcy93ZWVrLXN0YXJ0LmVudW0nO1xuaW1wb3J0IHsgRGF5TW9kZWwgfSBmcm9tICcuLi9jYWxlbmRhci9tb2RlbHMvZGF5Lm1vZGVsJztcbmltcG9ydCB7IFdlZWtNb2RlbCB9IGZyb20gJy4uL2NhbGVuZGFyL21vZGVscy93ZWVrLm1vZGVsJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGVQaXBlOiBEYXRlUGlwZSwgcHJpdmF0ZSBkYXRlU2VydmljZTogRGF0ZUhlbHBlcikgeyB9XG5cbiAgZ2V0TW9udGhOYW1lcyhsb2NhbGU/OiBzdHJpbmcpOiBBcnJheTxzdHJpbmc+IHtcbiAgICBjb25zdCBtb250aCA9IG5ldyBEYXRlKCk7XG4gICAgbW9udGguc2V0TW9udGgoMCk7XG4gICAgbW9udGguc2V0RGF0ZSgxKTtcblxuICAgIGNvbnN0IG1vbnRoTmFtZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IDEyOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBjdXJyZW50TW9udGggPSBuZXcgRGF0ZShEYXRlLlVUQyhtb250aC5nZXRGdWxsWWVhcigpLCBtb250aC5nZXRNb250aCgpICsgaW5kZXgsIDEpKTtcbiAgICAgIG1vbnRoTmFtZXMucHVzaCh0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShjdXJyZW50TW9udGgsICdMTExMJywgJ1VUQycsIGxvY2FsZSkpO1xuICAgIH1cblxuICAgIHJldHVybiBtb250aE5hbWVzO1xuICB9XG5cbiAgZ2V0V2Vla2RheXMod2Vla1N0YXJ0OiBXZWVrU3RhcnQsIGxvY2FsZT86IHN0cmluZyk6IEFycmF5PHN0cmluZz4ge1xuICAgIGNvbnN0IHdlZWtkYXkgPSB0aGlzLmdldE1vbmRheSgpO1xuXG4gICAgY29uc3Qgd2Vla2RheXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IDc7IGluZGV4KyspIHtcbiAgICAgIGNvbnN0IGN1cnJlbnREYXkgPSBuZXcgRGF0ZShEYXRlLlVUQyh3ZWVrZGF5LmdldEZ1bGxZZWFyKCksIHdlZWtkYXkuZ2V0TW9udGgoKSwgd2Vla2RheS5nZXREYXRlKCkgKyBpbmRleCkpO1xuICAgICAgd2Vla2RheXMucHVzaCh0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShjdXJyZW50RGF5LCAnRUVFJywgJ1VUQycsIGxvY2FsZSkpO1xuICAgIH1cbiAgICBpZiAod2Vla1N0YXJ0ICE9PSBXZWVrU3RhcnQubW9uZGF5KSB7XG4gICAgICBjb25zdCBzdW5kYXkgPSB3ZWVrZGF5cy5wb3AoKTtcbiAgICAgIHdlZWtkYXlzLnVuc2hpZnQoc3VuZGF5KTtcbiAgICB9XG5cbiAgICByZXR1cm4gd2Vla2RheXM7XG4gIH1cblxuICB1cGRhdGVBdmFpbGFibGVEYXlzV2l0aFNlbGVjdGVkRGF0ZShhdmFpbGFibGVEYXlzOiBBcnJheTxEYXlNb2RlbD4sIHNlbGVjdGVkRGF0ZTogVXRjRGF0ZSk6IHZvaWQge1xuICAgIGlmICghYXZhaWxhYmxlRGF5cyB8fCAhc2VsZWN0ZWREYXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXZhaWxhYmxlRGF5cyA9IGF2YWlsYWJsZURheXMubWFwKCh4OiBEYXlNb2RlbCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmRhdGVTZXJ2aWNlLmlzU2FtZURhdGUodGhpcy5kYXRlU2VydmljZS51dGNEYXRlKHguZGF0ZSksIHNlbGVjdGVkRGF0ZSkpIHtcbiAgICAgICAgcmV0dXJuIHg7XG4gICAgICB9XG5cbiAgICAgIGlmICh4LmlzRGlzYWJsZWQpIHtcbiAgICAgICAgc2VsZWN0ZWREYXRlLnNldERhdGUoc2VsZWN0ZWREYXRlLmRhdGUgKyAxKTtcbiAgICAgICAgcmV0dXJuIHg7XG4gICAgICB9XG5cbiAgICAgIHguaXNTZWxlY3RlZCA9IHRydWU7XG4gICAgICByZXR1cm4geDtcbiAgICB9KTtcbiAgfVxuXG4gIHNldEFjdGl2ZURhdGUoZGF0ZTogVXRjRGF0ZSwgd2Vla3M6IEFycmF5PFdlZWtNb2RlbD4pOiB2b2lkIHtcbiAgICBpZiAoIXdlZWtzIHx8IHdlZWtzLmxlbmd0aCA8PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBkYXkgb2YgdGhpcy5nZXREYXlzKHdlZWtzKSkge1xuICAgICAgaWYgKCFkYXkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGRheS5pc0FjdGl2ZSA9IGZhbHNlO1xuICAgICAgY29uc3QgdXRjRGF0ZSA9IHRoaXMuZGF0ZVNlcnZpY2UudXRjRGF0ZShkYXkuZGF0ZSk7XG5cbiAgICAgIGlmICh0aGlzLmRhdGVTZXJ2aWNlLmlzU2FtZURhdGUodXRjRGF0ZSwgZGF0ZSkpIHtcbiAgICAgICAgZGF5LmlzQWN0aXZlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXREYXlzKHdlZWtzOiBBcnJheTxXZWVrTW9kZWw+KTogQXJyYXk8RGF5TW9kZWw+IHtcbiAgICBjb25zdCBmbGF0dGVuID0gbmV3IEFycmF5PERheU1vZGVsPigpO1xuXG4gICAgd2Vla3MuZm9yRWFjaCh4ID0+IHguZGF5cy5mb3JFYWNoKGQgPT4gZmxhdHRlbi5wdXNoKGQpKSk7XG5cbiAgICByZXR1cm4gZmxhdHRlbjtcbiAgfVxuXG4gIGdldFdlZWtzKGF2YWlsYWJsZURheXM6IEFycmF5PERheU1vZGVsPiwgd2Vla1N0YXJ0OiBXZWVrU3RhcnQpOiBBcnJheTxXZWVrTW9kZWw+IHtcbiAgICBpZiAoIWF2YWlsYWJsZURheXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzb3J0ZWREYXlzID0gYXZhaWxhYmxlRGF5c1xuICAgICAgLnNvcnQoKGEsIGIpID0+IHRoaXMuZGF0ZVNlcnZpY2VcbiAgICAgICAgLmRhdGUodGhpcy5kYXRlU2VydmljZS51dGNEYXRlKGEuZGF0ZSkpLmdldFRpbWUoKSAtIHRoaXMuZGF0ZVNlcnZpY2UuZGF0ZSh0aGlzLmRhdGVTZXJ2aWNlLnV0Y0RhdGUoYi5kYXRlKSkuZ2V0VGltZSgpKTtcblxuICAgIGNvbnN0IHdlZWtzID0gbmV3IEFycmF5PFdlZWtNb2RlbD4oKTtcbiAgICBsZXQgaW5kZXggPSAwO1xuXG4gICAgZm9yIChsZXQgd2VlayA9IDA7IHdlZWsgPCA2OyB3ZWVrKyspIHtcbiAgICAgIGNvbnN0IGRheXMgPSBuZXcgQXJyYXk8RGF5TW9kZWw+KCk7XG5cbiAgICAgIGZvciAobGV0IGRheSA9IDA7IGRheSA8IDc7IGRheSsrKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnREYXlNb2RlbCA9IHNvcnRlZERheXNbMF07XG4gICAgICAgIGlmIChjdXJyZW50RGF5TW9kZWwpIHtcbiAgICAgICAgICBjb25zdCBjdXJyZW50RGF0ZSA9IHRoaXMuZGF0ZVNlcnZpY2UudXRjRGF0ZShjdXJyZW50RGF5TW9kZWwuZGF0ZSk7XG5cbiAgICAgICAgICBjdXJyZW50RGF5TW9kZWwuaXNFbXB0eSA9IGN1cnJlbnREYXlNb2RlbC5pc0F2YWlsYWJsZTtcblxuICAgICAgICAgIGxldCBjdXJyZW50RGF5ID0gY3VycmVudERhdGUuZ2V0RGF5KCk7XG5cbiAgICAgICAgICBpZiAod2Vla1N0YXJ0ID09PSBXZWVrU3RhcnQubW9uZGF5KSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudERheSA9PT0gMCkge1xuICAgICAgICAgICAgICBjdXJyZW50RGF5ID0gNjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGN1cnJlbnREYXkgLT0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoY3VycmVudERheSA9PT0gZGF5KSB7XG4gICAgICAgICAgICBpbmRleCA9IGluZGV4ICsgMTtcbiAgICAgICAgICAgIGN1cnJlbnREYXlNb2RlbC5pbmRleCA9IGluZGV4O1xuXG4gICAgICAgICAgICBkYXlzLnB1c2goY3VycmVudERheU1vZGVsKTtcbiAgICAgICAgICAgIHNvcnRlZERheXMuc2hpZnQoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGF5cy5wdXNoKG51bGwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBmaXJzdERheUluV2VlayA9IGRheXMuZmluZCh4ID0+IHggIT0gbnVsbCk7XG4gICAgICBsZXQgZmlyc3REYXRlRGF0ZUluV2VlazogRGF0ZTtcblxuICAgICAgaWYgKGZpcnN0RGF5SW5XZWVrKSB7XG4gICAgICAgIGNvbnN0IHV0Y0RhdGUgPSB0aGlzLmRhdGVTZXJ2aWNlLnV0Y0RhdGUoZmlyc3REYXlJbldlZWsuZGF0ZSk7XG4gICAgICAgIGZpcnN0RGF0ZURhdGVJbldlZWsgPSBuZXcgRGF0ZSh1dGNEYXRlLnllYXIsIHV0Y0RhdGUubW9udGgsIHV0Y0RhdGUuZGF0ZSk7XG4gICAgICB9XG5cbiAgICAgIGlmICghZGF5cy5ldmVyeSh4ID0+IHggPT09IG51bGwpKSB7XG4gICAgICAgIHdlZWtzLnB1c2goe1xuICAgICAgICAgIGRheXM6IGRheXMsXG4gICAgICAgICAgd2Vla051bWJlcjogdGhpcy5kYXRlU2VydmljZS5nZXRXZWVrTnVtYmVyKGZpcnN0RGF0ZURhdGVJbldlZWspXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gd2Vla3M7XG4gIH1cblxuICBnZXRDdXJyZW50TW9udGgoZGF0ZT86IFV0Y0RhdGUpOiBVdGNEYXRlIHtcbiAgICBsZXQgY3VycmVudE1vbnRoOiBVdGNEYXRlO1xuICAgIGlmIChkYXRlKSB7XG4gICAgICBjdXJyZW50TW9udGggPSB0aGlzLmRhdGVTZXJ2aWNlLnV0Y0RhdGUobmV3IERhdGUoRGF0ZS5VVEMoZGF0ZS55ZWFyLCBkYXRlLm1vbnRoLCAxKSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdXJyZW50TW9udGggPSB0aGlzLmRhdGVTZXJ2aWNlLnV0Y0RhdGUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY3VycmVudE1vbnRoO1xuICB9XG5cbiAgZ2V0TW9udGhzU2VsZWN0T3B0aW9ucyhkaXNhYmxlUGFzdFNlbGVjdGlvbjogYm9vbGVhbiwgbWF4TW9udGhJbmRleDogbnVtYmVyLCBtb250aE5hbWVzOiBBcnJheTxzdHJpbmc+KTogQXJyYXk8U2VsZWN0T3B0aW9uTW9kZWw+IHtcbiAgICBjb25zdCBtb250aHMgPSBuZXcgQXJyYXk8U2VsZWN0T3B0aW9uTW9kZWw+KCk7XG5cbiAgICBpZiAoZGlzYWJsZVBhc3RTZWxlY3Rpb24gPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gbW9udGhzO1xuICAgIH1cblxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBtYXhNb250aEluZGV4OyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBkYXRlID0gdGhpcy5kYXRlU2VydmljZS51dGNEYXRlKCkudG9EYXRlKCk7XG4gICAgICBkYXRlLnNldFVUQ0RhdGUoMSk7XG4gICAgICBkYXRlLnNldFVUQ01vbnRoKGRhdGUuZ2V0VVRDTW9udGgoKSArIGluZGV4KTtcblxuICAgICAgY29uc3Qgc2VsZWN0T3B0aW9uOiBTZWxlY3RPcHRpb25Nb2RlbCA9IHtcbiAgICAgICAgdGl0bGU6IGAke21vbnRoTmFtZXNbZGF0ZS5nZXRVVENNb250aCgpXX0gLSAke2RhdGUuZ2V0VVRDRnVsbFllYXIoKX1gLFxuICAgICAgICB2YWx1ZTogZGF0ZS50b0lTT1N0cmluZygpXG4gICAgICB9O1xuXG4gICAgICBtb250aHMucHVzaChzZWxlY3RPcHRpb24pO1xuICAgIH1cblxuICAgIHJldHVybiBtb250aHM7XG4gIH1cblxuICBnZXRTZWxlY3RlZE1vbnRoKG1vbnRoczogQXJyYXk8U2VsZWN0T3B0aW9uTW9kZWw+LCBjdXJyZW50TW9udGg6IFV0Y0RhdGUpOiBTZWxlY3RPcHRpb25Nb2RlbCB7XG4gICAgaWYgKCFtb250aHMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHNlbGVjdGVkID0gbW9udGhzLmZpbmQoeCA9PiB7XG4gICAgICBjb25zdCBkYXRlID0gdGhpcy5kYXRlU2VydmljZS51dGNEYXRlKHgudmFsdWUpO1xuICAgICAgZGF0ZS5zZXREYXRlKDEpO1xuICAgICAgY29uc3QgbW9udGggPSBuZXcgVXRjRGF0ZShjdXJyZW50TW9udGgueWVhciwgY3VycmVudE1vbnRoLm1vbnRoLCAxKTtcbiAgICAgIHJldHVybiB0aGlzLmRhdGVTZXJ2aWNlLmlzU2FtZU1vbnRoKGRhdGUsIG1vbnRoKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBzZWxlY3RlZDtcbiAgfVxuXG4gIGdldEF2YWlsYWJsZURheXMoXG4gICAgY3VycmVudE1vbnRoOiBVdGNEYXRlLFxuICAgIGF2YWlsYWJsZURhdGVzOiBBcnJheTxVdGNEYXRlPixcbiAgICBhdmFpbGFiaWxpdHk6IGJvb2xlYW4sXG4gICAgZGlzYWJsZVBhc3RTZWxlY3Rpb246IGJvb2xlYW4sXG4gICAgbG93ZXJMaW1pdERhdGU6IFV0Y0RhdGUsXG4gICAgYWN0aXZlRGF0ZTogVXRjRGF0ZSxcbiAgICBzZWxlY3RlZERhdGU6IFV0Y0RhdGUpOiBBcnJheTxEYXlNb2RlbD4ge1xuICAgIGNvbnN0IGZpcnN0RGF0ZUluVGhpc01vbnRoID0gbmV3IERhdGUoKTtcbiAgICBmaXJzdERhdGVJblRoaXNNb250aC5zZXRVVENEYXRlKDEpO1xuICAgIGZpcnN0RGF0ZUluVGhpc01vbnRoLnNldFVUQ0hvdXJzKDAsIDAsIDAsIDApO1xuXG4gICAgY29uc3QgY3VycmVudERhdGUgPSBjdXJyZW50TW9udGhcbiAgICAgID8gbmV3IERhdGUoRGF0ZS5VVEMoY3VycmVudE1vbnRoLnllYXIsIGN1cnJlbnRNb250aC5tb250aCwgMSkpXG4gICAgICA6IGZpcnN0RGF0ZUluVGhpc01vbnRoO1xuXG4gICAgY29uc3QgY3VycmVudERhdGVNb250aCA9IGN1cnJlbnREYXRlLmdldFVUQ01vbnRoKCk7XG4gICAgY29uc3QgZGF5cyA9IG5ldyBBcnJheTxEYXlNb2RlbD4oKTtcblxuICAgIHdoaWxlIChjdXJyZW50RGF0ZS5nZXRVVENNb250aCgpID09PSBjdXJyZW50RGF0ZU1vbnRoKSB7XG4gICAgICBjb25zdCB1dGNEYXRlID0gdGhpcy5kYXRlU2VydmljZS51dGNEYXRlKGN1cnJlbnREYXRlKTtcblxuICAgICAgY29uc3QgZGF5OiBEYXlNb2RlbCA9IHtcbiAgICAgICAgZGF0ZTogdGhpcy5kYXRlU2VydmljZS5kYXRlKHV0Y0RhdGUpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIGlzQXZhaWxhYmxlOiB0aGlzLmlzQXZhaWxhYmxlKHV0Y0RhdGUsIGF2YWlsYWJsZURhdGVzLCBhdmFpbGFiaWxpdHksIGRpc2FibGVQYXN0U2VsZWN0aW9uKSxcbiAgICAgICAgaXNEaXNhYmxlZDogdGhpcy5kYXRlU2VydmljZS5pc0xlc3NUaGFuKHV0Y0RhdGUsIGxvd2VyTGltaXREYXRlKSA/IHRydWUgOiBmYWxzZSxcbiAgICAgICAgaXNBY3RpdmU6IHRoaXMuZGF0ZVNlcnZpY2UuaXNTYW1lRGF0ZSh0aGlzLmRhdGVTZXJ2aWNlLnV0Y0RhdGUoY3VycmVudERhdGUpLCBhY3RpdmVEYXRlKVxuICAgICAgfTtcblxuICAgICAgaWYgKHNlbGVjdGVkRGF0ZSAmJiB0aGlzLmRhdGVTZXJ2aWNlLmlzU2FtZURhdGUoc2VsZWN0ZWREYXRlLCB1dGNEYXRlKSAmJiBkYXkuaXNTZWxlY3RlZCB8fCAhZGF5LmlzQXZhaWxhYmxlKSB7XG4gICAgICAgIGRheS5pc1NlbGVjdGVkID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGRheXMucHVzaChkYXkpO1xuICAgICAgY3VycmVudERhdGUuc2V0VVRDRGF0ZShjdXJyZW50RGF0ZS5nZXRVVENEYXRlKCkgKyAxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF5cztcbiAgfVxuXG4gIHByaXZhdGUgaXNBdmFpbGFibGUoZGF0ZTogVXRjRGF0ZSwgYXZhaWxhYmxlRGF0ZXM6IEFycmF5PFV0Y0RhdGU+LCBhdmFpbGFiaWxpdHk6IGJvb2xlYW4sIGRpc2FibGVQYXN0U2VsZWN0aW9uOiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgaWYgKCFhdmFpbGFiaWxpdHkpIHtcbiAgICAgIHJldHVybiBkaXNhYmxlUGFzdFNlbGVjdGlvbiAmJiB0aGlzLmRhdGVTZXJ2aWNlLmlzSW5UaGVQYXN0KGRhdGUsIGZhbHNlLCB0cnVlLCB0cnVlKSA/IGZhbHNlIDogdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoKGRpc2FibGVQYXN0U2VsZWN0aW9uICYmIHRoaXMuZGF0ZVNlcnZpY2UuaXNJblRoZVBhc3QoZGF0ZSwgZmFsc2UsIHRydWUsIHRydWUpKVxuICAgICAgfHwgIWF2YWlsYWJsZURhdGVzXG4gICAgICB8fCAhYXZhaWxhYmxlRGF0ZXMuc29tZSh4ID0+IHRoaXMuZGF0ZVNlcnZpY2UuaXNTYW1lRGF0ZSh4LCBkYXRlKSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TW9uZGF5KCkge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IGRheSA9IGRhdGUuZ2V0RGF5KCk7XG4gICAgY29uc3QgZGlmZiA9IGRhdGUuZ2V0RGF0ZSgpIC0gZGF5ICsgKGRheSA9PT0gMCA/IC02IDogMSk7XG4gICAgcmV0dXJuIG5ldyBEYXRlKGRhdGUuc2V0RGF0ZShkaWZmKSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,317 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Norwegian Air Shuttle. All Rights Reserved.
4
- */
5
- import { Component, EventEmitter, Input, Output, ViewEncapsulation, ViewChild } from '@angular/core';
6
- import { NasComponentBase } from '../../core/base/nas-component.base';
7
- import { UtcDate } from '../../core/models/utc-date.model';
8
- import { DateHelper } from '../../core/services/date/date-helper.service';
9
- import { DeviceHelper } from '../../core/services/device/device-helper.service';
10
- import { BehaviorSubject } from 'rxjs';
11
- /**
12
- * @description
13
- * Norwegian Datepicker Combo Component | Functional
14
- */
15
- export class DatepickerComboComponent extends NasComponentBase {
16
- constructor(dateService, deviceHelper) {
17
- super('nas-datepicker-combo');
18
- this.dateService = dateService;
19
- this.deviceHelper = deviceHelper;
20
- /**
21
- * @description
22
- * The display format of the date when user has selected the date and it is being shown in the input box for the date picker.
23
- * Please look at the angular Date pipe for valid formats and variations.
24
- */
25
- this.dateDisplayFormat = 'EEEE d, MMMM yyyy';
26
- /**
27
- * @description
28
- * The time display format.
29
- */
30
- this.timeDisplayFormat = 'HH:mm';
31
- /**
32
- * @description
33
- * A locale code for the locale format rules to use. When not supplied, uses the value of LOCALE_ID, which is en-US by default.
34
- * This requires that registerLocaleData is called with the respective locale.
35
- */
36
- this.locale = 'en-US';
37
- /**
38
- * @description
39
- * Sets a relative number to decide when the inbound lower limit date should be based on selected outbound date.
40
- *
41
- * The lower limit date for inbound is set by default equal to the selected outbound date.
42
- *
43
- * If this number is positive, the inbound lower limit date will add the number of days to the selected outbound date.
44
- * If this number is negative, the inbound lower limit date will subtract the number of days to the selected outbound date.
45
- */
46
- this.inboundLowerLimitDateOffset = 0;
47
- /**
48
- * @description
49
- * When selected datehas been changed on the outbound calendar.
50
- */
51
- this.outboundSelectedDateChange = new EventEmitter();
52
- /**
53
- * @description
54
- * When selected datehas been changed on the inbound calendar.
55
- */
56
- this.inboundSelectedDateChange = new EventEmitter();
57
- /**
58
- * @description
59
- * Outbound datepicker is open or closed.
60
- */
61
- this.outboundOpenChange = new EventEmitter();
62
- /**
63
- * @description
64
- * Inbound datepicker is open or closed.
65
- */
66
- this.inboundOpenChange = new EventEmitter();
67
- /**
68
- * @description
69
- * Outbound calendar changes month.
70
- */
71
- this.outboundMonthChange = new EventEmitter();
72
- /**
73
- * @description
74
- * Inbound calendar changes month.
75
- */
76
- this.inboundMonthChange = new EventEmitter();
77
- /**
78
- * @description
79
- * When a user has actively changed the date.
80
- */
81
- this.focusOnNextChange = new EventEmitter();
82
- /**
83
- * @description
84
- * When a user has pressed shift + tab to go to previous control.
85
- */
86
- this.focusOnPreviousChange = new EventEmitter();
87
- this.inboundOpenValue = false;
88
- this.outboundOpenValue = false;
89
- this.containerWidth = new BehaviorSubject(0);
90
- window.onresize = () => {
91
- this.updateContainerWidth();
92
- };
93
- }
94
- /**
95
- * @description
96
- * Sets outbound datepicker open.
97
- */
98
- get outboundOpen() {
99
- return this.outboundOpenValue;
100
- }
101
- set outboundOpen(value) {
102
- if (this.outboundDisabled || value === this.outboundOpenValue) {
103
- return;
104
- }
105
- setTimeout(() => {
106
- this.outboundOpenValue = value;
107
- this.outboundOpenChange.emit(value);
108
- if (value && this.inboundOpen) {
109
- this.inboundOpen = false;
110
- }
111
- });
112
- }
113
- /**
114
- * @description
115
- * Sets inbound datepicker open.
116
- */
117
- get inboundOpen() {
118
- return this.inboundOpenValue;
119
- }
120
- set inboundOpen(value) {
121
- if (this.inboundDisabled || value === this.inboundOpenValue) {
122
- return;
123
- }
124
- if (this.outboundOnly) {
125
- this.focusOnNextChange.emit();
126
- return;
127
- }
128
- setTimeout(() => {
129
- this.inboundOpenValue = value;
130
- this.inboundOpenChange.emit(value);
131
- if (value && this.outboundOpen) {
132
- this.outboundOpen = false;
133
- }
134
- });
135
- }
136
- /**
137
- * @description
138
- * Selected datefor outbound calendar.
139
- */
140
- get outboundSelectedDate() {
141
- return this.outboundSelectedDateValue;
142
- }
143
- set outboundSelectedDate(date) {
144
- if (!date) {
145
- return;
146
- }
147
- if (this.outboundSelectedDateValue && this.dateService.isSameDate(this.outboundSelectedDateValue, date)) {
148
- return;
149
- }
150
- this.outboundSelectedDateValue = date;
151
- this.inboundLowerLimitDate = new UtcDate(date.year, date.month, 1);
152
- this.inboundLowerLimitDate.setDate(date.date + this.inboundLowerLimitDateOffset);
153
- this.outboundSelectedDateChange.emit(date);
154
- }
155
- /**
156
- * @description
157
- * Selected datefor inbound calendar.
158
- */
159
- get inboundSelectedDate() {
160
- return this.inboundSelectedDateValue;
161
- }
162
- set inboundSelectedDate(date) {
163
- if (!date) {
164
- return;
165
- }
166
- if (this.inboundSelectedDateValue && this.dateService.isSameDate(this.inboundSelectedDateValue, date)) {
167
- return;
168
- }
169
- this.inboundSelectedDateValue = date;
170
- this.inboundSelectedDateChange.emit(date);
171
- }
172
- get inboundSelectedMonth() {
173
- return this.inboundSelectedMonthValue;
174
- }
175
- set inboundSelectedMonth(month) {
176
- if (!month) {
177
- return;
178
- }
179
- if (this.dateService.isSameMonth(month, this.inboundSelectedMonthValue)) {
180
- return;
181
- }
182
- setTimeout(() => {
183
- this.inboundSelectedMonthValue = month;
184
- this.inboundMonthChange.emit(month);
185
- });
186
- }
187
- ngOnInit() {
188
- if (this.nasFormGroup) {
189
- if (this.nasFormControlNameOutbound) {
190
- this.outboundValueChangesSubscription = this.nasFormGroup.get(this.nasFormControlNameOutbound)
191
- .valueChanges
192
- .subscribe(outbound => {
193
- this.outboundSelectedDate = outbound === null || outbound === void 0 ? void 0 : outbound.date;
194
- });
195
- }
196
- if (this.nasFormControlNameInbound) {
197
- this.inboundValueChangesSubscription = this.nasFormGroup.get(this.nasFormControlNameInbound)
198
- .valueChanges
199
- .subscribe(inbound => {
200
- this.inboundSelectedDate = inbound === null || inbound === void 0 ? void 0 : inbound.date;
201
- });
202
- }
203
- }
204
- }
205
- ngAfterViewChecked() {
206
- this.updateContainerWidth();
207
- }
208
- onFocusOnNext(event) {
209
- this.focusOnNextChange.emit(event);
210
- }
211
- onFocusOnPrevious(event) {
212
- this.focusOnPreviousChange.emit(event);
213
- }
214
- onInboundFocusOnPrevious() {
215
- var _a, _b;
216
- if (this.times && this.times.length > 0) {
217
- const selectElement = (_b = (_a = this.datepickerOutbound.timeSelector) === null || _a === void 0 ? void 0 : _a.select) === null || _b === void 0 ? void 0 : _b.nativeElement;
218
- setTimeout(() => {
219
- selectElement === null || selectElement === void 0 ? void 0 : selectElement.focus();
220
- });
221
- this.inboundOpenChange.emit(false);
222
- }
223
- else {
224
- this.outboundOpen = true;
225
- }
226
- }
227
- onOutboundMonthChange(date) {
228
- this.outboundMonthChange.emit(date);
229
- this.inboundSelectedMonthValue = date;
230
- }
231
- getMainClass() {
232
- const widths = [
233
- this.deviceHelper.isWidthTablet(this.containerWidth.getValue()) && 'md',
234
- this.deviceHelper.isWidthDesktop(this.containerWidth.getValue()) && 'lg'
235
- ];
236
- if (this.exists(this.compact)) {
237
- return this.getContainerClass('', ['compact', ...widths]);
238
- }
239
- else {
240
- return this.getContainerClass('', [...widths]);
241
- }
242
- }
243
- checkOutboundOnly() {
244
- return !(this.deviceHelper.isMobileWidth() && this.exists(this.outboundOnly));
245
- }
246
- checkInboundDisabled() {
247
- return (!this.deviceHelper.isMobileWidth() && this.exists(this.outboundOnly))
248
- || this.exists(this.inboundDisabled);
249
- }
250
- ngOnDestroy() {
251
- var _a, _b;
252
- (_a = this.inboundValueChangesSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
253
- (_b = this.outboundValueChangesSubscription) === null || _b === void 0 ? void 0 : _b.unsubscribe();
254
- }
255
- updateContainerWidth() {
256
- const containerOffsetWidth = this.container.nativeElement.offsetWidth;
257
- if (containerOffsetWidth > 0) {
258
- this.containerWidth.next(containerOffsetWidth);
259
- }
260
- }
261
- }
262
- DatepickerComboComponent.decorators = [
263
- { type: Component, args: [{
264
- selector: 'nas-datepicker-combo',
265
- template: "<div [nasClass]=\"getMainClass()\"\n #container>\n <div [nasClass]=\"getClass('date-picker')\">\n <nas-datepicker #datepickerOutbound\n compact\n [disableBackdrop]=\"disableBackdrop\"\n [nasFormGroup]=\"nasFormGroup\"\n [nasFormControlName]=\"nasFormControlNameOutbound\"\n [noAvailableFlightsLabel]=\"noAvailableFlightsLabel\"\n [availableFlightsLabel]=\"availableFlightsLabel\"\n [disablePastSelection]=\"exists(disablePastSelection)\"\n [availability]=\"exists(availability)\"\n [availableDates]=\"outboundAvailableDates\"\n [times]=\"times\"\n [selectedTime]=\"outboundSelectedTime\"\n [dateDisplayFormat]=\"dateDisplayFormat\"\n [timeDisplayFormat]=\"timeDisplayFormat\"\n [locale]=\"locale\"\n [disabled]=\"exists(outboundDisabled)\"\n [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n [ariaLabelPreviousMonth]=\"ariaLabelPreviousMonth\"\n [ariaLabelNextMonth]=\"ariaLabelNextMonth\"\n (focusOnNextChange)=\"inboundOpen = true\"\n (focusOnPreviousChange)=\"onFocusOnPrevious($event)\"\n (selectedMonthChange)=\"onOutboundMonthChange($event)\"\n [(open)]=\"outboundOpen\"\n [(selectedDate)]=\"outboundSelectedDate\">{{outboundLabel}}</nas-datepicker>\n </div>\n <span [nasClass]=\"getClass('separator')\"></span>\n <div *ngIf=\"checkOutboundOnly()\"\n [nasClass]=\"getClass('date-picker')\">\n <nas-datepicker #datepickerInbound\n compact\n [disableBackdrop]=\"disableBackdrop\"\n [nasFormGroup]=\"nasFormGroup\"\n [nasFormControlName]=\"nasFormControlNameInbound\"\n [disabled]=\"checkInboundDisabled()\"\n [noAvailableFlightsLabel]=\"noAvailableFlightsLabel\"\n [availableFlightsLabel]=\"availableFlightsLabel\"\n [disablePastSelection]=\"exists(disablePastSelection)\"\n [availability]=\"exists(availability)\"\n [availableDates]=\"inboundAvailableDates\"\n [lowerLimitDate]=\"inboundLowerLimitDate\"\n [times]=\"times\"\n [selectedTime]=\"inboundSelectedTime\"\n [dateDisplayFormat]=\"dateDisplayFormat\"\n [timeDisplayFormat]=\"timeDisplayFormat\"\n [locale]=\"locale\"\n [ariaLabelBackdrop]=\"ariaLabelBackdrop\"\n [ariaLabelPreviousMonth]=\"ariaLabelPreviousMonth\"\n [ariaLabelNextMonth]=\"ariaLabelNextMonth\"\n (focusOnNextChange)=\"onFocusOnNext($event)\"\n (focusOnPreviousChange)=\"onInboundFocusOnPrevious()\"\n [(open)]=\"inboundOpen\"\n [(selectedMonth)]=\"inboundSelectedMonth\"\n [(selectedDate)]=\"inboundSelectedDate\">{{inboundLabel}}</nas-datepicker>\n </div>\n</div>",
266
- encapsulation: ViewEncapsulation.Emulated,
267
- styles: ["@-webkit-keyframes fade-in{0%{opacity:0}}@keyframes fade-in{0%{opacity:0}}@-webkit-keyframes fade-in-down{0%{opacity:0;transform:translateY(-30px)}}@keyframes fade-in-down{0%{opacity:0;transform:translateY(-30px)}}@-webkit-keyframes fade-in-left{0%{opacity:0;transform:translate(-30px)}}@keyframes fade-in-left{0%{opacity:0;transform:translate(-30px)}}@-webkit-keyframes fade-in-right{0%{opacity:0;transform:translate(30px)}}@keyframes fade-in-right{0%{opacity:0;transform:translate(30px)}}@-webkit-keyframes fade-out{to{opacity:0}}@keyframes fade-out{to{opacity:0}}@-webkit-keyframes flip-in{0%{opacity:0;transform:rotateX(-90deg)}40%{opacity:1;transform:rotateX(10deg)}}@keyframes flip-in{0%{opacity:0;transform:rotateX(-90deg)}40%{opacity:1;transform:rotateX(10deg)}}@-webkit-keyframes flip-out{to{opacity:0;transform:rotateX(-90deg)}}@keyframes flip-out{to{opacity:0;transform:rotateX(-90deg)}}@-webkit-keyframes pop-in-from-top{0%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-100,1,1);opacity:0}6.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-30.227,1,1)}13.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,1.76,1,1)}20%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,7.08,1,1)}26.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,3.838,1,1)}33.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.902,1,1);opacity:1}40%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.237,1,1)}46.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.312,1,1)}53.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.141,1,1)}60%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.021,1,1)}66.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.015,1,1)}73.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.013,1,1)}80%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.005,1,1)}86.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1)}93.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}to{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}}@keyframes pop-in-from-top{0%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-100,1,1);opacity:0}6.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-30.227,1,1)}13.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,1.76,1,1)}20%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,7.08,1,1)}26.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,3.838,1,1)}33.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.902,1,1);opacity:1}40%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.237,1,1)}46.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.312,1,1)}53.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.141,1,1)}60%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.021,1,1)}66.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.015,1,1)}73.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.013,1,1)}80%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,.005,1,1)}86.67%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1)}93.33%{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}to{transform:matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,-.001,1,1);-webkit-transform:translate3d(0,0,0)}}.nas-datepicker-combo{display:flex;margin:24px auto;flex-wrap:wrap;flex-direction:column}.nas-datepicker-combo nas-datepicker{display:flex}.nas-datepicker-combo nas-datepicker ::ng-deep .nas-datepicker__time-selector-wrapper{padding-left:3px;padding-bottom:3px}.nas-datepicker-combo nas-datepicker ::ng-deep .nas-datepicker__time-selector-wrapper .nas-select{margin-bottom:0}.nas-datepicker-combo nas-datepicker ::ng-deep .nas-datepicker__time-selector-wrapper .nas-select:after{bottom:25px}.nas-datepicker-combo nas-datepicker ::ng-deep .nas-datepicker__time-selector-wrapper .nas-select select{background-color:#fff;height:64px;border:3px solid #fff}.nas-datepicker-combo nas-datepicker ::ng-deep .nas-datepicker__time-selector-wrapper .nas-select select:focus{border-color:#003251}.nas-datepicker-combo__date-picker{width:100%}.nas-datepicker-combo__date-picker:first-child nas-datepicker ::ng-deep .nas-datepicker__date-picker-wrapper{border-bottom:none}.nas-datepicker-combo__date-picker:first-child nas-datepicker ::ng-deep .nas-datepicker__time-selector-wrapper{border-bottom:none}.nas-datepicker-combo__separator{display:none}.nas-datepicker-combo--md,.nas-datepicker-combo--lg{flex-wrap:nowrap;flex-direction:row}.nas-datepicker-combo--md .nas-datepicker-combo__separator,.nas-datepicker-combo--lg .nas-datepicker-combo__separator{display:block;position:relative;align-self:flex-end;flex-shrink:0;width:3px;border-bottom:3px solid #c3c3c3}.nas-datepicker-combo--md .nas-datepicker-combo__date-picker:first-child nas-datepicker ::ng-deep .nas-datepicker__date-picker-wrapper,.nas-datepicker-combo--lg .nas-datepicker-combo__date-picker:first-child nas-datepicker ::ng-deep .nas-datepicker__date-picker-wrapper{border-bottom:3px solid #c3c3c3}.nas-datepicker-combo--md .nas-datepicker-combo__date-picker:first-child nas-datepicker ::ng-deep .nas-datepicker__time-selector-wrapper,.nas-datepicker-combo--lg .nas-datepicker-combo__date-picker:first-child nas-datepicker ::ng-deep .nas-datepicker__time-selector-wrapper{border-bottom:3px solid #c3c3c3}.nas-datepicker-combo--compact{margin:0 auto}\n"]
268
- },] }
269
- ];
270
- DatepickerComboComponent.ctorParameters = () => [
271
- { type: DateHelper },
272
- { type: DeviceHelper }
273
- ];
274
- DatepickerComboComponent.propDecorators = {
275
- datepickerOutbound: [{ type: ViewChild, args: ['datepickerOutbound',] }],
276
- datepickerInbound: [{ type: ViewChild, args: ['datepickerInbound',] }],
277
- container: [{ type: ViewChild, args: ['container',] }],
278
- ariaLabelBackdrop: [{ type: Input }],
279
- outboundOpen: [{ type: Input }],
280
- inboundOpen: [{ type: Input }],
281
- noAvailableFlightsLabel: [{ type: Input }],
282
- availableFlightsLabel: [{ type: Input }],
283
- disablePastSelection: [{ type: Input }],
284
- outboundDisabled: [{ type: Input }],
285
- inboundDisabled: [{ type: Input }],
286
- outboundOnly: [{ type: Input }],
287
- outboundLabel: [{ type: Input }],
288
- inboundLabel: [{ type: Input }],
289
- availability: [{ type: Input }],
290
- outboundAvailableDates: [{ type: Input }],
291
- inboundAvailableDates: [{ type: Input }],
292
- times: [{ type: Input }],
293
- dateDisplayFormat: [{ type: Input }],
294
- timeDisplayFormat: [{ type: Input }],
295
- locale: [{ type: Input }],
296
- compact: [{ type: Input }],
297
- nasFormGroup: [{ type: Input }],
298
- nasFormControlNameOutbound: [{ type: Input }],
299
- nasFormControlNameInbound: [{ type: Input }],
300
- outboundSelectedDate: [{ type: Input }],
301
- inboundSelectedDate: [{ type: Input }],
302
- disableBackdrop: [{ type: Input }],
303
- outboundSelectedTime: [{ type: Input }],
304
- inboundSelectedTime: [{ type: Input }],
305
- ariaLabelPreviousMonth: [{ type: Input }],
306
- ariaLabelNextMonth: [{ type: Input }],
307
- inboundLowerLimitDateOffset: [{ type: Input }],
308
- outboundSelectedDateChange: [{ type: Output }],
309
- inboundSelectedDateChange: [{ type: Output }],
310
- outboundOpenChange: [{ type: Output }],
311
- inboundOpenChange: [{ type: Output }],
312
- outboundMonthChange: [{ type: Output }],
313
- inboundMonthChange: [{ type: Output }],
314
- focusOnNextChange: [{ type: Output }],
315
- focusOnPreviousChange: [{ type: Output }]
316
- };
317
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci1jb21iby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2RhdGVwaWNrZXItY29tYm8vZGF0ZXBpY2tlci1jb21iby5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixpQkFBaUIsRUFDakIsU0FBUyxFQUtWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXRFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBRWhGLE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRXJEOzs7R0FHRztBQU9ILE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxnQkFBZ0I7SUEwVjVELFlBQW9CLFdBQXVCLEVBQVUsWUFBMEI7UUFDN0UsS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFEWixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBak4vRTs7OztXQUlHO1FBQ00sc0JBQWlCLEdBQUcsbUJBQW1CLENBQUM7UUFFakQ7OztXQUdHO1FBQ00sc0JBQWlCLEdBQUcsT0FBTyxDQUFDO1FBRXJDOzs7O1dBSUc7UUFDTSxXQUFNLEdBQUcsT0FBTyxDQUFDO1FBd0cxQjs7Ozs7Ozs7V0FRRztRQUNNLGdDQUEyQixHQUFHLENBQUMsQ0FBQztRQUV6Qzs7O1dBR0c7UUFDTywrQkFBMEIsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBRW5FOzs7V0FHRztRQUNPLDhCQUF5QixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFHbEU7OztXQUdHO1FBQ08sdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUUzRDs7O1dBR0c7UUFDTyxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBRTFEOzs7V0FHRztRQUNPLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFFNUQ7OztXQUdHO1FBQ08sdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUUzRDs7O1dBR0c7UUFDTyxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRWpEOzs7V0FHRztRQUNPLDBCQUFxQixHQUFHLElBQUksWUFBWSxFQUE4QixDQUFDO1FBdUJ6RSxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDekIsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQzFCLG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFPdEQsTUFBTSxDQUFDLFFBQVEsR0FBRyxHQUFHLEVBQUU7WUFDckIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDOUIsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQW5WRDs7O09BR0c7SUFDSCxJQUNJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNoQyxDQUFDO0lBQ0QsSUFBSSxZQUFZLENBQUMsS0FBYztRQUM3QixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzdELE9BQU87U0FDUjtRQUVELFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1lBQy9CLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFcEMsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDN0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7YUFDMUI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUNJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUMvQixDQUFDO0lBQ0QsSUFBSSxXQUFXLENBQUMsS0FBYztRQUM1QixJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUMzRCxPQUFPO1NBQ1I7UUFFRCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDckIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFDO1lBQzlCLE9BQU87U0FDUjtRQUVELFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1lBQzlCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFbkMsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDOUIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7YUFDM0I7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUE2SEQ7OztPQUdHO0lBQ0gsSUFDSSxvQkFBb0I7UUFDdEIsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQUM7SUFDeEMsQ0FBQztJQUNELElBQUksb0JBQW9CLENBQUMsSUFBYTtRQUNwQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsT0FBTztTQUNSO1FBRUQsSUFBSSxJQUFJLENBQUMseUJBQXlCLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLHlCQUF5QixFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ3ZHLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLENBQUM7UUFFdEMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFFakYsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFDSSxtQkFBbUI7UUFDckIsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUM7SUFDdkMsQ0FBQztJQUNELElBQUksbUJBQW1CLENBQUMsSUFBYTtRQUNuQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1QsT0FBTztTQUNSO1FBRUQsSUFBSSxJQUFJLENBQUMsd0JBQXdCLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLHdCQUF3QixFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ3JHLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUM7UUFDckMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBd0ZELElBQUksb0JBQW9CO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLHlCQUF5QixDQUFDO0lBQ3hDLENBQUM7SUFDRCxJQUFJLG9CQUFvQixDQUFDLEtBQWM7UUFDckMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE9BQU87U0FDUjtRQUVELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFO1lBQ3ZFLE9BQU87U0FDUjtRQUVELFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMseUJBQXlCLEdBQUcsS0FBSyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBbUJELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDckIsSUFBSSxJQUFJLENBQUMsMEJBQTBCLEVBQUU7Z0JBQ25DLElBQUksQ0FBQyxnQ0FBZ0MsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUM7cUJBQzNGLFlBQVk7cUJBQ1osU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFO29CQUNwQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLElBQUksQ0FBQztnQkFDN0MsQ0FBQyxDQUFDLENBQUM7YUFDTjtZQUNELElBQUksSUFBSSxDQUFDLHlCQUF5QixFQUFFO2dCQUNsQyxJQUFJLENBQUMsK0JBQStCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDO3FCQUN6RixZQUFZO3FCQUNaLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRTtvQkFDbkIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxJQUFJLENBQUM7Z0JBQzNDLENBQUMsQ0FBQyxDQUFDO2FBQ047U0FDRjtJQUNILENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFpQztRQUM3QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxLQUFvQjtRQUNwQyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCx3QkFBd0I7O1FBQ3RCLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDdkMsTUFBTSxhQUFhLEdBQUcsTUFBQSxNQUFBLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLDBDQUFFLE1BQU0sMENBQUUsYUFBNEIsQ0FBQztZQUVqRyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLGFBQWEsYUFBYixhQUFhLHVCQUFiLGFBQWEsQ0FBRSxLQUFLLEVBQUUsQ0FBQztZQUN6QixDQUFDLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDcEM7YUFBTTtZQUNMLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1NBQzFCO0lBQ0gsQ0FBQztJQUVELHFCQUFxQixDQUFDLElBQWE7UUFDakMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxZQUFZO1FBQ1YsTUFBTSxNQUFNLEdBQUc7WUFDYixJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksSUFBSTtZQUN2RSxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksSUFBSTtTQUN6RSxDQUFDO1FBRUYsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUM3QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxTQUFTLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDO1NBQzNEO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7U0FDaEQ7SUFDSCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFFRCxvQkFBb0I7UUFDbEIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztlQUN4RSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsV0FBVzs7UUFDVCxNQUFBLElBQUksQ0FBQywrQkFBK0IsMENBQUUsV0FBVyxFQUFFLENBQUM7UUFDcEQsTUFBQSxJQUFJLENBQUMsZ0NBQWdDLDBDQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ3ZELENBQUM7SUFFTyxvQkFBb0I7UUFDMUIsTUFBTSxvQkFBb0IsR0FBSSxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQTZCLENBQUMsV0FBVyxDQUFDO1FBRXZGLElBQUksb0JBQW9CLEdBQUcsQ0FBQyxFQUFFO1lBQzVCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7U0FDaEQ7SUFDSCxDQUFDOzs7WUEzYkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxzQkFBc0I7Z0JBQ2hDLDBsRkFBZ0Q7Z0JBRWhELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxRQUFROzthQUMxQzs7O1lBZFEsVUFBVTtZQUNWLFlBQVk7OztpQ0FpQmxCLFNBQVMsU0FBQyxvQkFBb0I7Z0NBQzlCLFNBQVMsU0FBQyxtQkFBbUI7d0JBQzdCLFNBQVMsU0FBQyxXQUFXO2dDQU1yQixLQUFLOzJCQU1MLEtBQUs7MEJBdUJMLEtBQUs7c0NBNEJMLEtBQUs7b0NBTUwsS0FBSzttQ0FNTCxLQUFLOytCQU1MLEtBQUs7OEJBTUwsS0FBSzsyQkFNTCxLQUFLOzRCQU1MLEtBQUs7MkJBTUwsS0FBSzsyQkFNTCxLQUFLO3FDQU1MLEtBQUs7b0NBTUwsS0FBSztvQkFPTCxLQUFLO2dDQU9MLEtBQUs7Z0NBTUwsS0FBSztxQkFPTCxLQUFLO3NCQU1MLEtBQUs7MkJBUUwsS0FBSzt5Q0FRTCxLQUFLO3dDQVFMLEtBQUs7bUNBTUwsS0FBSztrQ0F5QkwsS0FBSzs4QkFpQkwsS0FBSzttQ0FNTCxLQUFLO2tDQU1MLEtBQUs7cUNBTUwsS0FBSztpQ0FNTCxLQUFLOzBDQVdMLEtBQUs7eUNBTUwsTUFBTTt3Q0FNTixNQUFNO2lDQU9OLE1BQU07Z0NBTU4sTUFBTTtrQ0FNTixNQUFNO2lDQU1OLE1BQU07Z0NBTU4sTUFBTTtvQ0FNTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IE5vcndlZ2lhbiBBaXIgU2h1dHRsZS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIFZpZXdDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgT25Jbml0LFxuICBPbkRlc3Ryb3lcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOYXNDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vLi4vY29yZS9iYXNlL25hcy1jb21wb25lbnQuYmFzZSc7XG5pbXBvcnQgeyBDbGFzc01vZGVsIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMvY2xhc3MubW9kZWwnO1xuaW1wb3J0IHsgVXRjRGF0ZSB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWxzL3V0Yy1kYXRlLm1vZGVsJztcbmltcG9ydCB7IERhdGVIZWxwZXIgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL2RhdGUvZGF0ZS1oZWxwZXIuc2VydmljZSc7XG5pbXBvcnQgeyBEZXZpY2VIZWxwZXIgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL2RldmljZS9kZXZpY2UtaGVscGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0ZXBpY2tlckNvbXBvbmVudCB9IGZyb20gJy4uL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqIE5vcndlZ2lhbiBEYXRlcGlja2VyIENvbWJvIENvbXBvbmVudCB8IEZ1bmN0aW9uYWxcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmFzLWRhdGVwaWNrZXItY29tYm8nLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0ZXBpY2tlci1jb21iby5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGVwaWNrZXItY29tYm8uY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uRW11bGF0ZWRcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZXBpY2tlckNvbWJvQ29tcG9uZW50IGV4dGVuZHMgTmFzQ29tcG9uZW50QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3Q2hlY2tlZCwgT25EZXN0cm95IHtcbiAgaW5ib3VuZExvd2VyTGltaXREYXRlOiBVdGNEYXRlO1xuXG4gIEBWaWV3Q2hpbGQoJ2RhdGVwaWNrZXJPdXRib3VuZCcpIGRhdGVwaWNrZXJPdXRib3VuZDogRGF0ZXBpY2tlckNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnZGF0ZXBpY2tlckluYm91bmQnKSBkYXRlcGlja2VySW5ib3VuZDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyJykgY29udGFpbmVyOiBFbGVtZW50UmVmO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQWRkcyAnYXJpYS1sYWJlbCcgdG8gdGhlIGJhY2tkcm9wcy5cbiAgICovXG4gIEBJbnB1dCgpIGFyaWFMYWJlbEJhY2tkcm9wOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBTZXRzIG91dGJvdW5kIGRhdGVwaWNrZXIgb3Blbi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBvdXRib3VuZE9wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMub3V0Ym91bmRPcGVuVmFsdWU7XG4gIH1cbiAgc2V0IG91dGJvdW5kT3Blbih2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLm91dGJvdW5kRGlzYWJsZWQgfHwgdmFsdWUgPT09IHRoaXMub3V0Ym91bmRPcGVuVmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMub3V0Ym91bmRPcGVuVmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMub3V0Ym91bmRPcGVuQ2hhbmdlLmVtaXQodmFsdWUpO1xuXG4gICAgICBpZiAodmFsdWUgJiYgdGhpcy5pbmJvdW5kT3Blbikge1xuICAgICAgICB0aGlzLmluYm91bmRPcGVuID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNldHMgaW5ib3VuZCBkYXRlcGlja2VyIG9wZW4uXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgaW5ib3VuZE9wZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaW5ib3VuZE9wZW5WYWx1ZTtcbiAgfVxuICBzZXQgaW5ib3VuZE9wZW4odmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5pbmJvdW5kRGlzYWJsZWQgfHwgdmFsdWUgPT09IHRoaXMuaW5ib3VuZE9wZW5WYWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm91dGJvdW5kT25seSkge1xuICAgICAgdGhpcy5mb2N1c09uTmV4dENoYW5nZS5lbWl0KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmluYm91bmRPcGVuVmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMuaW5ib3VuZE9wZW5DaGFuZ2UuZW1pdCh2YWx1ZSk7XG5cbiAgICAgIGlmICh2YWx1ZSAmJiB0aGlzLm91dGJvdW5kT3Blbikge1xuICAgICAgICB0aGlzLm91dGJvdW5kT3BlbiA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBMYWJlbCBmb3Igbm8gYXZhaWxhYmxlIGZsaWdodHMuXG4gICAqL1xuICBASW5wdXQoKSBub0F2YWlsYWJsZUZsaWdodHNMYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogTGFiZWwgZm9yIGF2YWlsYWJsZSBmbGlnaHRzLlxuICAgKi9cbiAgQElucHV0KCkgYXZhaWxhYmxlRmxpZ2h0c0xhYmVsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBEaXNhYmxlIHBvc3NpYmlsaXR5IHRvIHNlbGVjdCBkYXRlcyBpbiB0aGUgcGFzdC5cbiAgICovXG4gIEBJbnB1dCgpIGRpc2FibGVQYXN0U2VsZWN0aW9uOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRGlzYWJsZSBwb3NzaWJpbGl0eSB0byBzZWxlY3Qgb3V0Ym91bmQgZGF0ZXMuXG4gICAqL1xuICBASW5wdXQoKSBvdXRib3VuZERpc2FibGVkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRGlzYWJsZSBwb3NzaWJpbGl0eSB0byBzZWxlY3QgaW5ib3VuZCBkYXRlcy5cbiAgICovXG4gIEBJbnB1dCgpIGluYm91bmREaXNhYmxlZDogYm9vbGVhbjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFJlbW92ZSB0aGUgaW5ib3VuZCBkYXRlcGlja2VyIGlmIHNldC5cbiAgICovXG4gIEBJbnB1dCgpIG91dGJvdW5kT25seTogYm9vbGVhbjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIExhYmVsIGZvciBvdXRib3VuZCBkYXRlcGlja2VyLlxuICAgKi9cbiAgQElucHV0KCkgb3V0Ym91bmRMYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogTGFiZWwgZm9yIGluYm91bmQgZGF0ZXBpY2tlci5cbiAgICovXG4gIEBJbnB1dCgpIGluYm91bmRMYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogU2V0cyB0aGUgZGF0ZXBpY2tlcnMgaW4gYXZhaWxhYmlsaXR5IG1vZGUgd2hlcmUgYXZhaWxhYmxlIGRhdGVzIGNhbiBiZSBhZGRlZC5cbiAgICovXG4gIEBJbnB1dCgpIGF2YWlsYWJpbGl0eTogYm9vbGVhbjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEF2YWlsYWJsZSBkYXRlcyBmb3Igb3V0Ym91bmQgY2FsZW5kYXIuXG4gICAqL1xuICBASW5wdXQoKSBvdXRib3VuZEF2YWlsYWJsZURhdGVzOiBBcnJheTxVdGNEYXRlPjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEF2YWlsYWJsZSBkYXRlcyBmb3IgaW5ib3VuZCBjYWxlbmRhci5cbiAgICovXG4gIEBJbnB1dCgpIGluYm91bmRBdmFpbGFibGVEYXRlczogQXJyYXk8VXRjRGF0ZT47XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBJZiBzZXQsIEVuYWJsZXMgdGhlIHRpbWUgZHJvcGRvd24gc2VsZWN0b3IgYWxvbmdzaWRlIGRhdGVwaWNrZXIuXG4gICAqL1xuXG4gIEBJbnB1dCgpIHRpbWVzOiBBcnJheTxVdGNEYXRlPjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSBkaXNwbGF5IGZvcm1hdCBvZiB0aGUgZGF0ZSB3aGVuIHVzZXIgaGFzIHNlbGVjdGVkIHRoZSBkYXRlIGFuZCBpdCBpcyBiZWluZyBzaG93biBpbiB0aGUgaW5wdXQgYm94IGZvciB0aGUgZGF0ZSBwaWNrZXIuXG4gICAqIFBsZWFzZSBsb29rIGF0IHRoZSBhbmd1bGFyIERhdGUgcGlwZSBmb3IgdmFsaWQgZm9ybWF0cyBhbmQgdmFyaWF0aW9ucy5cbiAgICovXG4gIEBJbnB1dCgpIGRhdGVEaXNwbGF5Rm9ybWF0ID0gJ0VFRUUgZCwgTU1NTSB5eXl5JztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRoZSB0aW1lIGRpc3BsYXkgZm9ybWF0LlxuICAgKi9cbiAgQElucHV0KCkgdGltZURpc3BsYXlGb3JtYXQgPSAnSEg6bW0nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQSBsb2NhbGUgY29kZSBmb3IgdGhlIGxvY2FsZSBmb3JtYXQgcnVsZXMgdG8gdXNlLiBXaGVuIG5vdCBzdXBwbGllZCwgdXNlcyB0aGUgdmFsdWUgb2YgTE9DQUxFX0lELCB3aGljaCBpcyBlbi1VUyBieSBkZWZhdWx0LlxuICAgKiBUaGlzIHJlcXVpcmVzIHRoYXQgcmVnaXN0ZXJMb2NhbGVEYXRhIGlzIGNhbGxlZCB3aXRoIHRoZSByZXNwZWN0aXZlIGxvY2FsZS5cbiAgICovXG4gIEBJbnB1dCgpIGxvY2FsZSA9ICdlbi1VUyc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBIG1vZGlmaWVyIHRvIHJlbW92ZSB0aGUgcGFkZGluZyBhbmQgbWFyZ2lucyBhcm91bmQgdGhlIGVsZW1lbnQuXG4gICAqL1xuICBASW5wdXQoKSBjb21wYWN0OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQWRkcyB0aGUgcGFyZW50J3MgZm9ybSBncm91cC5cbiAgICogSXQgcmVxdWlyZXMgdGhhdCB0aGUgY29uc3VtZXIgaW5jbHVkZWQgUmVhY3RpdmVGb3Jtc01vZHVsZSBpbiBpdCdzIG1vZHVsZS5cbiAgICogSXQgaXMgcmVxdWllcmVkIHRvIGJlIGZpbGxlZCBpZiBuYXNGb3JtQ29udHJvbE5hbWUgYWRkZWQuXG4gICAqL1xuICBASW5wdXQoKSBuYXNGb3JtR3JvdXA6IEZvcm1Hcm91cDtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNldHMgYSBmb3JtQ29udHJvbE5hbWUgZGlyZWN0aXZlIHRvIHRoZSBpbnB1dC5cbiAgICogSXQgcmVxdWlyZXMgdGhhdCB0aGUgY29uc3VtZXIgaW5jbHVkZWQgUmVhY3RpdmVGb3Jtc01vZHVsZSBpbiBpdCdzIG1vZHVsZS5cbiAgICogSXQgcmVxdWllcnMgdGhhdCB0aGUgbmFzRm9ybUdyb3VwIGlucHV0IGlzIGZpbGxlZC5cbiAgICovXG4gIEBJbnB1dCgpIG5hc0Zvcm1Db250cm9sTmFtZU91dGJvdW5kOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBTZXRzIGEgZm9ybUNvbnRyb2xOYW1lIGRpcmVjdGl2ZSB0byB0aGUgaW5wdXQuXG4gICAqIEl0IHJlcXVpcmVzIHRoYXQgdGhlIGNvbnN1bWVyIGluY2x1ZGVkIFJlYWN0aXZlRm9ybXNNb2R1bGUgaW4gaXQncyBtb2R1bGUuXG4gICAqIEl0IHJlcXVpZXJzIHRoYXQgdGhlIG5hc0Zvcm1Hcm91cCBpbnB1dCBpcyBmaWxsZWQuXG4gICAqL1xuICBASW5wdXQoKSBuYXNGb3JtQ29udHJvbE5hbWVJbmJvdW5kOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBTZWxlY3RlZCBkYXRlZm9yIG91dGJvdW5kIGNhbGVuZGFyLlxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IG91dGJvdW5kU2VsZWN0ZWREYXRlKCkge1xuICAgIHJldHVybiB0aGlzLm91dGJvdW5kU2VsZWN0ZWREYXRlVmFsdWU7XG4gIH1cbiAgc2V0IG91dGJvdW5kU2VsZWN0ZWREYXRlKGRhdGU6IFV0Y0RhdGUpIHtcbiAgICBpZiAoIWRhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vdXRib3VuZFNlbGVjdGVkRGF0ZVZhbHVlICYmIHRoaXMuZGF0ZVNlcnZpY2UuaXNTYW1lRGF0ZSh0aGlzLm91dGJvdW5kU2VsZWN0ZWREYXRlVmFsdWUsIGRhdGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5vdXRib3VuZFNlbGVjdGVkRGF0ZVZhbHVlID0gZGF0ZTtcblxuICAgIHRoaXMuaW5ib3VuZExvd2VyTGltaXREYXRlID0gbmV3IFV0Y0RhdGUoZGF0ZS55ZWFyLCBkYXRlLm1vbnRoLCAxKTtcbiAgICB0aGlzLmluYm91bmRMb3dlckxpbWl0RGF0ZS5zZXREYXRlKGRhdGUuZGF0ZSArIHRoaXMuaW5ib3VuZExvd2VyTGltaXREYXRlT2Zmc2V0KTtcblxuICAgIHRoaXMub3V0Ym91bmRTZWxlY3RlZERhdGVDaGFuZ2UuZW1pdChkYXRlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogU2VsZWN0ZWQgZGF0ZWZvciBpbmJvdW5kIGNhbGVuZGFyLlxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IGluYm91bmRTZWxlY3RlZERhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5ib3VuZFNlbGVjdGVkRGF0ZVZhbHVlO1xuICB9XG4gIHNldCBpbmJvdW5kU2VsZWN0ZWREYXRlKGRhdGU6IFV0Y0RhdGUpIHtcbiAgICBpZiAoIWRhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pbmJvdW5kU2VsZWN0ZWREYXRlVmFsdWUgJiYgdGhpcy5kYXRlU2VydmljZS5pc1NhbWVEYXRlKHRoaXMuaW5ib3VuZFNlbGVjdGVkRGF0ZVZhbHVlLCBkYXRlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaW5ib3VuZFNlbGVjdGVkRGF0ZVZhbHVlID0gZGF0ZTtcbiAgICB0aGlzLmluYm91bmRTZWxlY3RlZERhdGVDaGFuZ2UuZW1pdChkYXRlKTtcbiAgfVxuXG4gIEBJbnB1dCgpIGRpc2FibGVCYWNrZHJvcDogYm9vbGVhbjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNldHMgdGhlIG91dGJvdW5kIHNlbGVjdGVkIHRpbWUgaW4gdGhlIHRpbWUgc2VsZWN0b3IuXG4gICAqL1xuICBASW5wdXQoKSBvdXRib3VuZFNlbGVjdGVkVGltZTogVXRjRGF0ZTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNldHMgdGhlIGluYm91bmQgc2VsZWN0ZWQgdGltZSBpbiB0aGUgdGltZSBzZWxlY3Rvci5cbiAgICovXG4gIEBJbnB1dCgpIGluYm91bmRTZWxlY3RlZFRpbWU6IFV0Y0RhdGU7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBBUklBIGxhYmVsIGZvciB0aGUgcHJldmlvdXMgbW9udGggYnV0dG9uIGluIHRoZSBjYWxlbmRhci5cbiAgICovXG4gIEBJbnB1dCgpIGFyaWFMYWJlbFByZXZpb3VzTW9udGg6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFSSUEgbGFiZWwgZm9yIHRoZSBuZXh0IG1vbnRoIGJ1dHRvbiBpbiB0aGUgY2FsZW5kYXIuXG4gICAqL1xuICBASW5wdXQoKSBhcmlhTGFiZWxOZXh0TW9udGg6IHN0cmluZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNldHMgYSByZWxhdGl2ZSBudW1iZXIgdG8gZGVjaWRlIHdoZW4gdGhlIGluYm91bmQgbG93ZXIgbGltaXQgZGF0ZSBzaG91bGQgYmUgYmFzZWQgb24gc2VsZWN0ZWQgb3V0Ym91bmQgZGF0ZS5cbiAgICpcbiAgICogVGhlIGxvd2VyIGxpbWl0IGRhdGUgZm9yIGluYm91bmQgaXMgc2V0IGJ5IGRlZmF1bHQgZXF1YWwgdG8gdGhlIHNlbGVjdGVkIG91dGJvdW5kIGRhdGUuXG4gICAqXG4gICAqIElmIHRoaXMgbnVtYmVyIGlzIHBvc2l0aXZlLCB0aGUgaW5ib3VuZCBsb3dlciBsaW1pdCBkYXRlIHdpbGwgYWRkIHRoZSBudW1iZXIgb2YgZGF5cyB0byB0aGUgc2VsZWN0ZWQgb3V0Ym91bmQgZGF0ZS5cbiAgICogSWYgdGhpcyBudW1iZXIgaXMgbmVnYXRpdmUsIHRoZSBpbmJvdW5kIGxvd2VyIGxpbWl0IGRhdGUgd2lsbCBzdWJ0cmFjdCB0aGUgbnVtYmVyIG9mIGRheXMgdG8gdGhlIHNlbGVjdGVkIG91dGJvdW5kIGRhdGUuXG4gICAqL1xuICBASW5wdXQoKSBpbmJvdW5kTG93ZXJMaW1pdERhdGVPZmZzZXQgPSAwO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogV2hlbiBzZWxlY3RlZCBkYXRlaGFzIGJlZW4gY2hhbmdlZCBvbiB0aGUgb3V0Ym91bmQgY2FsZW5kYXIuXG4gICAqL1xuICBAT3V0cHV0KCkgb3V0Ym91bmRTZWxlY3RlZERhdGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFV0Y0RhdGU+KCk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBXaGVuIHNlbGVjdGVkIGRhdGVoYXMgYmVlbiBjaGFuZ2VkIG9uIHRoZSBpbmJvdW5kIGNhbGVuZGFyLlxuICAgKi9cbiAgQE91dHB1dCgpIGluYm91bmRTZWxlY3RlZERhdGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFV0Y0RhdGU+KCk7XG5cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIE91dGJvdW5kIGRhdGVwaWNrZXIgaXMgb3BlbiBvciBjbG9zZWQuXG4gICAqL1xuICBAT3V0cHV0KCkgb3V0Ym91bmRPcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogSW5ib3VuZCBkYXRlcGlja2VyIGlzIG9wZW4gb3IgY2xvc2VkLlxuICAgKi9cbiAgQE91dHB1dCgpIGluYm91bmRPcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogT3V0Ym91bmQgY2FsZW5kYXIgY2hhbmdlcyBtb250aC5cbiAgICovXG4gIEBPdXRwdXQoKSBvdXRib3VuZE1vbnRoQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxVdGNEYXRlPigpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogSW5ib3VuZCBjYWxlbmRhciBjaGFuZ2VzIG1vbnRoLlxuICAgKi9cbiAgQE91dHB1dCgpIGluYm91bmRNb250aENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VXRjRGF0ZT4oKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFdoZW4gYSB1c2VyIGhhcyBhY3RpdmVseSBjaGFuZ2VkIHRoZSBkYXRlLlxuICAgKi9cbiAgQE91dHB1dCgpIGZvY3VzT25OZXh0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogV2hlbiBhIHVzZXIgaGFzIHByZXNzZWQgc2hpZnQgKyB0YWIgdG8gZ28gdG8gcHJldmlvdXMgY29udHJvbC5cbiAgICovXG4gIEBPdXRwdXQoKSBmb2N1c09uUHJldmlvdXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEtleWJvYXJkRXZlbnQgfCBNb3VzZUV2ZW50PigpO1xuXG4gIGdldCBpbmJvdW5kU2VsZWN0ZWRNb250aCgpOiBVdGNEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5pbmJvdW5kU2VsZWN0ZWRNb250aFZhbHVlO1xuICB9XG4gIHNldCBpbmJvdW5kU2VsZWN0ZWRNb250aChtb250aDogVXRjRGF0ZSkge1xuICAgIGlmICghbW9udGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kYXRlU2VydmljZS5pc1NhbWVNb250aChtb250aCwgdGhpcy5pbmJvdW5kU2VsZWN0ZWRNb250aFZhbHVlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5pbmJvdW5kU2VsZWN0ZWRNb250aFZhbHVlID0gbW9udGg7XG4gICAgICB0aGlzLmluYm91bmRNb250aENoYW5nZS5lbWl0KG1vbnRoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb3V0Ym91bmRTZWxlY3RlZERhdGVWYWx1ZTogVXRjRGF0ZTtcbiAgcHJpdmF0ZSBpbmJvdW5kU2VsZWN0ZWREYXRlVmFsdWU6IFV0Y0RhdGU7XG4gIHByaXZhdGUgaW5ib3VuZFNlbGVjdGVkTW9udGhWYWx1ZTogVXRjRGF0ZTtcbiAgcHJpdmF0ZSBpbmJvdW5kT3BlblZhbHVlID0gZmFsc2U7XG4gIHByaXZhdGUgb3V0Ym91bmRPcGVuVmFsdWUgPSBmYWxzZTtcbiAgcHJpdmF0ZSBjb250YWluZXJXaWR0aCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcbiAgcHJpdmF0ZSBpbmJvdW5kVmFsdWVDaGFuZ2VzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgb3V0Ym91bmRWYWx1ZUNoYW5nZXNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGVTZXJ2aWNlOiBEYXRlSGVscGVyLCBwcml2YXRlIGRldmljZUhlbHBlcjogRGV2aWNlSGVscGVyKSB7XG4gICAgc3VwZXIoJ25hcy1kYXRlcGlja2VyLWNvbWJvJyk7XG5cbiAgICB3aW5kb3cub25yZXNpemUgPSAoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZUNvbnRhaW5lcldpZHRoKCk7XG4gICAgfTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm5hc0Zvcm1Hcm91cCkge1xuICAgICAgaWYgKHRoaXMubmFzRm9ybUNvbnRyb2xOYW1lT3V0Ym91bmQpIHtcbiAgICAgICAgdGhpcy5vdXRib3VuZFZhbHVlQ2hhbmdlc1N1YnNjcmlwdGlvbiA9IHRoaXMubmFzRm9ybUdyb3VwLmdldCh0aGlzLm5hc0Zvcm1Db250cm9sTmFtZU91dGJvdW5kKVxuICAgICAgICAgIC52YWx1ZUNoYW5nZXNcbiAgICAgICAgICAuc3Vic2NyaWJlKG91dGJvdW5kID0+IHtcbiAgICAgICAgICAgIHRoaXMub3V0Ym91bmRTZWxlY3RlZERhdGUgPSBvdXRib3VuZD8uZGF0ZTtcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm5hc0Zvcm1Db250cm9sTmFtZUluYm91bmQpIHtcbiAgICAgICAgdGhpcy5pbmJvdW5kVmFsdWVDaGFuZ2VzU3Vic2NyaXB0aW9uID0gdGhpcy5uYXNGb3JtR3JvdXAuZ2V0KHRoaXMubmFzRm9ybUNvbnRyb2xOYW1lSW5ib3VuZClcbiAgICAgICAgICAudmFsdWVDaGFuZ2VzXG4gICAgICAgICAgLnN1YnNjcmliZShpbmJvdW5kID0+IHtcbiAgICAgICAgICAgIHRoaXMuaW5ib3VuZFNlbGVjdGVkRGF0ZSA9IGluYm91bmQ/LmRhdGU7XG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlQ29udGFpbmVyV2lkdGgoKTtcbiAgfVxuXG4gIG9uRm9jdXNPbk5leHQoZXZlbnQ6IEtleWJvYXJkRXZlbnQgfCBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5mb2N1c09uTmV4dENoYW5nZS5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIG9uRm9jdXNPblByZXZpb3VzKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5mb2N1c09uUHJldmlvdXNDaGFuZ2UuZW1pdChldmVudCk7XG4gIH1cblxuICBvbkluYm91bmRGb2N1c09uUHJldmlvdXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudGltZXMgJiYgdGhpcy50aW1lcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBzZWxlY3RFbGVtZW50ID0gdGhpcy5kYXRlcGlja2VyT3V0Ym91bmQudGltZVNlbGVjdG9yPy5zZWxlY3Q/Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBzZWxlY3RFbGVtZW50Py5mb2N1cygpO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuaW5ib3VuZE9wZW5DaGFuZ2UuZW1pdChmYWxzZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3V0Ym91bmRPcGVuID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBvbk91dGJvdW5kTW9udGhDaGFuZ2UoZGF0ZTogVXRjRGF0ZSk6IHZvaWQge1xuICAgIHRoaXMub3V0Ym91bmRNb250aENoYW5nZS5lbWl0KGRhdGUpO1xuICAgIHRoaXMuaW5ib3VuZFNlbGVjdGVkTW9udGhWYWx1ZSA9IGRhdGU7XG4gIH1cblxuICBnZXRNYWluQ2xhc3MoKTogQXJyYXk8Q2xhc3NNb2RlbD4ge1xuICAgIGNvbnN0IHdpZHRocyA9IFtcbiAgICAgIHRoaXMuZGV2aWNlSGVscGVyLmlzV2lkdGhUYWJsZXQodGhpcy5jb250YWluZXJXaWR0aC5nZXRWYWx1ZSgpKSAmJiAnbWQnLFxuICAgICAgdGhpcy5kZXZpY2VIZWxwZXIuaXNXaWR0aERlc2t0b3AodGhpcy5jb250YWluZXJXaWR0aC5nZXRWYWx1ZSgpKSAmJiAnbGcnXG4gICAgXTtcblxuICAgIGlmICh0aGlzLmV4aXN0cyh0aGlzLmNvbXBhY3QpKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRDb250YWluZXJDbGFzcygnJywgWydjb21wYWN0JywgLi4ud2lkdGhzXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmdldENvbnRhaW5lckNsYXNzKCcnLCBbLi4ud2lkdGhzXSk7XG4gICAgfVxuICB9XG5cbiAgY2hlY2tPdXRib3VuZE9ubHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEodGhpcy5kZXZpY2VIZWxwZXIuaXNNb2JpbGVXaWR0aCgpICYmIHRoaXMuZXhpc3RzKHRoaXMub3V0Ym91bmRPbmx5KSk7XG4gIH1cblxuICBjaGVja0luYm91bmREaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKCF0aGlzLmRldmljZUhlbHBlci5pc01vYmlsZVdpZHRoKCkgJiYgdGhpcy5leGlzdHModGhpcy5vdXRib3VuZE9ubHkpKVxuICAgICAgfHwgdGhpcy5leGlzdHModGhpcy5pbmJvdW5kRGlzYWJsZWQpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5pbmJvdW5kVmFsdWVDaGFuZ2VzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMub3V0Ym91bmRWYWx1ZUNoYW5nZXNTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNvbnRhaW5lcldpZHRoKCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRhaW5lck9mZnNldFdpZHRoID0gKHRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLm9mZnNldFdpZHRoO1xuXG4gICAgaWYgKGNvbnRhaW5lck9mZnNldFdpZHRoID4gMCkge1xuICAgICAgdGhpcy5jb250YWluZXJXaWR0aC5uZXh0KGNvbnRhaW5lck9mZnNldFdpZHRoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==