@norwegian/core-components 5.18.1 → 5.18.2

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 (515) 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 +21 -9
  274. package/bundles/norwegian-core-components.umd.js +0 -12203
  275. package/bundles/norwegian-core-components.umd.js.map +0 -1
  276. package/esm2015/lib/components/accordion/accordion.component.js +0 -130
  277. package/esm2015/lib/components/accordion/accordion.module.js +0 -15
  278. package/esm2015/lib/components/airport-select/airport-select-dropdown/airport-select-dropdown.component.js +0 -583
  279. package/esm2015/lib/components/airport-select/airport-select.component.js +0 -400
  280. package/esm2015/lib/components/airport-select/airport-select.module.js +0 -27
  281. package/esm2015/lib/components/airport-select/services/airport-select-dropdown.service.js +0 -34
  282. package/esm2015/lib/components/airport-select/services/airport-select.service.js +0 -37
  283. package/esm2015/lib/components/autocomplete/autocomplete.component.js +0 -265
  284. package/esm2015/lib/components/autocomplete/autocomplete.module.js +0 -26
  285. package/esm2015/lib/components/backdrop/backdrop.component.js +0 -54
  286. package/esm2015/lib/components/backdrop/backdrop.module.js +0 -17
  287. package/esm2015/lib/components/box/box.component.js +0 -61
  288. package/esm2015/lib/components/box/box.module.js +0 -14
  289. package/esm2015/lib/components/button/button.component.js +0 -140
  290. package/esm2015/lib/components/button/button.module.js +0 -15
  291. package/esm2015/lib/components/checkbox/checkbox.component.js +0 -127
  292. package/esm2015/lib/components/checkbox/checkbox.module.js +0 -15
  293. package/esm2015/lib/components/chip/chip.component.js +0 -50
  294. package/esm2015/lib/components/chip/chip.module.js +0 -17
  295. package/esm2015/lib/components/container/container.component.js +0 -47
  296. package/esm2015/lib/components/container/container.module.js +0 -14
  297. package/esm2015/lib/components/continue/continue.component.js +0 -173
  298. package/esm2015/lib/components/continue/continue.module.js +0 -23
  299. package/esm2015/lib/components/cover/cover.component.js +0 -61
  300. package/esm2015/lib/components/cover/cover.module.js +0 -16
  301. package/esm2015/lib/components/datepicker/calendar/calendar.component.js +0 -560
  302. package/esm2015/lib/components/datepicker/datepicker.component.js +0 -515
  303. package/esm2015/lib/components/datepicker/datepicker.module.js +0 -34
  304. package/esm2015/lib/components/datepicker/services/calendar.service.js +0 -217
  305. package/esm2015/lib/components/datepicker-combo/datepicker-combo.component.js +0 -317
  306. package/esm2015/lib/components/datepicker-combo/datepicker-combo.module.js +0 -22
  307. package/esm2015/lib/components/divider/divider.component.js +0 -53
  308. package/esm2015/lib/components/divider/divider.module.js +0 -15
  309. package/esm2015/lib/components/dropdown/dropdown.component.js +0 -150
  310. package/esm2015/lib/components/dropdown/dropdown.module.js +0 -21
  311. package/esm2015/lib/components/filter/filter.component.js +0 -1122
  312. package/esm2015/lib/components/filter/filter.module.js +0 -44
  313. package/esm2015/lib/components/grid/col/col.component.js +0 -49
  314. package/esm2015/lib/components/grid/grid.component.js +0 -63
  315. package/esm2015/lib/components/grid/grid.module.js +0 -15
  316. package/esm2015/lib/components/icon/icon.component.js +0 -42
  317. package/esm2015/lib/components/icon/icon.module.js +0 -17
  318. package/esm2015/lib/components/icon-list/icon-list.component.js +0 -46
  319. package/esm2015/lib/components/icon-list/icon-list.module.js +0 -15
  320. package/esm2015/lib/components/info/info.component.js +0 -94
  321. package/esm2015/lib/components/info/info.module.js +0 -23
  322. package/esm2015/lib/components/input/input.component.js +0 -148
  323. package/esm2015/lib/components/input/input.module.js +0 -16
  324. package/esm2015/lib/components/journey/journey.component.js +0 -122
  325. package/esm2015/lib/components/journey/journey.module.js +0 -19
  326. package/esm2015/lib/components/journey-availability/journey-availability.component.js +0 -125
  327. package/esm2015/lib/components/journey-availability/journey-availability.module.js +0 -26
  328. package/esm2015/lib/components/journey-availability-list/journey-availability-list.component.js +0 -175
  329. package/esm2015/lib/components/journey-selection/journey-selection.component.js +0 -110
  330. package/esm2015/lib/components/journey-selection/journey-selection.module.js +0 -24
  331. package/esm2015/lib/components/journey-stopover/journey-stopover.component.js +0 -121
  332. package/esm2015/lib/components/journey-stopover/journey-stopover.module.js +0 -19
  333. package/esm2015/lib/components/list/list-item/list-item.component.js +0 -56
  334. package/esm2015/lib/components/list/list.component.js +0 -75
  335. package/esm2015/lib/components/list/list.module.js +0 -15
  336. package/esm2015/lib/components/modal/modal.component.js +0 -131
  337. package/esm2015/lib/components/modal/modal.module.js +0 -25
  338. package/esm2015/lib/components/number-field/number-field.component.js +0 -118
  339. package/esm2015/lib/components/number-field/number-field.module.js +0 -24
  340. package/esm2015/lib/components/page-footer/page-footer.component.js +0 -49
  341. package/esm2015/lib/components/page-footer/page-footer.module.js +0 -16
  342. package/esm2015/lib/components/page-header/hamburger/hamburger.component.js +0 -24
  343. package/esm2015/lib/components/page-header/page-header.component.js +0 -126
  344. package/esm2015/lib/components/page-header/page-header.module.js +0 -18
  345. package/esm2015/lib/components/page-header/search/search.component.js +0 -47
  346. package/esm2015/lib/components/passenger-select/passenger-select.component.js +0 -207
  347. package/esm2015/lib/components/passenger-select/passenger-select.module.js +0 -19
  348. package/esm2015/lib/components/phone-number/phone-number.component.js +0 -115
  349. package/esm2015/lib/components/phone-number/phone-number.module.js +0 -27
  350. package/esm2015/lib/components/premium-toggle/premium-toggle.component.js +0 -66
  351. package/esm2015/lib/components/premium-toggle/premium-toggle.module.js +0 -19
  352. package/esm2015/lib/components/radio/radio.component.js +0 -79
  353. package/esm2015/lib/components/radio/radio.module.js +0 -15
  354. package/esm2015/lib/components/select/optgroup/optgroup.component.js +0 -31
  355. package/esm2015/lib/components/select/option/option.component.js +0 -29
  356. package/esm2015/lib/components/select/select.component.js +0 -325
  357. package/esm2015/lib/components/select/select.module.js +0 -21
  358. package/esm2015/lib/components/simple-list/simple-list.component.js +0 -42
  359. package/esm2015/lib/components/simple-list/simple-list.module.js +0 -14
  360. package/esm2015/lib/components/slide-toggle/slide-toggle.component.js +0 -105
  361. package/esm2015/lib/components/slide-toggle/slide-toggle.module.js +0 -20
  362. package/esm2015/lib/components/slider/slider.component.js +0 -475
  363. package/esm2015/lib/components/slider/slider.module.js +0 -19
  364. package/esm2015/lib/components/sort/sort.component.js +0 -87
  365. package/esm2015/lib/components/sort/sort.module.js +0 -23
  366. package/esm2015/lib/components/spinner/spinner.component.js +0 -109
  367. package/esm2015/lib/components/spinner/spinner.module.js +0 -14
  368. package/esm2015/lib/components/subsidy-discount/subsidy-discount.component.js +0 -101
  369. package/esm2015/lib/components/subsidy-discount/subsidy-discount.module.js +0 -23
  370. package/esm2015/lib/components/suggestions/suggestions.component.js +0 -40
  371. package/esm2015/lib/components/suggestions/suggestions.module.js +0 -19
  372. package/esm2015/lib/components/tab-group/tab/tab.component.js +0 -123
  373. package/esm2015/lib/components/tab-group/tab-group.component.js +0 -85
  374. package/esm2015/lib/components/tab-group/tab-group.module.js +0 -20
  375. package/esm2015/lib/components/table/column/column.component.js +0 -17
  376. package/esm2015/lib/components/table/column-group/column-group.component.js +0 -34
  377. package/esm2015/lib/components/table/services/table.service.js +0 -20
  378. package/esm2015/lib/components/table/table-body/table-body.component.js +0 -27
  379. package/esm2015/lib/components/table/table-foot/table-foot.component.js +0 -27
  380. package/esm2015/lib/components/table/table-head/table-head.component.js +0 -27
  381. package/esm2015/lib/components/table/table-row/table-data/table-data.component.js +0 -15
  382. package/esm2015/lib/components/table/table-row/table-header/table-header.component.js +0 -15
  383. package/esm2015/lib/components/table/table-row/table-row.component.js +0 -27
  384. package/esm2015/lib/components/table/table.component.js +0 -29
  385. package/esm2015/lib/components/table/table.module.js +0 -45
  386. package/esm2015/lib/components/textarea/textarea.component.js +0 -73
  387. package/esm2015/lib/components/textarea/textarea.module.js +0 -20
  388. package/esm2015/lib/components/toggle/toggle.component.js +0 -86
  389. package/esm2015/lib/components/toggle/toggle.module.js +0 -22
  390. package/esm2015/lib/components/trip-summary/trip-summary.component.js +0 -152
  391. package/esm2015/lib/components/trip-summary/trip-summary.module.js +0 -23
  392. package/esm2015/lib/components/weather-icon/weather-icon.component.js +0 -56
  393. package/esm2015/lib/components/weather-icon/weather-icon.module.js +0 -14
  394. package/esm2015/lib/core/base/nas-component.base.js +0 -48
  395. package/esm2015/lib/core/directives/nas-class/nas-class.directive.js +0 -75
  396. package/esm2015/lib/core/directives/nas-class/nas-class.module.js +0 -17
  397. package/esm2015/lib/core/services/abandoned-basket/abandoned-basket.service.js +0 -55
  398. package/esm2015/lib/core/services/animate-helper/animate-helper.service.js +0 -47
  399. package/esm2015/lib/core/services/bem-helper/bem-helper.service.js +0 -41
  400. package/esm2015/lib/core/services/date/date-helper.service.js +0 -196
  401. package/esm2015/lib/core/services/device/device-helper.service.js +0 -43
  402. package/esm2015/lib/core/services/geolocation/geolocation.service.js +0 -60
  403. package/esm2015/lib/core/services/language/language-helper.service.js +0 -162
  404. package/esm2015/lib/core/services/sort/sort.service.js +0 -19
  405. package/esm2015/lib/core/services/viewport/viewport.service.js +0 -29
  406. package/esm2015/lib/services/get-position.service.js +0 -21
  407. package/esm2015/norwegian-core-components.js +0 -12
  408. package/fesm2015/norwegian-core-components.js +0 -10860
  409. package/fesm2015/norwegian-core-components.js.map +0 -1
  410. package/norwegian-core-components.d.ts +0 -11
  411. package/norwegian-core-components.metadata.json +0 -1
  412. /package/{esm2015/lib/components/accordion/index.js → esm2020/lib/components/accordion/index.mjs} +0 -0
  413. /package/{esm2015/lib/components/airport-select/index.js → esm2020/lib/components/airport-select/index.mjs} +0 -0
  414. /package/{esm2015/lib/components/airport-select/models/airport.model.js → esm2020/lib/components/airport-select/models/airport.model.mjs} +0 -0
  415. /package/{esm2015/lib/components/airport-select/models/results-labels.model.js → esm2020/lib/components/airport-select/models/results-labels.model.mjs} +0 -0
  416. /package/{esm2015/lib/components/autocomplete/index.js → esm2020/lib/components/autocomplete/index.mjs} +0 -0
  417. /package/{esm2015/lib/components/autocomplete/models/autocomplete.model.js → esm2020/lib/components/autocomplete/models/autocomplete.model.mjs} +0 -0
  418. /package/{esm2015/lib/components/backdrop/index.js → esm2020/lib/components/backdrop/index.mjs} +0 -0
  419. /package/{esm2015/lib/components/box/index.js → esm2020/lib/components/box/index.mjs} +0 -0
  420. /package/{esm2015/lib/components/button/index.js → esm2020/lib/components/button/index.mjs} +0 -0
  421. /package/{esm2015/lib/components/checkbox/index.js → esm2020/lib/components/checkbox/index.mjs} +0 -0
  422. /package/{esm2015/lib/components/chip/index.js → esm2020/lib/components/chip/index.mjs} +0 -0
  423. /package/{esm2015/lib/components/container/index.js → esm2020/lib/components/container/index.mjs} +0 -0
  424. /package/{esm2015/lib/components/continue/index.js → esm2020/lib/components/continue/index.mjs} +0 -0
  425. /package/{esm2015/lib/components/cover/index.js → esm2020/lib/components/cover/index.mjs} +0 -0
  426. /package/{esm2015/lib/components/datepicker/calendar/calendar-date.model.js → esm2020/lib/components/datepicker/calendar/calendar-date.model.mjs} +0 -0
  427. /package/{esm2015/lib/components/datepicker/calendar/enums/week-start.enum.js → esm2020/lib/components/datepicker/calendar/enums/week-start.enum.mjs} +0 -0
  428. /package/{esm2015/lib/components/datepicker/calendar/models/day.model.js → esm2020/lib/components/datepicker/calendar/models/day.model.mjs} +0 -0
  429. /package/{esm2015/lib/components/datepicker/calendar/models/select-option.model.js → esm2020/lib/components/datepicker/calendar/models/select-option.model.mjs} +0 -0
  430. /package/{esm2015/lib/components/datepicker/calendar/models/week.model.js → esm2020/lib/components/datepicker/calendar/models/week.model.mjs} +0 -0
  431. /package/{esm2015/lib/components/datepicker/index.js → esm2020/lib/components/datepicker/index.mjs} +0 -0
  432. /package/{esm2015/lib/components/datepicker-combo/index.js → esm2020/lib/components/datepicker-combo/index.mjs} +0 -0
  433. /package/{esm2015/lib/components/divider/index.js → esm2020/lib/components/divider/index.mjs} +0 -0
  434. /package/{esm2015/lib/components/dropdown/index.js → esm2020/lib/components/dropdown/index.mjs} +0 -0
  435. /package/{esm2015/lib/components/filter/enums/trip-type.enum.js → esm2020/lib/components/filter/enums/trip-type.enum.mjs} +0 -0
  436. /package/{esm2015/lib/components/filter/index.js → esm2020/lib/components/filter/index.mjs} +0 -0
  437. /package/{esm2015/lib/components/grid/index.js → esm2020/lib/components/grid/index.mjs} +0 -0
  438. /package/{esm2015/lib/components/icon/index.js → esm2020/lib/components/icon/index.mjs} +0 -0
  439. /package/{esm2015/lib/components/icon-list/icon-list.model.js → esm2020/lib/components/icon-list/icon-list.model.mjs} +0 -0
  440. /package/{esm2015/lib/components/icon-list/index.js → esm2020/lib/components/icon-list/index.mjs} +0 -0
  441. /package/{esm2015/lib/components/index.js → esm2020/lib/components/index.mjs} +0 -0
  442. /package/{esm2015/lib/components/info/index.js → esm2020/lib/components/info/index.mjs} +0 -0
  443. /package/{esm2015/lib/components/info/models/info.model.js → esm2020/lib/components/info/models/info.model.mjs} +0 -0
  444. /package/{esm2015/lib/components/input/index.js → esm2020/lib/components/input/index.mjs} +0 -0
  445. /package/{esm2015/lib/components/journey/index.js → esm2020/lib/components/journey/index.mjs} +0 -0
  446. /package/{esm2015/lib/components/journey/models/journey-flight.model.js → esm2020/lib/components/journey/models/journey-flight.model.mjs} +0 -0
  447. /package/{esm2015/lib/components/journey/models/journey.model.js → esm2020/lib/components/journey/models/journey.model.mjs} +0 -0
  448. /package/{esm2015/lib/components/journey-availability/index.js → esm2020/lib/components/journey-availability/index.mjs} +0 -0
  449. /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
  450. /package/{esm2015/lib/components/journey-availability-list/index.js → esm2020/lib/components/journey-availability-list/index.mjs} +0 -0
  451. /package/{esm2015/lib/components/journey-selection/index.js → esm2020/lib/components/journey-selection/index.mjs} +0 -0
  452. /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
  453. /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
  454. /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
  455. /package/{esm2015/lib/components/journey-selection/models/journey-selection.model.js → esm2020/lib/components/journey-selection/models/journey-selection.model.mjs} +0 -0
  456. /package/{esm2015/lib/components/journey-stopover/index.js → esm2020/lib/components/journey-stopover/index.mjs} +0 -0
  457. /package/{esm2015/lib/components/journey-stopover/models/stopover-time.model.js → esm2020/lib/components/journey-stopover/models/stopover-time.model.mjs} +0 -0
  458. /package/{esm2015/lib/components/list/index.js → esm2020/lib/components/list/index.mjs} +0 -0
  459. /package/{esm2015/lib/components/modal/index.js → esm2020/lib/components/modal/index.mjs} +0 -0
  460. /package/{esm2015/lib/components/number-field/index.js → esm2020/lib/components/number-field/index.mjs} +0 -0
  461. /package/{esm2015/lib/components/page-footer/index.js → esm2020/lib/components/page-footer/index.mjs} +0 -0
  462. /package/{esm2015/lib/components/page-header/index.js → esm2020/lib/components/page-header/index.mjs} +0 -0
  463. /package/{esm2015/lib/components/passenger-select/enums/passenger-type.enum.js → esm2020/lib/components/passenger-select/enums/passenger-type.enum.mjs} +0 -0
  464. /package/{esm2015/lib/components/passenger-select/index.js → esm2020/lib/components/passenger-select/index.mjs} +0 -0
  465. /package/{esm2015/lib/components/phone-number/index.js → esm2020/lib/components/phone-number/index.mjs} +0 -0
  466. /package/{esm2015/lib/components/premium-toggle/index.js → esm2020/lib/components/premium-toggle/index.mjs} +0 -0
  467. /package/{esm2015/lib/components/radio/index.js → esm2020/lib/components/radio/index.mjs} +0 -0
  468. /package/{esm2015/lib/components/select/index.js → esm2020/lib/components/select/index.mjs} +0 -0
  469. /package/{esm2015/lib/components/select/models/select-option.model.js → esm2020/lib/components/select/models/select-option.model.mjs} +0 -0
  470. /package/{esm2015/lib/components/simple-list/index.js → esm2020/lib/components/simple-list/index.mjs} +0 -0
  471. /package/{esm2015/lib/components/slide-toggle/index.js → esm2020/lib/components/slide-toggle/index.mjs} +0 -0
  472. /package/{esm2015/lib/components/slider/index.js → esm2020/lib/components/slider/index.mjs} +0 -0
  473. /package/{esm2015/lib/components/sort/index.js → esm2020/lib/components/sort/index.mjs} +0 -0
  474. /package/{esm2015/lib/components/spinner/index.js → esm2020/lib/components/spinner/index.mjs} +0 -0
  475. /package/{esm2015/lib/components/subsidy-discount/index.js → esm2020/lib/components/subsidy-discount/index.mjs} +0 -0
  476. /package/{esm2015/lib/components/subsidy-discount/models/subsidy-discount.model.js → esm2020/lib/components/subsidy-discount/models/subsidy-discount.model.mjs} +0 -0
  477. /package/{esm2015/lib/components/suggestions/index.js → esm2020/lib/components/suggestions/index.mjs} +0 -0
  478. /package/{esm2015/lib/components/tab-group/index.js → esm2020/lib/components/tab-group/index.mjs} +0 -0
  479. /package/{esm2015/lib/components/table/index.js → esm2020/lib/components/table/index.mjs} +0 -0
  480. /package/{esm2015/lib/components/textarea/index.js → esm2020/lib/components/textarea/index.mjs} +0 -0
  481. /package/{esm2015/lib/components/toggle/index.js → esm2020/lib/components/toggle/index.mjs} +0 -0
  482. /package/{esm2015/lib/components/toggle/models/options.model.js → esm2020/lib/components/toggle/models/options.model.mjs} +0 -0
  483. /package/{esm2015/lib/components/trip-summary/index.js → esm2020/lib/components/trip-summary/index.mjs} +0 -0
  484. /package/{esm2015/lib/components/weather-icon/index.js → esm2020/lib/components/weather-icon/index.mjs} +0 -0
  485. /package/{esm2015/lib/core/decorators/debounce.decorator.js → esm2020/lib/core/decorators/debounce.decorator.mjs} +0 -0
  486. /package/{esm2015/lib/core/directives/index.js → esm2020/lib/core/directives/index.mjs} +0 -0
  487. /package/{esm2015/lib/core/index.js → esm2020/lib/core/index.mjs} +0 -0
  488. /package/{esm2015/lib/core/models/abandoned-basket-item.model.js → esm2020/lib/core/models/abandoned-basket-item.model.mjs} +0 -0
  489. /package/{esm2015/lib/core/models/animate.model.js → esm2020/lib/core/models/animate.model.mjs} +0 -0
  490. /package/{esm2015/lib/core/models/class.model.js → esm2020/lib/core/models/class.model.mjs} +0 -0
  491. /package/{esm2015/lib/core/models/index.js → esm2020/lib/core/models/index.mjs} +0 -0
  492. /package/{esm2015/lib/core/models/link.model.js → esm2020/lib/core/models/link.model.mjs} +0 -0
  493. /package/{esm2015/lib/core/models/position.model.js → esm2020/lib/core/models/position.model.mjs} +0 -0
  494. /package/{esm2015/lib/core/models/utc-date.model.js → esm2020/lib/core/models/utc-date.model.mjs} +0 -0
  495. /package/{esm2015/lib/core/services/date/date-compare.enum.js → esm2020/lib/core/services/date/date-compare.enum.mjs} +0 -0
  496. /package/{esm2015/lib/core/services/geolocation/geolocation-state.enum.js → esm2020/lib/core/services/geolocation/geolocation-state.enum.mjs} +0 -0
  497. /package/{esm2015/lib/core/services/index.js → esm2020/lib/core/services/index.mjs} +0 -0
  498. /package/{esm2015/lib/index.js → esm2020/lib/index.mjs} +0 -0
  499. /package/{esm2015/lib/services/index.js → esm2020/lib/services/index.mjs} +0 -0
  500. /package/{esm2015/lib/shared/index.js → esm2020/lib/shared/index.mjs} +0 -0
  501. /package/{esm2015/lib/shared/models/flight-details.js → esm2020/lib/shared/models/flight-details.mjs} +0 -0
  502. /package/{esm2015/lib/shared/models/index.js → esm2020/lib/shared/models/index.mjs} +0 -0
  503. /package/{esm2015/lib/shared/models/journey-availability-sort.model.js → esm2020/lib/shared/models/journey-availability-sort.model.mjs} +0 -0
  504. /package/{esm2015/lib/shared/models/journey-availability.model.js → esm2020/lib/shared/models/journey-availability.model.mjs} +0 -0
  505. /package/{esm2015/lib/shared/models/journey-details.model.js → esm2020/lib/shared/models/journey-details.model.mjs} +0 -0
  506. /package/{esm2015/lib/shared/models/journey-duration.model.js → esm2020/lib/shared/models/journey-duration.model.mjs} +0 -0
  507. /package/{esm2015/lib/shared/models/journey-stopover.model.js → esm2020/lib/shared/models/journey-stopover.model.mjs} +0 -0
  508. /package/{esm2015/lib/shared/models/journey-transit-info.model.js → esm2020/lib/shared/models/journey-transit-info.model.mjs} +0 -0
  509. /package/{esm2015/lib/shared/models/operating-carrier.model.js → esm2020/lib/shared/models/operating-carrier.model.mjs} +0 -0
  510. /package/{esm2015/lib/shared/models/sort-option.model.js → esm2020/lib/shared/models/sort-option.model.mjs} +0 -0
  511. /package/{esm2015/lib/shared/models/sort.model.js → esm2020/lib/shared/models/sort.model.mjs} +0 -0
  512. /package/{esm2015/lib/shared/models/trip-item-details.model.js → esm2020/lib/shared/models/trip-item-details.model.mjs} +0 -0
  513. /package/{esm2015/lib/shared/models/trip-summary-details.model.js → esm2020/lib/shared/models/trip-summary-details.model.mjs} +0 -0
  514. /package/{esm2015/lib/shared/models/trip-summary.model.js → esm2020/lib/shared/models/trip-summary.model.mjs} +0 -0
  515. /package/{esm2015/public_api.js → esm2020/public_api.mjs} +0 -0
@@ -0,0 +1,22 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { NasClassDirective } from './nas-class.directive';
4
+ import { BemHelper } from '../../services/bem-helper/bem-helper.service';
5
+ import * as i0 from "@angular/core";
6
+ export class NasClassModule {
7
+ }
8
+ NasClassModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NasClassModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9
+ NasClassModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: NasClassModule, declarations: [NasClassDirective], imports: [CommonModule], exports: [NasClassDirective] });
10
+ NasClassModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NasClassModule, providers: [BemHelper], imports: [CommonModule] });
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NasClassModule, decorators: [{
12
+ type: NgModule,
13
+ args: [{
14
+ imports: [
15
+ CommonModule
16
+ ],
17
+ declarations: [NasClassDirective],
18
+ exports: [NasClassDirective],
19
+ providers: [BemHelper]
20
+ }]
21
+ }] });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFzLWNsYXNzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUtY29tcG9uZW50cy9zcmMvbGliL2NvcmUvZGlyZWN0aXZlcy9uYXMtY2xhc3MvbmFzLWNsYXNzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sOENBQThDLENBQUM7O0FBVXpFLE1BQU0sT0FBTyxjQUFjOzsyR0FBZCxjQUFjOzRHQUFkLGNBQWMsaUJBSlYsaUJBQWlCLGFBRjlCLFlBQVksYUFHSixpQkFBaUI7NEdBR2hCLGNBQWMsYUFGZCxDQUFDLFNBQVMsQ0FBQyxZQUpwQixZQUFZOzJGQU1ILGNBQWM7a0JBUjFCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7cUJBQ2I7b0JBQ0QsWUFBWSxFQUFFLENBQUMsaUJBQWlCLENBQUM7b0JBQ2pDLE9BQU8sRUFBRSxDQUFDLGlCQUFpQixDQUFDO29CQUM1QixTQUFTLEVBQUUsQ0FBQyxTQUFTLENBQUM7aUJBQ3ZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IE5hc0NsYXNzRGlyZWN0aXZlIH0gZnJvbSAnLi9uYXMtY2xhc3MuZGlyZWN0aXZlJztcbmltcG9ydCB7IEJlbUhlbHBlciB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2JlbS1oZWxwZXIvYmVtLWhlbHBlci5zZXJ2aWNlJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZVxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtOYXNDbGFzc0RpcmVjdGl2ZV0sXG4gIGV4cG9ydHM6IFtOYXNDbGFzc0RpcmVjdGl2ZV0sXG4gIHByb3ZpZGVyczogW0JlbUhlbHBlcl1cbn0pXG5leHBvcnQgY2xhc3MgTmFzQ2xhc3NNb2R1bGUgeyB9XG4iXX0=
@@ -28,4 +28,4 @@ function ReplaceWithPolyfill() {
28
28
  }
29
29
  HTMLElement.prototype.replaceWith = ReplaceWithPolyfill;
30
30
  export {};
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC1lbGVtZW50LmV4dGVuc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUtY29tcG9uZW50cy9zcmMvbGliL2NvcmUvZXh0ZW5zaW9ucy9odG1sLWVsZW1lbnQuZXh0ZW5zaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLFNBQVMsbUJBQW1CO0lBQ3hCLFlBQVksQ0FBQyxDQUFDLDBCQUEwQjtJQUN4QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQy9CLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUM7SUFDekIsSUFBSSxXQUFtRSxDQUFDO0lBRXhFLElBQUksQ0FBQyxNQUFNLEVBQUU7UUFBRSxPQUFPO0tBQUU7SUFDeEIsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLDRCQUE0QjtRQUNsQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzVCO0lBQ0QsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLG1FQUFtRTtRQUM3RSxXQUFXLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNCLElBQUksT0FBTyxXQUFXLEtBQUssUUFBUSxFQUFFO1lBQ2pDLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUNoRTthQUFNLElBQUksV0FBVyxDQUFDLFVBQVUsRUFBRTtZQUMvQixXQUFXLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUNuRDtRQUNELGdEQUFnRDtRQUNoRCxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsc0VBQXNFO1lBQzVFLE1BQU0sQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQzFDO2FBQU0sRUFBRSxpQ0FBaUM7WUFDdEMsTUFBTSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ3REO0tBQ0o7QUFDTCxDQUFDO0FBRUQsV0FBVyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyB9O1xuZGVjbGFyZSBnbG9iYWwge1xuICAgIGludGVyZmFjZSBIVE1MRWxlbWVudCB7XG4gICAgICAgIHJlcGxhY2VXaXRoKC4uLm5vZGVzOiAoTm9kZSB8IHN0cmluZylbXSk6IHZvaWQ7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBSZXBsYWNlV2l0aFBvbHlmaWxsKCkge1xuICAgICd1c2Utc3RyaWN0JzsgLy8gRm9yIHNhZmFyaSwgYW5kIElFID4gMTBcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLnBhcmVudE5vZGU7XG4gICAgbGV0IGkgPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIGxldCBjdXJyZW50Tm9kZTogeyBwYXJlbnROb2RlOiB7IHJlbW92ZUNoaWxkOiAoYXJnMDogYW55KSA9PiB2b2lkOyB9OyB9O1xuXG4gICAgaWYgKCFwYXJlbnQpIHsgcmV0dXJuOyB9XG4gICAgaWYgKCFpKSB7IC8vIGlmIHRoZXJlIGFyZSBubyBhcmd1bWVudHNcbiAgICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKHRoaXMpO1xuICAgIH1cbiAgICB3aGlsZSAoaS0tKSB7IC8vIGktLSBkZWNyZW1lbnRzIGkgYW5kIHJldHVybnMgdGhlIHZhbHVlIG9mIGkgYmVmb3JlIHRoZSBkZWNyZW1lbnRcbiAgICAgICAgY3VycmVudE5vZGUgPSBhcmd1bWVudHNbaV07XG4gICAgICAgIGlmICh0eXBlb2YgY3VycmVudE5vZGUgIT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBjdXJyZW50Tm9kZSA9IHRoaXMub3duZXJEb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjdXJyZW50Tm9kZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoY3VycmVudE5vZGUucGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgY3VycmVudE5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChjdXJyZW50Tm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gdGhlIHZhbHVlIG9mIFwiaVwiIGJlbG93IGlzIGFmdGVyIHRoZSBkZWNyZW1lbnRcbiAgICAgICAgaWYgKCFpKSB7IC8vIGlmIGN1cnJlbnROb2RlIGlzIHRoZSBmaXJzdCBhcmd1bWVudCAoY3VycmVudE5vZGUgPT09IGFyZ3VtZW50c1swXSlcbiAgICAgICAgICAgIHBhcmVudC5yZXBsYWNlQ2hpbGQoY3VycmVudE5vZGUsIHRoaXMpO1xuICAgICAgICB9IGVsc2UgeyAvLyBpZiBjdXJyZW50Tm9kZSBpc24ndCB0aGUgZmlyc3RcbiAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUoY3VycmVudE5vZGUsIHRoaXMubmV4dFNpYmxpbmcpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5IVE1MRWxlbWVudC5wcm90b3R5cGUucmVwbGFjZVdpdGggPSBSZXBsYWNlV2l0aFBvbHlmaWxsO1xuIl19
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC1lbGVtZW50LmV4dGVuc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUtY29tcG9uZW50cy9zcmMvbGliL2NvcmUvZXh0ZW5zaW9ucy9odG1sLWVsZW1lbnQuZXh0ZW5zaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLFNBQVMsbUJBQW1CO0lBQ3hCLFlBQVksQ0FBQyxDQUFDLDBCQUEwQjtJQUN4QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQy9CLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUM7SUFDekIsSUFBSSxXQUFpRSxDQUFDO0lBRXRFLElBQUksQ0FBQyxNQUFNLEVBQUU7UUFDaEIsT0FBTztLQUNQO0lBQ0csSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLDRCQUE0QjtRQUNsQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzVCO0lBQ0QsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLG1FQUFtRTtRQUM3RSxXQUFXLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNCLElBQUksT0FBTyxXQUFXLEtBQUssUUFBUSxFQUFFO1lBQ2pDLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUNoRTthQUFNLElBQUksV0FBVyxDQUFDLFVBQVUsRUFBRTtZQUMvQixXQUFXLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUNuRDtRQUNELGdEQUFnRDtRQUNoRCxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsc0VBQXNFO1lBQzVFLE1BQU0sQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQzFDO2FBQU0sRUFBRSxpQ0FBaUM7WUFDdEMsTUFBTSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ3REO0tBQ0o7QUFDTCxDQUFDO0FBRUQsV0FBVyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyB9O1xuZGVjbGFyZSBnbG9iYWwge1xuICAgIGludGVyZmFjZSBIVE1MRWxlbWVudCB7XG4gICAgICAgIHJlcGxhY2VXaXRoKC4uLm5vZGVzOiAoTm9kZSB8IHN0cmluZylbXSk6IHZvaWQ7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBSZXBsYWNlV2l0aFBvbHlmaWxsKCkge1xuICAgICd1c2Utc3RyaWN0JzsgLy8gRm9yIHNhZmFyaSwgYW5kIElFID4gMTBcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLnBhcmVudE5vZGU7XG4gICAgbGV0IGkgPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIGxldCBjdXJyZW50Tm9kZTogeyBwYXJlbnROb2RlOiB7IHJlbW92ZUNoaWxkOiAoYXJnMDogYW55KSA9PiB2b2lkIH0gfTtcblxuICAgIGlmICghcGFyZW50KSB7XG4gcmV0dXJuO1xufVxuICAgIGlmICghaSkgeyAvLyBpZiB0aGVyZSBhcmUgbm8gYXJndW1lbnRzXG4gICAgICAgIHBhcmVudC5yZW1vdmVDaGlsZCh0aGlzKTtcbiAgICB9XG4gICAgd2hpbGUgKGktLSkgeyAvLyBpLS0gZGVjcmVtZW50cyBpIGFuZCByZXR1cm5zIHRoZSB2YWx1ZSBvZiBpIGJlZm9yZSB0aGUgZGVjcmVtZW50XG4gICAgICAgIGN1cnJlbnROb2RlID0gYXJndW1lbnRzW2ldO1xuICAgICAgICBpZiAodHlwZW9mIGN1cnJlbnROb2RlICE9PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgY3VycmVudE5vZGUgPSB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3VycmVudE5vZGUpO1xuICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnROb2RlLnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgIGN1cnJlbnROb2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoY3VycmVudE5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHRoZSB2YWx1ZSBvZiBcImlcIiBiZWxvdyBpcyBhZnRlciB0aGUgZGVjcmVtZW50XG4gICAgICAgIGlmICghaSkgeyAvLyBpZiBjdXJyZW50Tm9kZSBpcyB0aGUgZmlyc3QgYXJndW1lbnQgKGN1cnJlbnROb2RlID09PSBhcmd1bWVudHNbMF0pXG4gICAgICAgICAgICBwYXJlbnQucmVwbGFjZUNoaWxkKGN1cnJlbnROb2RlLCB0aGlzKTtcbiAgICAgICAgfSBlbHNlIHsgLy8gaWYgY3VycmVudE5vZGUgaXNuJ3QgdGhlIGZpcnN0XG4gICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKGN1cnJlbnROb2RlLCB0aGlzLm5leHRTaWJsaW5nKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuSFRNTEVsZW1lbnQucHJvdG90eXBlLnJlcGxhY2VXaXRoID0gUmVwbGFjZVdpdGhQb2x5ZmlsbDtcbiJdfQ==
@@ -0,0 +1,58 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class AbandonedBasketService {
4
+ constructor() {
5
+ this.abandonedBasketKey = 'ngStorage-abandonedBasket';
6
+ }
7
+ getAll() {
8
+ let abandonedBasket = [];
9
+ try {
10
+ if (!localStorage) {
11
+ return [];
12
+ }
13
+ abandonedBasket = JSON.parse(localStorage.getItem(this.abandonedBasketKey)) || [];
14
+ }
15
+ catch (error) {
16
+ return [];
17
+ }
18
+ if (!Array.isArray(abandonedBasket) || abandonedBasket.length <= 0) {
19
+ this.remove();
20
+ return [];
21
+ }
22
+ abandonedBasket = abandonedBasket.filter(x => {
23
+ const departureDateParsed = Date.parse(x.departureDate);
24
+ if (isNaN(departureDateParsed)) {
25
+ return false;
26
+ }
27
+ const today = new Date();
28
+ today.setHours(0, 0, 0, 0);
29
+ const todayParsed = Date.parse(today.toString());
30
+ if (departureDateParsed < todayParsed) {
31
+ return false;
32
+ }
33
+ return true;
34
+ });
35
+ this.replace(abandonedBasket);
36
+ return abandonedBasket;
37
+ }
38
+ remove() {
39
+ try {
40
+ localStorage.removeItem(this.abandonedBasketKey);
41
+ }
42
+ catch (error) {
43
+ }
44
+ }
45
+ replace(abandonedBasket) {
46
+ try {
47
+ localStorage.setItem(this.abandonedBasketKey, JSON.stringify(abandonedBasket));
48
+ }
49
+ catch (error) {
50
+ }
51
+ }
52
+ }
53
+ AbandonedBasketService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AbandonedBasketService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
54
+ AbandonedBasketService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AbandonedBasketService });
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AbandonedBasketService, decorators: [{
56
+ type: Injectable
57
+ }] });
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJhbmRvbmVkLWJhc2tldC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS1jb21wb25lbnRzL3NyYy9saWIvY29yZS9zZXJ2aWNlcy9hYmFuZG9uZWQtYmFza2V0L2FiYW5kb25lZC1iYXNrZXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUkzQyxNQUFNLE9BQU8sc0JBQXNCO0lBRG5DO1FBRVUsdUJBQWtCLEdBQUcsMkJBQTJCLENBQUM7S0EwRDFEO0lBeERDLE1BQU07UUFDSixJQUFJLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFFekIsSUFBSTtZQUNGLElBQUksQ0FBQyxZQUFZLEVBQUU7Z0JBQ2pCLE9BQU8sRUFBRSxDQUFDO2FBQ1g7WUFFRCxlQUFlLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ25GO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxPQUFPLEVBQUUsQ0FBQztTQUNYO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLElBQUksZUFBZSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7WUFDbEUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2QsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUVELGVBQWUsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzNDLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUM7WUFFeEQsSUFBSSxLQUFLLENBQUMsbUJBQW1CLENBQUMsRUFBRTtnQkFDOUIsT0FBTyxLQUFLLENBQUM7YUFDZDtZQUVELE1BQU0sS0FBSyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7WUFDekIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUUzQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBRWpELElBQUksbUJBQW1CLEdBQUcsV0FBVyxFQUFFO2dCQUNyQyxPQUFPLEtBQUssQ0FBQzthQUNkO1lBRUQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFOUIsT0FBTyxlQUFlLENBQUM7SUFDekIsQ0FBQztJQUVPLE1BQU07UUFDWixJQUFJO1lBQ0YsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztTQUNsRDtRQUFDLE9BQU8sS0FBSyxFQUFFO1NBQ2Y7SUFDSCxDQUFDO0lBRU8sT0FBTyxDQUFDLGVBQWdEO1FBQzlELElBQUk7WUFDRixZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7U0FFaEY7UUFBQyxPQUFPLEtBQUssRUFBRTtTQUNmO0lBQ0gsQ0FBQzs7bUhBMURVLHNCQUFzQjt1SEFBdEIsc0JBQXNCOzJGQUF0QixzQkFBc0I7a0JBRGxDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYmFuZG9uZWRCYXNrZXRJdGVtTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvYWJhbmRvbmVkLWJhc2tldC1pdGVtLm1vZGVsJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFiYW5kb25lZEJhc2tldFNlcnZpY2Uge1xuICBwcml2YXRlIGFiYW5kb25lZEJhc2tldEtleSA9ICduZ1N0b3JhZ2UtYWJhbmRvbmVkQmFza2V0JztcblxuICBnZXRBbGwoKTogQXJyYXk8QWJhbmRvbmVkQmFza2V0SXRlbU1vZGVsPiB7XG4gICAgbGV0IGFiYW5kb25lZEJhc2tldCA9IFtdO1xuXG4gICAgdHJ5IHtcbiAgICAgIGlmICghbG9jYWxTdG9yYWdlKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cblxuICAgICAgYWJhbmRvbmVkQmFza2V0ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmFiYW5kb25lZEJhc2tldEtleSkpIHx8IFtdO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGFiYW5kb25lZEJhc2tldCkgfHwgYWJhbmRvbmVkQmFza2V0Lmxlbmd0aCA8PSAwKSB7XG4gICAgICB0aGlzLnJlbW92ZSgpO1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGFiYW5kb25lZEJhc2tldCA9IGFiYW5kb25lZEJhc2tldC5maWx0ZXIoeCA9PiB7XG4gICAgICBjb25zdCBkZXBhcnR1cmVEYXRlUGFyc2VkID0gRGF0ZS5wYXJzZSh4LmRlcGFydHVyZURhdGUpO1xuXG4gICAgICBpZiAoaXNOYU4oZGVwYXJ0dXJlRGF0ZVBhcnNlZCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XG4gICAgICB0b2RheS5zZXRIb3VycygwLCAwLCAwLCAwKTtcblxuICAgICAgY29uc3QgdG9kYXlQYXJzZWQgPSBEYXRlLnBhcnNlKHRvZGF5LnRvU3RyaW5nKCkpO1xuXG4gICAgICBpZiAoZGVwYXJ0dXJlRGF0ZVBhcnNlZCA8IHRvZGF5UGFyc2VkKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG5cbiAgICB0aGlzLnJlcGxhY2UoYWJhbmRvbmVkQmFza2V0KTtcblxuICAgIHJldHVybiBhYmFuZG9uZWRCYXNrZXQ7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZSgpIHtcbiAgICB0cnkge1xuICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5hYmFuZG9uZWRCYXNrZXRLZXkpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXBsYWNlKGFiYW5kb25lZEJhc2tldDogQXJyYXk8QWJhbmRvbmVkQmFza2V0SXRlbU1vZGVsPikge1xuICAgIHRyeSB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmFiYW5kb25lZEJhc2tldEtleSwgSlNPTi5zdHJpbmdpZnkoYWJhbmRvbmVkQmFza2V0KSk7XG5cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,49 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class AnimateHelper {
4
+ constructor() { }
5
+ animateFromElement(from, to, time = 800) {
6
+ const fromPos = from.getBoundingClientRect();
7
+ const fromWidth = fromPos.width;
8
+ const fromHeight = fromPos.height;
9
+ const fromTop = fromPos.top;
10
+ const fromLeft = fromPos.left;
11
+ const toPos = to.getBoundingClientRect();
12
+ const scaleX = ((fromWidth * 100) / toPos.width / 100).toFixed(3);
13
+ const scaleY = ((fromHeight * 100) / toPos.height / 100).toFixed(3);
14
+ const left = (fromLeft - toPos.left).toFixed(3);
15
+ const top = (fromTop - toPos.top).toFixed(3);
16
+ return `${this.makeAnimation(`
17
+ transform-origin: left top;
18
+ transform: translate(${left}px, ${top}px) scale(${scaleX}, ${scaleY});
19
+ opacity: 0;
20
+ `, 'transform-origin: left top;', time)} ${time}ms cubic-bezier(0.19, 1, 0.22, 1) both`;
21
+ }
22
+ makeAnimation(from, to, time) {
23
+ const animationName = `animation-${Math.random()
24
+ .toString(36)
25
+ .substr(2, 9)}`;
26
+ this.makeKeyframe(`
27
+ @keyframes ${animationName} {
28
+ ${`from { ${from} }`}
29
+ ${`to { ${to} }`}
30
+ }
31
+ `, time);
32
+ return animationName;
33
+ }
34
+ makeKeyframe(keyframes, time) {
35
+ const style = document.createElement('style');
36
+ const head = document.getElementsByTagName('head')[0];
37
+ style.innerHTML = keyframes;
38
+ head.appendChild(style);
39
+ setTimeout(() => {
40
+ head.removeChild(style);
41
+ }, time + 3000);
42
+ }
43
+ }
44
+ AnimateHelper.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AnimateHelper, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
45
+ AnimateHelper.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AnimateHelper });
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AnimateHelper, decorators: [{
47
+ type: Injectable
48
+ }], ctorParameters: function () { return []; } });
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0ZS1oZWxwZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUtY29tcG9uZW50cy9zcmMvbGliL2NvcmUvc2VydmljZXMvYW5pbWF0ZS1oZWxwZXIvYW5pbWF0ZS1oZWxwZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUczQyxNQUFNLE9BQU8sYUFBYTtJQUV4QixnQkFBZ0IsQ0FBQztJQUVqQixrQkFBa0IsQ0FBQyxJQUFpQixFQUFFLEVBQWUsRUFBRSxPQUFlLEdBQUc7UUFDdkUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDN0MsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUNoQyxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQ2xDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUM7UUFDNUIsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztRQUU5QixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUN6QyxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEUsTUFBTSxJQUFJLEdBQUcsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRCxNQUFNLEdBQUcsR0FBRyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTdDLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDOzsrQkFFRixJQUFJLE9BQU8sR0FBRyxhQUFhLE1BQU0sS0FBSyxNQUFNOztPQUVwRSxFQUNELDZCQUE2QixFQUM3QixJQUFJLENBQ0wsSUFBSSxJQUFJLHdDQUF3QyxDQUFDO0lBQ3BELENBQUM7SUFFTyxhQUFhLENBQUMsSUFBWSxFQUFFLEVBQVUsRUFBRSxJQUFZO1FBQzFELE1BQU0sYUFBYSxHQUNqQixhQUFhLElBQUksQ0FBQyxNQUFNLEVBQUU7YUFDdkIsUUFBUSxDQUFDLEVBQUUsQ0FBQzthQUNaLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVwQixJQUFJLENBQUMsWUFBWSxDQUNmO21CQUNhLGFBQWE7VUFDdEIsVUFBVSxJQUFJLElBQUk7VUFDbEIsUUFBUSxFQUFFLElBQUk7O0tBRW5CLEVBQ0MsSUFBSSxDQUNMLENBQUM7UUFFRixPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0lBRU8sWUFBWSxDQUFDLFNBQWlCLEVBQUUsSUFBWTtRQUNsRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0RCxLQUFLLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXhCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLENBQUMsRUFBRSxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDbEIsQ0FBQzs7MEdBdkRVLGFBQWE7OEdBQWIsYUFBYTsyRkFBYixhQUFhO2tCQUR6QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQW5pbWF0ZUhlbHBlciB7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBhbmltYXRlRnJvbUVsZW1lbnQoZnJvbTogSFRNTEVsZW1lbnQsIHRvOiBIVE1MRWxlbWVudCwgdGltZTogbnVtYmVyID0gODAwKSB7XG4gICAgY29uc3QgZnJvbVBvcyA9IGZyb20uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgZnJvbVdpZHRoID0gZnJvbVBvcy53aWR0aDtcbiAgICBjb25zdCBmcm9tSGVpZ2h0ID0gZnJvbVBvcy5oZWlnaHQ7XG4gICAgY29uc3QgZnJvbVRvcCA9IGZyb21Qb3MudG9wO1xuICAgIGNvbnN0IGZyb21MZWZ0ID0gZnJvbVBvcy5sZWZ0O1xuXG4gICAgY29uc3QgdG9Qb3MgPSB0by5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCBzY2FsZVggPSAoKGZyb21XaWR0aCAqIDEwMCkgLyB0b1Bvcy53aWR0aCAvIDEwMCkudG9GaXhlZCgzKTtcbiAgICBjb25zdCBzY2FsZVkgPSAoKGZyb21IZWlnaHQgKiAxMDApIC8gdG9Qb3MuaGVpZ2h0IC8gMTAwKS50b0ZpeGVkKDMpO1xuICAgIGNvbnN0IGxlZnQgPSAoZnJvbUxlZnQgLSB0b1Bvcy5sZWZ0KS50b0ZpeGVkKDMpO1xuICAgIGNvbnN0IHRvcCA9IChmcm9tVG9wIC0gdG9Qb3MudG9wKS50b0ZpeGVkKDMpO1xuXG4gICAgcmV0dXJuIGAke3RoaXMubWFrZUFuaW1hdGlvbihgXG4gICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQgdG9wO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgke2xlZnR9cHgsICR7dG9wfXB4KSBzY2FsZSgke3NjYWxlWH0sICR7c2NhbGVZfSk7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICBgLFxuICAgICAgJ3RyYW5zZm9ybS1vcmlnaW46IGxlZnQgdG9wOycsXG4gICAgICB0aW1lLFxuICAgICl9ICR7dGltZX1tcyBjdWJpYy1iZXppZXIoMC4xOSwgMSwgMC4yMiwgMSkgYm90aGA7XG4gIH1cblxuICBwcml2YXRlIG1ha2VBbmltYXRpb24oZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nLCB0aW1lOiBudW1iZXIpIHtcbiAgICBjb25zdCBhbmltYXRpb25OYW1lID1cbiAgICAgIGBhbmltYXRpb24tJHtNYXRoLnJhbmRvbSgpXG4gICAgICAgIC50b1N0cmluZygzNilcbiAgICAgICAgLnN1YnN0cigyLCA5KX1gO1xuXG4gICAgdGhpcy5tYWtlS2V5ZnJhbWUoXG4gICAgICBgXG4gICAgICBAa2V5ZnJhbWVzICR7YW5pbWF0aW9uTmFtZX0ge1xuICAgICAgICAke2Bmcm9tIHsgJHtmcm9tfSB9YH1cbiAgICAgICAgJHtgdG8geyAke3RvfSB9YH1cbiAgICAgIH1cbiAgICBgLFxuICAgICAgdGltZSxcbiAgICApO1xuXG4gICAgcmV0dXJuIGFuaW1hdGlvbk5hbWU7XG4gIH1cblxuICBwcml2YXRlIG1ha2VLZXlmcmFtZShrZXlmcmFtZXM6IHN0cmluZywgdGltZTogbnVtYmVyKSB7XG4gICAgY29uc3Qgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICAgIGNvbnN0IGhlYWQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdO1xuICAgIHN0eWxlLmlubmVySFRNTCA9IGtleWZyYW1lcztcbiAgICBoZWFkLmFwcGVuZENoaWxkKHN0eWxlKTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaGVhZC5yZW1vdmVDaGlsZChzdHlsZSk7XG4gICAgfSwgdGltZSArIDMwMDApO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,44 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class BemHelper {
4
+ getClasses(block) {
5
+ const blockClass = block || '';
6
+ return (element, modifier, addition) => {
7
+ const elementClass = element ? `__${element}` : '';
8
+ let modifierClass = '';
9
+ if (Array.isArray(modifier)) {
10
+ // If it's an array we loop through it
11
+ modifierClass = ` ${modifier
12
+ .filter(item => item !== null && item !== undefined)
13
+ .map(item => `${blockClass}${elementClass}--${item.toString().toLowerCase()}`)
14
+ .join(' ')}`;
15
+ }
16
+ else if ((typeof modifier).toUpperCase() === 'OBJECT') {
17
+ // If it's an object we convert it to an array and loop through it
18
+ const modifierArray = Object.keys(modifier)
19
+ .filter(key => modifier[key] !== undefined &&
20
+ modifier[key] !== false &&
21
+ modifier[key] !== null) // Filter if the value is undefined
22
+ .map(key => key);
23
+ modifierClass = ` ${modifierArray
24
+ .map(item => `${blockClass}${elementClass}--${item.toString().toLowerCase()}`)
25
+ .join(' ')}`;
26
+ }
27
+ else if (modifier) {
28
+ // If it's a string we just make the classname
29
+ modifierClass = ` ${blockClass}${elementClass}--${modifier.toString().toLowerCase()}`;
30
+ }
31
+ const additionClass = addition ? ` ${addition}` : '';
32
+ return `${blockClass}${elementClass}${modifierClass}${additionClass}`;
33
+ };
34
+ }
35
+ class(block, element, modifiers, addition) {
36
+ return this.getClasses(block)(element, modifiers, addition);
37
+ }
38
+ }
39
+ BemHelper.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BemHelper, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
40
+ BemHelper.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BemHelper });
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BemHelper, decorators: [{
42
+ type: Injectable
43
+ }] });
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVtLWhlbHBlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS1jb21wb25lbnRzL3NyYy9saWIvY29yZS9zZXJ2aWNlcy9iZW0taGVscGVyL2JlbS1oZWxwZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUczQyxNQUFNLE9BQU8sU0FBUztJQUVwQixVQUFVLENBQUMsS0FBYTtRQUN0QixNQUFNLFVBQVUsR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDO1FBRS9CLE9BQU8sQ0FBQyxPQUFhLEVBQUUsUUFBYyxFQUFFLFFBQWMsRUFBRSxFQUFFO1lBQ3ZELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBRW5ELElBQUksYUFBYSxHQUFHLEVBQUUsQ0FBQztZQUV2QixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQzNCLHNDQUFzQztnQkFDdEMsYUFBYSxHQUFHLElBQUksUUFBUTtxQkFDekIsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssU0FBUyxDQUFDO3FCQUNuRCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsR0FBRyxZQUFZLEtBQUssSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7cUJBQzdFLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2FBQ2hCO2lCQUFNLElBQUksQ0FBQyxPQUFPLFFBQVEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxLQUFLLFFBQVEsRUFBRTtnQkFDdkQsa0VBQWtFO2dCQUNsRSxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztxQkFDeEMsTUFBTSxDQUNMLEdBQUcsQ0FBQyxFQUFFLENBQ0osUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLFNBQVM7b0JBQzNCLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLO29CQUN2QixRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxDQUMzQixDQUFDLG1DQUFtQztxQkFDbEMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBRW5CLGFBQWEsR0FBRyxJQUFJLGFBQWE7cUJBQzlCLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxHQUFHLFlBQVksS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztxQkFDN0UsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7YUFDaEI7aUJBQU0sSUFBSSxRQUFRLEVBQUU7Z0JBQ25CLDhDQUE4QztnQkFDOUMsYUFBYSxHQUFHLElBQUksVUFBVSxHQUFHLFlBQVksS0FBSyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQzthQUN2RjtZQUVELE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBRXJELE9BQU8sR0FBRyxVQUFVLEdBQUcsWUFBWSxHQUFHLGFBQWEsR0FBRyxhQUFhLEVBQUUsQ0FBQztRQUN4RSxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQWEsRUFBRSxPQUFnQixFQUFFLFNBQWUsRUFBRSxRQUFpQjtRQUN2RSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM5RCxDQUFDOztzR0EzQ1UsU0FBUzswR0FBVCxTQUFTOzJGQUFULFNBQVM7a0JBRHJCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBCZW1IZWxwZXIge1xuXG4gIGdldENsYXNzZXMoYmxvY2s6IHN0cmluZyk6IGFueSB7XG4gICAgY29uc3QgYmxvY2tDbGFzcyA9IGJsb2NrIHx8ICcnO1xuXG4gICAgcmV0dXJuIChlbGVtZW50PzogYW55LCBtb2RpZmllcj86IGFueSwgYWRkaXRpb24/OiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGVsZW1lbnRDbGFzcyA9IGVsZW1lbnQgPyBgX18ke2VsZW1lbnR9YCA6ICcnO1xuXG4gICAgICBsZXQgbW9kaWZpZXJDbGFzcyA9ICcnO1xuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShtb2RpZmllcikpIHtcbiAgICAgICAgLy8gSWYgaXQncyBhbiBhcnJheSB3ZSBsb29wIHRocm91Z2ggaXRcbiAgICAgICAgbW9kaWZpZXJDbGFzcyA9IGAgJHttb2RpZmllclxuICAgICAgICAgIC5maWx0ZXIoaXRlbSA9PiBpdGVtICE9PSBudWxsICYmIGl0ZW0gIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAubWFwKGl0ZW0gPT4gYCR7YmxvY2tDbGFzc30ke2VsZW1lbnRDbGFzc30tLSR7aXRlbS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCl9YClcbiAgICAgICAgICAuam9pbignICcpfWA7XG4gICAgICB9IGVsc2UgaWYgKCh0eXBlb2YgbW9kaWZpZXIpLnRvVXBwZXJDYXNlKCkgPT09ICdPQkpFQ1QnKSB7XG4gICAgICAgIC8vIElmIGl0J3MgYW4gb2JqZWN0IHdlIGNvbnZlcnQgaXQgdG8gYW4gYXJyYXkgYW5kIGxvb3AgdGhyb3VnaCBpdFxuICAgICAgICBjb25zdCBtb2RpZmllckFycmF5ID0gT2JqZWN0LmtleXMobW9kaWZpZXIpXG4gICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgIGtleSA9PlxuICAgICAgICAgICAgICBtb2RpZmllcltrZXldICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgbW9kaWZpZXJba2V5XSAhPT0gZmFsc2UgJiZcbiAgICAgICAgICAgICAgbW9kaWZpZXJba2V5XSAhPT0gbnVsbCxcbiAgICAgICAgKSAvLyBGaWx0ZXIgaWYgdGhlIHZhbHVlIGlzIHVuZGVmaW5lZFxuICAgICAgICAgIC5tYXAoa2V5ID0+IGtleSk7XG5cbiAgICAgICAgbW9kaWZpZXJDbGFzcyA9IGAgJHttb2RpZmllckFycmF5XG4gICAgICAgICAgLm1hcChpdGVtID0+IGAke2Jsb2NrQ2xhc3N9JHtlbGVtZW50Q2xhc3N9LS0ke2l0ZW0udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpfWApXG4gICAgICAgICAgLmpvaW4oJyAnKX1gO1xuICAgICAgfSBlbHNlIGlmIChtb2RpZmllcikge1xuICAgICAgICAvLyBJZiBpdCdzIGEgc3RyaW5nIHdlIGp1c3QgbWFrZSB0aGUgY2xhc3NuYW1lXG4gICAgICAgIG1vZGlmaWVyQ2xhc3MgPSBgICR7YmxvY2tDbGFzc30ke2VsZW1lbnRDbGFzc30tLSR7bW9kaWZpZXIudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpfWA7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGFkZGl0aW9uQ2xhc3MgPSBhZGRpdGlvbiA/IGAgJHthZGRpdGlvbn1gIDogJyc7XG5cbiAgICAgIHJldHVybiBgJHtibG9ja0NsYXNzfSR7ZWxlbWVudENsYXNzfSR7bW9kaWZpZXJDbGFzc30ke2FkZGl0aW9uQ2xhc3N9YDtcbiAgICB9O1xuICB9XG5cbiAgY2xhc3MoYmxvY2s6IHN0cmluZywgZWxlbWVudD86IHN0cmluZywgbW9kaWZpZXJzPzogYW55LCBhZGRpdGlvbj86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Q2xhc3NlcyhibG9jaykoZWxlbWVudCwgbW9kaWZpZXJzLCBhZGRpdGlvbik7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,199 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { DateCompare } from './date-compare.enum';
3
+ import { UtcDate } from '../../models';
4
+ import * as i0 from "@angular/core";
5
+ export class DateHelper {
6
+ utcDate(input) {
7
+ if (!input) {
8
+ input = new Date();
9
+ }
10
+ let utcDate = null;
11
+ if (typeof input === 'string') {
12
+ let inputYearMonthDate = input;
13
+ let inputHoursMinutes = input;
14
+ if (input.indexOf('T') > -1) {
15
+ const indexOfT = input.indexOf('T');
16
+ inputYearMonthDate = input.slice(0, indexOfT);
17
+ inputHoursMinutes = input.slice(indexOfT + 1, indexOfT + 6);
18
+ }
19
+ const yearMonthDateParts = inputYearMonthDate.split('-');
20
+ const year = Number(yearMonthDateParts[0]);
21
+ const month = Number(yearMonthDateParts[1]) - 1;
22
+ const date = Number(yearMonthDateParts[2]) || 1;
23
+ const hoursMinutesParts = inputHoursMinutes.split(':');
24
+ const hours = Number(hoursMinutesParts[0]);
25
+ const minutes = Number(hoursMinutesParts[1]);
26
+ utcDate = new UtcDate(year, month, date, hours, minutes);
27
+ }
28
+ if (input instanceof Date) {
29
+ utcDate = new UtcDate(input.getUTCFullYear(), input.getUTCMonth(), input.getUTCDate(), input.getUTCHours(), input.getUTCMinutes());
30
+ return utcDate;
31
+ }
32
+ return utcDate;
33
+ }
34
+ date(utcDate) {
35
+ if (!utcDate) {
36
+ return null;
37
+ }
38
+ const date = new Date(Date.UTC(utcDate.year, utcDate.month, utcDate.date, utcDate.hours, utcDate.minutes));
39
+ return date;
40
+ }
41
+ getWeekNumber(input) {
42
+ if (!input) {
43
+ return -1;
44
+ }
45
+ const date = new Date(input);
46
+ const day = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));
47
+ const dayNumber = day.getUTCDay() || 7;
48
+ day.setUTCDate(day.getUTCDate() + 4 - dayNumber);
49
+ const yearStart = new Date(Date.UTC(day.getUTCFullYear(), 0, 1));
50
+ return Math.ceil((((day.getTime() - yearStart.getTime()) / 86400000) + 1) / 7);
51
+ }
52
+ toYearMonthDateString(date) {
53
+ return `${date.year}-${('0' + (date.month + 1)).slice(-2)}-${('0' + date.date).slice(-2)}`;
54
+ }
55
+ toYearMonthString(date) {
56
+ return `${date.year}-${('0' + (date.month + 1)).slice(-2)}`;
57
+ }
58
+ isEqual(date1, date2, ignoreDate = false, ignoreHours = false, ignoreMinutes = false) {
59
+ if (!date1 || !date2) {
60
+ return false;
61
+ }
62
+ let isEqual = false;
63
+ if (!date1 || !date2) {
64
+ isEqual = date1 === date2;
65
+ return isEqual;
66
+ }
67
+ isEqual = this.compare(date1, date2, ignoreDate, ignoreHours, ignoreMinutes) === DateCompare.equal;
68
+ return isEqual;
69
+ }
70
+ isLessThan(date1, date2, ignoreDate = false, ignoreHours = false, ignoreMinutes = false) {
71
+ if (!date1 || !date2) {
72
+ return false;
73
+ }
74
+ const isLessThan = this.compare(date1, date2, ignoreDate, ignoreHours, ignoreMinutes) === DateCompare.lessThan;
75
+ return isLessThan;
76
+ }
77
+ isGreaterThan(date1, date2, ignoreDate = false, ignoreHours = false, ignoreMinutes = false) {
78
+ if (!date1 || !date2) {
79
+ return false;
80
+ }
81
+ const isGreaterThan = this.compare(date1, date2, ignoreDate, ignoreHours, ignoreMinutes) === DateCompare.greaterThan;
82
+ return isGreaterThan;
83
+ }
84
+ isInThePast(date, ignoreDate = false, ignoreHours = false, ignoreMinutes = false) {
85
+ if (!date) {
86
+ return true;
87
+ }
88
+ const today = this.utcDate();
89
+ if (date.year > today.year) {
90
+ return false;
91
+ }
92
+ else if (date.year < today.year) {
93
+ return true;
94
+ }
95
+ if (date.month > today.month) {
96
+ return false;
97
+ }
98
+ else if (date.month < today.month) {
99
+ return true;
100
+ }
101
+ if (!ignoreDate) {
102
+ if (date.date > today.date) {
103
+ return false;
104
+ }
105
+ if (!ignoreHours) {
106
+ if (date.hours > today.hours) {
107
+ return false;
108
+ }
109
+ if (!ignoreMinutes) {
110
+ return date.minutes < today.minutes;
111
+ }
112
+ else {
113
+ return true;
114
+ }
115
+ }
116
+ else {
117
+ return date.date !== today.date;
118
+ }
119
+ }
120
+ }
121
+ isSameMonth(date1, date2) {
122
+ if (!date1 || !date2) {
123
+ return null;
124
+ }
125
+ return date1.year === date2.year && date1.month === date2.month;
126
+ }
127
+ isSameDate(date1, date2) {
128
+ if (!date1 || !date2) {
129
+ return false;
130
+ }
131
+ return this.compare(date1, date2, false, false, false) === DateCompare.equal;
132
+ }
133
+ getUtcNumberOfMonthBetween(date1, date2) {
134
+ return this.getNumberOfMonthBetween(this.date(date1), this.date(date2));
135
+ }
136
+ getUtcNumberOfDaysBetween(date1, date2) {
137
+ return this.getNumberOfDaysBetween(this.date(date1), this.date(date2));
138
+ }
139
+ getNumberOfDaysBetween(date1, date2) {
140
+ const timeDifference = date2.getTime() - date1.getTime();
141
+ const daysBetween = timeDifference / (1000 * 3600 * 24);
142
+ return daysBetween;
143
+ }
144
+ getNumberOfMonthBetween(date1, date2) {
145
+ let months;
146
+ months = (date2.getUTCFullYear() - date1.getUTCFullYear()) * 12;
147
+ months -= date1.getUTCMonth() + 1;
148
+ months += date2.getUTCMonth();
149
+ return months <= 0 ? 0 : months;
150
+ }
151
+ compare(date1, date2, ignoreDate = false, ignoreHours = false, ignoreMinutes = false) {
152
+ if (!date1 || !date2) {
153
+ return null;
154
+ }
155
+ if (date1.year > date2.year) {
156
+ return DateCompare.greaterThan;
157
+ }
158
+ else if (date1.year < date2.year) {
159
+ return DateCompare.lessThan;
160
+ }
161
+ if (date1.month > date2.month) {
162
+ return DateCompare.greaterThan;
163
+ }
164
+ else if (date1.month < date2.month) {
165
+ return DateCompare.lessThan;
166
+ }
167
+ if (!ignoreDate) {
168
+ if (date1.date > date2.date) {
169
+ return DateCompare.greaterThan;
170
+ }
171
+ else if (date1.date < date2.date) {
172
+ return DateCompare.lessThan;
173
+ }
174
+ if (!ignoreHours) {
175
+ if (date1.hours > date2.hours) {
176
+ return DateCompare.greaterThan;
177
+ }
178
+ else if (date1.hours < date2.hours) {
179
+ return DateCompare.lessThan;
180
+ }
181
+ if (!ignoreMinutes) {
182
+ if (date1.minutes > date2.minutes) {
183
+ return DateCompare.greaterThan;
184
+ }
185
+ else if (date1.minutes < date2.minutes) {
186
+ return DateCompare.lessThan;
187
+ }
188
+ }
189
+ }
190
+ }
191
+ return DateCompare.equal;
192
+ }
193
+ }
194
+ DateHelper.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DateHelper, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
195
+ DateHelper.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DateHelper });
196
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DateHelper, decorators: [{
197
+ type: Injectable
198
+ }] });
199
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1oZWxwZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUtY29tcG9uZW50cy9zcmMvbGliL2NvcmUvc2VydmljZXMvZGF0ZS9kYXRlLWhlbHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUM7O0FBR3ZDLE1BQU0sT0FBTyxVQUFVO0lBQ3JCLE9BQU8sQ0FBQyxLQUFxQjtRQUMzQixJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsS0FBSyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7U0FDcEI7UUFFRCxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFFbkIsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7WUFDN0IsSUFBSSxrQkFBa0IsR0FBRyxLQUFLLENBQUM7WUFDL0IsSUFBSSxpQkFBaUIsR0FBRyxLQUFLLENBQUM7WUFFOUIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO2dCQUMzQixNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNwQyxrQkFBa0IsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDOUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUM3RDtZQUVELE1BQU0sa0JBQWtCLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3pELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNoRCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7WUFHaEQsTUFBTSxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdkQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0MsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFN0MsT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztTQUMxRDtRQUVELElBQUksS0FBSyxZQUFZLElBQUksRUFBRTtZQUN6QixPQUFPLEdBQUcsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxFQUFFLEtBQUssQ0FBQyxXQUFXLEVBQUUsRUFBRSxLQUFLLENBQUMsVUFBVSxFQUFFLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxFQUFFLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1lBQ25JLE9BQU8sT0FBTyxDQUFDO1NBQ2hCO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELElBQUksQ0FBQyxPQUFnQjtRQUNuQixJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1osT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUMzRyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBVztRQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUNYO1FBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFN0IsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEYsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN2QyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUM7UUFDakQsTUFBTSxTQUFTLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBRUQscUJBQXFCLENBQUMsSUFBYTtRQUNqQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFD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QUNGO2FBQ0Y7U0FDRjtRQUVELE9BQU8sV0FBVyxDQUFDLEtBQUssQ0FBQztJQUMzQixDQUFDOzt1R0F4UFUsVUFBVTsyR0FBVixVQUFVOzJGQUFWLFVBQVU7a0JBRHRCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IERhdGVDb21wYXJlIH0gZnJvbSAnLi9kYXRlLWNvbXBhcmUuZW51bSc7XG5pbXBvcnQgeyBVdGNEYXRlIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERhdGVIZWxwZXIge1xuICB1dGNEYXRlKGlucHV0PzogRGF0ZSB8IHN0cmluZyk6IFV0Y0RhdGUgfCBudWxsIHtcbiAgICBpZiAoIWlucHV0KSB7XG4gICAgICBpbnB1dCA9IG5ldyBEYXRlKCk7XG4gICAgfVxuXG4gICAgbGV0IHV0Y0RhdGUgPSBudWxsO1xuXG4gICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGxldCBpbnB1dFllYXJNb250aERhdGUgPSBpbnB1dDtcbiAgICAgIGxldCBpbnB1dEhvdXJzTWludXRlcyA9IGlucHV0O1xuXG4gICAgICBpZiAoaW5wdXQuaW5kZXhPZignVCcpID4gLTEpIHtcbiAgICAgICAgY29uc3QgaW5kZXhPZlQgPSBpbnB1dC5pbmRleE9mKCdUJyk7XG4gICAgICAgIGlucHV0WWVhck1vbnRoRGF0ZSA9IGlucHV0LnNsaWNlKDAsIGluZGV4T2ZUKTtcbiAgICAgICAgaW5wdXRIb3Vyc01pbnV0ZXMgPSBpbnB1dC5zbGljZShpbmRleE9mVCArIDEsIGluZGV4T2ZUICsgNik7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHllYXJNb250aERhdGVQYXJ0cyA9IGlucHV0WWVhck1vbnRoRGF0ZS5zcGxpdCgnLScpO1xuICAgICAgY29uc3QgeWVhciA9IE51bWJlcih5ZWFyTW9udGhEYXRlUGFydHNbMF0pO1xuICAgICAgY29uc3QgbW9udGggPSBOdW1iZXIoeWVhck1vbnRoRGF0ZVBhcnRzWzFdKSAtIDE7XG4gICAgICBjb25zdCBkYXRlID0gTnVtYmVyKHllYXJNb250aERhdGVQYXJ0c1syXSkgfHwgMTtcblxuXG4gICAgICBjb25zdCBob3Vyc01pbnV0ZXNQYXJ0cyA9IGlucHV0SG91cnNNaW51dGVzLnNwbGl0KCc6Jyk7XG4gICAgICBjb25zdCBob3VycyA9IE51bWJlcihob3Vyc01pbnV0ZXNQYXJ0c1swXSk7XG4gICAgICBjb25zdCBtaW51dGVzID0gTnVtYmVyKGhvdXJzTWludXRlc1BhcnRzWzFdKTtcblxuICAgICAgdXRjRGF0ZSA9IG5ldyBVdGNEYXRlKHllYXIsIG1vbnRoLCBkYXRlLCBob3VycywgbWludXRlcyk7XG4gICAgfVxuXG4gICAgaWYgKGlucHV0IGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgdXRjRGF0ZSA9IG5ldyBVdGNEYXRlKGlucHV0LmdldFVUQ0Z1bGxZZWFyKCksIGlucHV0LmdldFVUQ01vbnRoKCksIGlucHV0LmdldFVUQ0RhdGUoKSwgaW5wdXQuZ2V0VVRDSG91cnMoKSwgaW5wdXQuZ2V0VVRDTWludXRlcygpKTtcbiAgICAgIHJldHVybiB1dGNEYXRlO1xuICAgIH1cblxuICAgIHJldHVybiB1dGNEYXRlO1xuICB9XG5cbiAgZGF0ZSh1dGNEYXRlOiBVdGNEYXRlKTogRGF0ZSB8IG51bGwge1xuICAgIGlmICghdXRjRGF0ZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKERhdGUuVVRDKHV0Y0RhdGUueWVhciwgdXRjRGF0ZS5tb250aCwgdXRjRGF0ZS5kYXRlLCB1dGNEYXRlLmhvdXJzLCB1dGNEYXRlLm1pbnV0ZXMpKTtcbiAgICByZXR1cm4gZGF0ZTtcbiAgfVxuXG4gIGdldFdlZWtOdW1iZXIoaW5wdXQ6IERhdGUpOiBudW1iZXIge1xuICAgIGlmICghaW5wdXQpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoaW5wdXQpO1xuXG4gICAgY29uc3QgZGF5ID0gbmV3IERhdGUoRGF0ZS5VVEMoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIGRhdGUuZ2V0RGF0ZSgpKSk7XG4gICAgY29uc3QgZGF5TnVtYmVyID0gZGF5LmdldFVUQ0RheSgpIHx8IDc7XG4gICAgZGF5LnNldFVUQ0RhdGUoZGF5LmdldFVUQ0RhdGUoKSArIDQgLSBkYXlOdW1iZXIpO1xuICAgIGNvbnN0IHllYXJTdGFydCA9IG5ldyBEYXRlKERhdGUuVVRDKGRheS5nZXRVVENGdWxsWWVhcigpLCAwLCAxKSk7XG4gICAgcmV0dXJuIE1hdGguY2VpbCgoKChkYXkuZ2V0VGltZSgpIC0geWVhclN0YXJ0LmdldFRpbWUoKSkgLyA4NjQwMDAwMCkgKyAxKSAvIDcpO1xuICB9XG5cbiAgdG9ZZWFyTW9udGhEYXRlU3RyaW5nKGRhdGU6IFV0Y0RhdGUpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtkYXRlLnllYXJ9LSR7KCcwJyArIChkYXRlLm1vbnRoICsgMSkpLnNsaWNlKC0yKX0tJHsoJzAnICsgZGF0ZS5kYXRlKS5zbGljZSgtMil9YDtcbiAgfVxuXG4gIHRvWWVhck1vbnRoU3RyaW5nKGRhdGU6IFV0Y0RhdGUpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtkYXRlLnllYXJ9LSR7KCcwJyArIChkYXRlLm1vbnRoICsgMSkpLnNsaWNlKC0yKX1gO1xuICB9XG5cbiAgaXNFcXVhbChcbiAgICBkYXRlMTogVXRjRGF0ZSxcbiAgICBkYXRlMjogVXRjRGF0ZSxcbiAgICBpZ25vcmVEYXRlOiBib29sZWFuID0gZmFsc2UsXG4gICAgaWdub3JlSG91cnM6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICBpZ25vcmVNaW51dGVzOiBib29sZWFuID0gZmFsc2UpOiBib29sZWFuIHtcbiAgICBpZiAoIWRhdGUxIHx8ICFkYXRlMikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGxldCBpc0VxdWFsID0gZmFsc2U7XG5cbiAgICBpZiAoIWRhdGUxIHx8ICFkYXRlMikge1xuICAgICAgaXNFcXVhbCA9IGRhdGUxID09PSBkYXRlMjtcbiAgICAgIHJldHVybiBpc0VxdWFsO1xuICAgIH1cblxuICAgIGlzRXF1YWwgPSB0aGlzLmNvbXBhcmUoZGF0ZTEsIGRhdGUyLCBpZ25vcmVEYXRlLCBpZ25vcmVIb3VycywgaWdub3JlTWludXRlcykgPT09IERhdGVDb21wYXJlLmVxdWFsO1xuICAgIHJldHVybiBpc0VxdWFsO1xuICB9XG5cbiAgaXNMZXNzVGhhbihcbiAgICBkYXRlMTogVXRjRGF0ZSxcbiAgICBkYXRlMjogVXRjRGF0ZSxcbiAgICBpZ25vcmVEYXRlOiBib29sZWFuID0gZmFsc2UsXG4gICAgaWdub3JlSG91cnM6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICBpZ25vcmVNaW51dGVzOiBib29sZWFuID0gZmFsc2UpOiBib29sZWFuIHtcbiAgICBpZiAoIWRhdGUxIHx8ICFkYXRlMikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGlzTGVzc1RoYW4gPSB0aGlzLmNvbXBhcmUoZGF0ZTEsIGRhdGUyLCBpZ25vcmVEYXRlLCBpZ25vcmVIb3VycywgaWdub3JlTWludXRlcykgPT09IERhdGVDb21wYXJlLmxlc3NUaGFuO1xuICAgIHJldHVybiBpc0xlc3NUaGFuO1xuICB9XG5cbiAgaXNHcmVhdGVyVGhhbihcbiAgICBkYXRlMTogVXRjRGF0ZSxcbiAgICBkYXRlMjogVXRjRGF0ZSxcbiAgICBpZ25vcmVEYXRlOiBib29sZWFuID0gZmFsc2UsXG4gICAgaWdub3JlSG91cnM6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICBpZ25vcmVNaW51dGVzOiBib29sZWFuID0gZmFsc2UpOiBib29sZWFuIHtcbiAgICBpZiAoIWRhdGUxIHx8ICFkYXRlMikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGlzR3JlYXRlclRoYW4gPSB0aGlzLmNvbXBhcmUoZGF0ZTEsIGRhdGUyLCBpZ25vcmVEYXRlLCBpZ25vcmVIb3VycywgaWdub3JlTWludXRlcykgPT09IERhdGVDb21wYXJlLmdyZWF0ZXJUaGFuO1xuICAgIHJldHVybiBpc0dyZWF0ZXJUaGFuO1xuICB9XG5cbiAgaXNJblRoZVBhc3QoXG4gICAgZGF0ZTogVXRjRGF0ZSxcbiAgICBpZ25vcmVEYXRlOiBib29sZWFuID0gZmFsc2UsXG4gICAgaWdub3JlSG91cnM6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICBpZ25vcmVNaW51dGVzOiBib29sZWFuID0gZmFsc2UpOiBib29sZWFuIHtcbiAgICBpZiAoIWRhdGUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHRvZGF5ID0gdGhpcy51dGNEYXRlKCk7XG5cbiAgICBpZiAoZGF0ZS55ZWFyID4gdG9kYXkueWVhcikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoZGF0ZS55ZWFyIDwgdG9kYXkueWVhcikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGRhdGUubW9udGggPiB0b2RheS5tb250aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoZGF0ZS5tb250aCA8IHRvZGF5Lm1vbnRoKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIWlnbm9yZURhdGUpIHtcbiAgICAgIGlmIChkYXRlLmRhdGUgPiB0b2RheS5kYXRlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFpZ25vcmVIb3Vycykge1xuICAgICAgICBpZiAoZGF0ZS5ob3VycyA+IHRvZGF5LmhvdXJzKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFpZ25vcmVNaW51dGVzKSB7XG4gICAgICAgICAgcmV0dXJuIGRhdGUubWludXRlcyA8IHRvZGF5Lm1pbnV0ZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBkYXRlLmRhdGUgIT09IHRvZGF5LmRhdGU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaXNTYW1lTW9udGgoZGF0ZTE6IFV0Y0RhdGUsIGRhdGUyOiBVdGNEYXRlKTogYm9vbGVhbiB7XG4gICAgaWYgKCFkYXRlMSB8fCAhZGF0ZTIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBkYXRlMS55ZWFyID09PSBkYXRlMi55ZWFyICYmIGRhdGUxLm1vbnRoID09PSBkYXRlMi5tb250aDtcbiAgfVxuXG4gIGlzU2FtZURhdGUoZGF0ZTE6IFV0Y0RhdGUsIGRhdGUyOiBVdGNEYXRlKTogYm9vbGVhbiB7XG4gICAgaWYgKCFkYXRlMSB8fCAhZGF0ZTIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jb21wYXJlKGRhdGUxLCBkYXRlMiwgZmFsc2UsIGZhbHNlLCBmYWxzZSkgPT09IERhdGVDb21wYXJlLmVxdWFsO1xuICB9XG5cbiAgZ2V0VXRjTnVtYmVyT2ZNb250aEJldHdlZW4oZGF0ZTE6IFV0Y0RhdGUsIGRhdGUyOiBVdGNEYXRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5nZXROdW1iZXJPZk1vbnRoQmV0d2Vlbih0aGlzLmRhdGUoZGF0ZTEpLCB0aGlzLmRhdGUoZGF0ZTIpKTtcbiAgfVxuXG4gIGdldFV0Y051bWJlck9mRGF5c0JldHdlZW4oZGF0ZTE6IFV0Y0RhdGUsIGRhdGUyOiBVdGNEYXRlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5nZXROdW1iZXJPZkRheXNCZXR3ZWVuKHRoaXMuZGF0ZShkYXRlMSksIHRoaXMuZGF0ZShkYXRlMikpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXROdW1iZXJPZkRheXNCZXR3ZWVuKGRhdGUxOiBEYXRlLCBkYXRlMjogRGF0ZSk6IG51bWJlciB7XG4gICAgY29uc3QgdGltZURpZmZlcmVuY2UgPSBkYXRlMi5nZXRUaW1lKCkgLSBkYXRlMS5nZXRUaW1lKCk7XG4gICAgY29uc3QgZGF5c0JldHdlZW4gPSB0aW1lRGlmZmVyZW5jZSAvICgxMDAwICogMzYwMCAqIDI0KTtcbiAgICByZXR1cm4gZGF5c0JldHdlZW47XG4gIH1cblxuICBwcml2YXRlIGdldE51bWJlck9mTW9udGhCZXR3ZWVuKGRhdGUxOiBEYXRlLCBkYXRlMjogRGF0ZSk6IG51bWJlciB7XG4gICAgbGV0IG1vbnRoczogbnVtYmVyO1xuICAgIG1vbnRocyA9IChkYXRlMi5nZXRVVENGdWxsWWVhcigpIC0gZGF0ZTEuZ2V0VVRDRnVsbFllYXIoKSkgKiAxMjtcbiAgICBtb250aHMgLT0gZGF0ZTEuZ2V0VVRDTW9udGgoKSArIDE7XG4gICAgbW9udGhzICs9IGRhdGUyLmdldFVUQ01vbnRoKCk7XG4gICAgcmV0dXJuIG1vbnRocyA8PSAwID8gMCA6IG1vbnRocztcbiAgfVxuXG4gIHByaXZhdGUgY29tcGFyZShcbiAgICBkYXRlMTogVXRjRGF0ZSxcbiAgICBkYXRlMjogVXRjRGF0ZSxcbiAgICBpZ25vcmVEYXRlOiBib29sZWFuID0gZmFsc2UsXG4gICAgaWdub3JlSG91cnM6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICBpZ25vcmVNaW51dGVzOiBib29sZWFuID0gZmFsc2UpOiBEYXRlQ29tcGFyZSB7XG4gICAgaWYgKCFkYXRlMSB8fCAhZGF0ZTIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChkYXRlMS55ZWFyID4gZGF0ZTIueWVhcikge1xuICAgICAgcmV0dXJuIERhdGVDb21wYXJlLmdyZWF0ZXJUaGFuO1xuICAgIH0gZWxzZSBpZiAoZGF0ZTEueWVhciA8IGRhdGUyLnllYXIpIHtcbiAgICAgIHJldHVybiBEYXRlQ29tcGFyZS5sZXNzVGhhbjtcbiAgICB9XG5cbiAgICBpZiAoZGF0ZTEubW9udGggPiBkYXRlMi5tb250aCkge1xuICAgICAgcmV0dXJuIERhdGVDb21wYXJlLmdyZWF0ZXJUaGFuO1xuICAgIH0gZWxzZSBpZiAoZGF0ZTEubW9udGggPCBkYXRlMi5tb250aCkge1xuICAgICAgcmV0dXJuIERhdGVDb21wYXJlLmxlc3NUaGFuO1xuICAgIH1cblxuICAgIGlmICghaWdub3JlRGF0ZSkge1xuICAgICAgaWYgKGRhdGUxLmRhdGUgPiBkYXRlMi5kYXRlKSB7XG4gICAgICAgIHJldHVybiBEYXRlQ29tcGFyZS5ncmVhdGVyVGhhbjtcbiAgICAgIH0gZWxzZSBpZiAoZGF0ZTEuZGF0ZSA8IGRhdGUyLmRhdGUpIHtcbiAgICAgICAgcmV0dXJuIERhdGVDb21wYXJlLmxlc3NUaGFuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWlnbm9yZUhvdXJzKSB7XG4gICAgICAgIGlmIChkYXRlMS5ob3VycyA+IGRhdGUyLmhvdXJzKSB7XG4gICAgICAgICAgcmV0dXJuIERhdGVDb21wYXJlLmdyZWF0ZXJUaGFuO1xuICAgICAgICB9IGVsc2UgaWYgKGRhdGUxLmhvdXJzIDwgZGF0ZTIuaG91cnMpIHtcbiAgICAgICAgICByZXR1cm4gRGF0ZUNvbXBhcmUubGVzc1RoYW47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWlnbm9yZU1pbnV0ZXMpIHtcbiAgICAgICAgICBpZiAoZGF0ZTEubWludXRlcyA+IGRhdGUyLm1pbnV0ZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBEYXRlQ29tcGFyZS5ncmVhdGVyVGhhbjtcbiAgICAgICAgICB9IGVsc2UgaWYgKGRhdGUxLm1pbnV0ZXMgPCBkYXRlMi5taW51dGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gRGF0ZUNvbXBhcmUubGVzc1RoYW47XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIERhdGVDb21wYXJlLmVxdWFsO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,46 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class DeviceHelper {
4
+ constructor() {
5
+ this.mobileMaxWidth = 639;
6
+ this.tabletMaxWidth = 999;
7
+ }
8
+ isTouchScreenDevice() {
9
+ return 'ontouchstart' in document.documentElement;
10
+ }
11
+ isMobile() {
12
+ const maxWidth = 414;
13
+ return window.screen.width <= maxWidth && this.isTouchScreenDevice();
14
+ }
15
+ isMobileWidth() {
16
+ return window.innerWidth <= this.mobileMaxWidth;
17
+ }
18
+ isWidthMobile(width) {
19
+ return width <= this.mobileMaxWidth;
20
+ }
21
+ isTabletWidth() {
22
+ return !this.isMobileWidth() && window.innerWidth <= this.tabletMaxWidth;
23
+ }
24
+ isWidthTablet(width) {
25
+ return !this.isWidthMobile(width) && width <= this.tabletMaxWidth;
26
+ }
27
+ isWidthDesktop(width) {
28
+ return !this.isWidthMobile(width)
29
+ && !this.isWidthTablet(width)
30
+ && width > this.tabletMaxWidth;
31
+ }
32
+ isTabletWindow() {
33
+ const MOBILE_MAX_WIDTH = 999;
34
+ return MOBILE_MAX_WIDTH >= window.innerWidth || MOBILE_MAX_WIDTH >= window.innerWidth;
35
+ }
36
+ isIE() {
37
+ const isIEOrEdge = /msie\s|trident\/|edge\//i.test(window.navigator.userAgent);
38
+ return isIEOrEdge;
39
+ }
40
+ }
41
+ DeviceHelper.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DeviceHelper, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
42
+ DeviceHelper.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DeviceHelper });
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DeviceHelper, decorators: [{
44
+ type: Injectable
45
+ }] });
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLWhlbHBlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS1jb21wb25lbnRzL3NyYy9saWIvY29yZS9zZXJ2aWNlcy9kZXZpY2UvZGV2aWNlLWhlbHBlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRzNDLE1BQU0sT0FBTyxZQUFZO0lBRHpCO1FBR21CLG1CQUFjLEdBQUcsR0FBRyxDQUFDO1FBQ3JCLG1CQUFjLEdBQUcsR0FBRyxDQUFDO0tBMEN2QztJQXhDQyxtQkFBbUI7UUFDakIsT0FBTyxjQUFjLElBQUksUUFBUSxDQUFDLGVBQWUsQ0FBQztJQUNwRCxDQUFDO0lBRUQsUUFBUTtRQUNOLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQztRQUNyQixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLFFBQVEsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUN2RSxDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU8sTUFBTSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQ2xELENBQUM7SUFFRCxhQUFhLENBQUMsS0FBYTtRQUN6QixPQUFPLEtBQUssSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxNQUFNLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDM0UsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFhO1FBQ3pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBYTtRQUMxQixPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7ZUFDNUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztlQUMxQixLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsY0FBYztRQUNaLE1BQU0sZ0JBQWdCLEdBQUcsR0FBRyxDQUFDO1FBQzdCLE9BQU8sZ0JBQWdCLElBQUksTUFBTSxDQUFDLFVBQVUsSUFBSSxnQkFBZ0IsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDO0lBQ3hGLENBQUM7SUFFRCxJQUFJO1FBQ0YsTUFBTSxVQUFVLEdBQUcsMEJBQTBCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0UsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQzs7eUdBNUNVLFlBQVk7NkdBQVosWUFBWTsyRkFBWixZQUFZO2tCQUR4QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGV2aWNlSGVscGVyIHtcblxuICBwcml2YXRlIHJlYWRvbmx5IG1vYmlsZU1heFdpZHRoID0gNjM5O1xuICBwcml2YXRlIHJlYWRvbmx5IHRhYmxldE1heFdpZHRoID0gOTk5O1xuXG4gIGlzVG91Y2hTY3JlZW5EZXZpY2UoKSB7XG4gICAgcmV0dXJuICdvbnRvdWNoc3RhcnQnIGluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgfVxuXG4gIGlzTW9iaWxlKCkge1xuICAgIGNvbnN0IG1heFdpZHRoID0gNDE0O1xuICAgIHJldHVybiB3aW5kb3cuc2NyZWVuLndpZHRoIDw9IG1heFdpZHRoICYmIHRoaXMuaXNUb3VjaFNjcmVlbkRldmljZSgpO1xuICB9XG5cbiAgaXNNb2JpbGVXaWR0aCgpIHtcbiAgICByZXR1cm4gd2luZG93LmlubmVyV2lkdGggPD0gdGhpcy5tb2JpbGVNYXhXaWR0aDtcbiAgfVxuXG4gIGlzV2lkdGhNb2JpbGUod2lkdGg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB3aWR0aCA8PSB0aGlzLm1vYmlsZU1heFdpZHRoO1xuICB9XG5cbiAgaXNUYWJsZXRXaWR0aCgpIHtcbiAgICByZXR1cm4gIXRoaXMuaXNNb2JpbGVXaWR0aCgpICYmIHdpbmRvdy5pbm5lcldpZHRoIDw9IHRoaXMudGFibGV0TWF4V2lkdGg7XG4gIH1cblxuICBpc1dpZHRoVGFibGV0KHdpZHRoOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuaXNXaWR0aE1vYmlsZSh3aWR0aCkgJiYgd2lkdGggPD0gdGhpcy50YWJsZXRNYXhXaWR0aDtcbiAgfVxuXG4gIGlzV2lkdGhEZXNrdG9wKHdpZHRoOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuaXNXaWR0aE1vYmlsZSh3aWR0aClcbiAgICAgICYmICF0aGlzLmlzV2lkdGhUYWJsZXQod2lkdGgpXG4gICAgICAmJiB3aWR0aCA+IHRoaXMudGFibGV0TWF4V2lkdGg7XG4gIH1cblxuICBpc1RhYmxldFdpbmRvdygpIHtcbiAgICBjb25zdCBNT0JJTEVfTUFYX1dJRFRIID0gOTk5O1xuICAgIHJldHVybiBNT0JJTEVfTUFYX1dJRFRIID49IHdpbmRvdy5pbm5lcldpZHRoIHx8IE1PQklMRV9NQVhfV0lEVEggPj0gd2luZG93LmlubmVyV2lkdGg7XG4gIH1cblxuICBpc0lFKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGlzSUVPckVkZ2UgPSAvbXNpZVxcc3x0cmlkZW50XFwvfGVkZ2VcXC8vaS50ZXN0KHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50KTtcbiAgICByZXR1cm4gaXNJRU9yRWRnZTtcbiAgfVxufVxuIl19
@@ -0,0 +1,63 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Observable } from 'rxjs';
3
+ import { GeolocationState } from './geolocation-state.enum';
4
+ import * as i0 from "@angular/core";
5
+ export class GeolocationService {
6
+ getCurrentPosition() {
7
+ return new Observable(observer => {
8
+ if (window.navigator && window.navigator.geolocation) {
9
+ window.navigator.geolocation.getCurrentPosition((position) => {
10
+ observer.next(position);
11
+ observer.complete();
12
+ }, (error) => observer.error(error));
13
+ }
14
+ else {
15
+ observer.error('Unsupported browser');
16
+ }
17
+ });
18
+ }
19
+ getState() {
20
+ return new Observable(observer => {
21
+ if (window.navigator && window.navigator.geolocation) {
22
+ const permissions = (window.navigator.permissions);
23
+ if (permissions) {
24
+ permissions
25
+ .query({ name: 'geolocation' })
26
+ .then((result) => {
27
+ if (result && result.state) {
28
+ switch (result.state) {
29
+ case 'granted':
30
+ observer.next(GeolocationState.granted);
31
+ break;
32
+ case 'prompt':
33
+ observer.next(GeolocationState.prompt);
34
+ break;
35
+ case 'denied':
36
+ observer.next(GeolocationState.denied);
37
+ break;
38
+ default:
39
+ observer.next(GeolocationState.denied);
40
+ break;
41
+ }
42
+ }
43
+ observer.complete();
44
+ });
45
+ }
46
+ else {
47
+ observer.next(GeolocationState.unknown);
48
+ observer.complete();
49
+ }
50
+ }
51
+ else {
52
+ observer.next(GeolocationState.unknown);
53
+ observer.complete();
54
+ }
55
+ });
56
+ }
57
+ }
58
+ GeolocationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: GeolocationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
59
+ GeolocationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: GeolocationService });
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: GeolocationService, decorators: [{
61
+ type: Injectable
62
+ }] });
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvbG9jYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUtY29tcG9uZW50cy9zcmMvbGliL2NvcmUvc2VydmljZXMvZ2VvbG9jYXRpb24vZ2VvbG9jYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBRzVELE1BQU0sT0FBTyxrQkFBa0I7SUFFN0Isa0JBQWtCO1FBQ2hCLE9BQU8sSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDL0IsSUFBSSxNQUFNLENBQUMsU0FBUyxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFO2dCQUNwRCxNQUFNLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FDN0MsQ0FBQyxRQUFRLEVBQUUsRUFBRTtvQkFDWCxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUN4QixRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3RCLENBQUMsRUFDRCxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQ3JDO2lCQUFNO2dCQUNMLFFBQVEsQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQzthQUN2QztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQy9CLElBQUksTUFBTSxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRTtnQkFDcEQsTUFBTSxXQUFXLEdBQUcsQ0FBRSxNQUFNLENBQUMsU0FBaUIsQ0FBQyxXQUFXLENBQUUsQ0FBQztnQkFFN0QsSUFBSSxXQUFXLEVBQUU7b0JBQ2YsV0FBVzt5QkFDUixLQUFLLENBQUMsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLENBQUM7eUJBQzlCLElBQUksQ0FBQyxDQUFDLE1BQXNCLEVBQUUsRUFBRTt3QkFDL0IsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRTs0QkFDMUIsUUFBUSxNQUFNLENBQUMsS0FBSyxFQUFFO2dDQUNwQixLQUFLLFNBQVM7b0NBQ1osUUFBUSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQ0FDeEMsTUFBTTtnQ0FDUixLQUFLLFFBQVE7b0NBQ1gsUUFBUSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQ0FDdkMsTUFBTTtnQ0FDUixLQUFLLFFBQVE7b0NBQ1gsUUFBUSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQ0FDdkMsTUFBTTtnQ0FDUjtvQ0FDRSxRQUFRLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO29DQUN2QyxNQUFNOzZCQUNUO3lCQUNGO3dCQUVELFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDdEIsQ0FBQyxDQUFDLENBQUM7aUJBQ047cUJBQU07b0JBQ0wsUUFBUSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDeEMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO2lCQUNyQjthQUNGO2lCQUFNO2dCQUNMLFFBQVEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3hDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQzthQUNyQjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7K0dBdERVLGtCQUFrQjttSEFBbEIsa0JBQWtCOzJGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBHZW9sb2NhdGlvblN0YXRlIH0gZnJvbSAnLi9nZW9sb2NhdGlvbi1zdGF0ZS5lbnVtJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEdlb2xvY2F0aW9uU2VydmljZSB7XG5cbiAgZ2V0Q3VycmVudFBvc2l0aW9uKCk6IE9ic2VydmFibGU8R2VvbG9jYXRpb25Qb3NpdGlvbj4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShvYnNlcnZlciA9PiB7XG4gICAgICBpZiAod2luZG93Lm5hdmlnYXRvciAmJiB3aW5kb3cubmF2aWdhdG9yLmdlb2xvY2F0aW9uKSB7XG4gICAgICAgIHdpbmRvdy5uYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKFxuICAgICAgICAgIChwb3NpdGlvbikgPT4ge1xuICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChwb3NpdGlvbik7XG4gICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgKGVycm9yKSA9PiBvYnNlcnZlci5lcnJvcihlcnJvcikpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoJ1Vuc3VwcG9ydGVkIGJyb3dzZXInKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGdldFN0YXRlKCk6IE9ic2VydmFibGU8R2VvbG9jYXRpb25TdGF0ZT4ge1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZShvYnNlcnZlciA9PiB7XG4gICAgICBpZiAod2luZG93Lm5hdmlnYXRvciAmJiB3aW5kb3cubmF2aWdhdG9yLmdlb2xvY2F0aW9uKSB7XG4gICAgICAgIGNvbnN0IHBlcm1pc3Npb25zID0gKCh3aW5kb3cubmF2aWdhdG9yIGFzIGFueSkucGVybWlzc2lvbnMgKTtcblxuICAgICAgICBpZiAocGVybWlzc2lvbnMpIHtcbiAgICAgICAgICBwZXJtaXNzaW9uc1xuICAgICAgICAgICAgLnF1ZXJ5KHsgbmFtZTogJ2dlb2xvY2F0aW9uJyB9KVxuICAgICAgICAgICAgLnRoZW4oKHJlc3VsdDogeyBzdGF0ZTogYW55IH0pID0+IHtcbiAgICAgICAgICAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQuc3RhdGUpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHJlc3VsdC5zdGF0ZSkge1xuICAgICAgICAgICAgICAgICAgY2FzZSAnZ3JhbnRlZCc6XG4gICAgICAgICAgICAgICAgICAgIG9ic2VydmVyLm5leHQoR2VvbG9jYXRpb25TdGF0ZS5ncmFudGVkKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBjYXNlICdwcm9tcHQnOlxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KEdlb2xvY2F0aW9uU3RhdGUucHJvbXB0KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBjYXNlICdkZW5pZWQnOlxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KEdlb2xvY2F0aW9uU3RhdGUuZGVuaWVkKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBvYnNlcnZlci5uZXh0KEdlb2xvY2F0aW9uU3RhdGUuZGVuaWVkKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9ic2VydmVyLm5leHQoR2VvbG9jYXRpb25TdGF0ZS51bmtub3duKTtcbiAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvYnNlcnZlci5uZXh0KEdlb2xvY2F0aW9uU3RhdGUudW5rbm93bik7XG4gICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==