@swisspost/internet-header 1.5.0-beta.1 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (450) hide show
  1. package/LICENSE +202 -202
  2. package/dist/cjs/{if.component-313f59b8.js → if.component-51d000af.js} +6 -6
  3. package/dist/cjs/if.component-51d000af.js.map +1 -0
  4. package/dist/cjs/{klp-widget.controller-675b23db.js → klp-widget.controller-d8941c4e.js} +15755 -15755
  5. package/dist/cjs/klp-widget.controller-d8941c4e.js.map +1 -0
  6. package/dist/cjs/{language.service-a80ae01d.js → language.service-7dbf739d.js} +141 -141
  7. package/dist/cjs/language.service-7dbf739d.js.map +1 -0
  8. package/dist/cjs/post-klp-login-widget.cjs.entry.js +33 -33
  9. package/dist/cjs/post-klp-login-widget.cjs.entry.js.map +1 -1
  10. package/dist/cjs/post-language-switch.cjs.entry.js +88 -88
  11. package/dist/cjs/post-language-switch.cjs.entry.js.map +1 -1
  12. package/dist/cjs/post-logo.cjs.entry.js +51 -51
  13. package/dist/cjs/post-logo.cjs.entry.js.map +1 -1
  14. package/dist/cjs/post-main-navigation.cjs.entry.js +226 -226
  15. package/dist/cjs/post-main-navigation.cjs.entry.js.map +1 -1
  16. package/dist/cjs/post-meta-navigation.cjs.entry.js +15 -15
  17. package/dist/cjs/post-meta-navigation.cjs.entry.js.map +1 -1
  18. package/dist/cjs/post-search.cjs.entry.js +556 -534
  19. package/dist/cjs/post-search.cjs.entry.js.map +1 -1
  20. package/dist/cjs/post-skiplinks.cjs.entry.js +41 -41
  21. package/dist/cjs/post-skiplinks.cjs.entry.js.map +1 -1
  22. package/dist/cjs/{store-47e14589.js → store-d0d514fc.js} +20 -13
  23. package/dist/cjs/store-d0d514fc.js.map +1 -0
  24. package/dist/cjs/{svg-icon.component-10fbda11.js → svg-icon.component-be93f876.js} +2 -2
  25. package/dist/cjs/svg-icon.component-be93f876.js.map +1 -0
  26. package/dist/cjs/{svg-sprite.component-c3b454b3.js → svg-sprite.component-1bd7a058.js} +40 -40
  27. package/dist/cjs/svg-sprite.component-1bd7a058.js.map +1 -0
  28. package/dist/cjs/swisspost-internet-breadcrumbs.cjs.entry.js +370 -392
  29. package/dist/cjs/swisspost-internet-breadcrumbs.cjs.entry.js.map +1 -1
  30. package/dist/cjs/swisspost-internet-footer.cjs.entry.js +125 -125
  31. package/dist/cjs/swisspost-internet-footer.cjs.entry.js.map +1 -1
  32. package/dist/cjs/swisspost-internet-header.cjs.entry.js +608 -608
  33. package/dist/cjs/swisspost-internet-header.cjs.entry.js.map +1 -1
  34. package/dist/cjs/{ui.service-db4a8252.js → ui.service-e1ebb6d4.js} +28 -28
  35. package/dist/cjs/ui.service-e1ebb6d4.js.map +1 -0
  36. package/dist/cjs/{utils-b6014257.js → utils-60853c5d.js} +15 -15
  37. package/dist/cjs/utils-60853c5d.js.map +1 -0
  38. package/dist/collection/assets/config/test-configuration.json +4067 -4067
  39. package/dist/collection/assets/i18n/translations.js +38 -38
  40. package/dist/collection/assets/i18n/translations.js.map +1 -1
  41. package/dist/collection/assets/js/klp-login-widget.js +1716 -1716
  42. package/dist/collection/assets/js/sockjs-client.js +5134 -5134
  43. package/dist/collection/components/post-internet-breadcrumbs/components/breadcrumb-list.component.js +11 -11
  44. package/dist/collection/components/post-internet-breadcrumbs/components/breadcrumb-list.component.js.map +1 -1
  45. package/dist/collection/components/post-internet-breadcrumbs/components/focus-trap.component.js +42 -42
  46. package/dist/collection/components/post-internet-breadcrumbs/components/focus-trap.component.js.map +1 -1
  47. package/dist/collection/components/post-internet-breadcrumbs/components/middle-dropdown.component.js +8 -8
  48. package/dist/collection/components/post-internet-breadcrumbs/components/middle-dropdown.component.js.map +1 -1
  49. package/dist/collection/components/post-internet-breadcrumbs/components/middle-links.component.js +6 -6
  50. package/dist/collection/components/post-internet-breadcrumbs/components/middle-links.component.js.map +1 -1
  51. package/dist/collection/components/post-internet-breadcrumbs/components/overlay.component.js +12 -12
  52. package/dist/collection/components/post-internet-breadcrumbs/components/overlay.component.js.map +1 -1
  53. package/dist/collection/components/post-internet-breadcrumbs/post-internet-breadcrumbs.js +253 -253
  54. package/dist/collection/components/post-internet-breadcrumbs/post-internet-breadcrumbs.js.map +1 -1
  55. package/dist/collection/components/post-internet-footer/components/post-footer-block-address.component.js +12 -12
  56. package/dist/collection/components/post-internet-footer/components/post-footer-block-address.component.js.map +1 -1
  57. package/dist/collection/components/post-internet-footer/components/post-footer-block-contact.component.js +24 -24
  58. package/dist/collection/components/post-internet-footer/components/post-footer-block-contact.component.js.map +1 -1
  59. package/dist/collection/components/post-internet-footer/components/post-footer-block-custom.component.js +6 -6
  60. package/dist/collection/components/post-internet-footer/components/post-footer-block-custom.component.js.map +1 -1
  61. package/dist/collection/components/post-internet-footer/components/post-footer-block-list.component.js +6 -6
  62. package/dist/collection/components/post-internet-footer/components/post-footer-block-list.component.js.map +1 -1
  63. package/dist/collection/components/post-internet-footer/components/post-footer-block-socials.component.js +5 -5
  64. package/dist/collection/components/post-internet-footer/components/post-footer-block-socials.component.js.map +1 -1
  65. package/dist/collection/components/post-internet-footer/post-internet-footer.js +86 -86
  66. package/dist/collection/components/post-internet-footer/post-internet-footer.js.map +1 -1
  67. package/dist/collection/components/post-internet-header/post-internet-header.js +676 -676
  68. package/dist/collection/components/post-internet-header/post-internet-header.js.map +1 -1
  69. package/dist/collection/components/post-klp-login-widget/klp-widget.controller.js +14 -14
  70. package/dist/collection/components/post-klp-login-widget/klp-widget.controller.js.map +1 -1
  71. package/dist/collection/components/post-klp-login-widget/post-klp-login-widget.js +67 -67
  72. package/dist/collection/components/post-klp-login-widget/post-klp-login-widget.js.map +1 -1
  73. package/dist/collection/components/post-language-switch/components/post-language-switch-list.js +9 -9
  74. package/dist/collection/components/post-language-switch/components/post-language-switch-list.js.map +1 -1
  75. package/dist/collection/components/post-language-switch/post-language-switch.js +186 -186
  76. package/dist/collection/components/post-language-switch/post-language-switch.js.map +1 -1
  77. package/dist/collection/components/post-logo/logo-sprite.component.js +4 -4
  78. package/dist/collection/components/post-logo/logo-sprite.component.js.map +1 -1
  79. package/dist/collection/components/post-logo/post-logo.js +60 -60
  80. package/dist/collection/components/post-logo/post-logo.js.map +1 -1
  81. package/dist/collection/components/post-main-navigation/components/level-one-action.component.js +13 -13
  82. package/dist/collection/components/post-main-navigation/components/level-one-action.component.js.map +1 -1
  83. package/dist/collection/components/post-main-navigation/post-main-navigation.js +347 -347
  84. package/dist/collection/components/post-main-navigation/post-main-navigation.js.map +1 -1
  85. package/dist/collection/components/post-meta-navigation/post-meta-navigation.js +67 -67
  86. package/dist/collection/components/post-meta-navigation/post-meta-navigation.js.map +1 -1
  87. package/dist/collection/components/post-search/post-search.js +362 -362
  88. package/dist/collection/components/post-search/post-search.js.map +1 -1
  89. package/dist/collection/components/post-skiplinks/post-skiplinks.js +51 -51
  90. package/dist/collection/components/post-skiplinks/post-skiplinks.js.map +1 -1
  91. package/dist/collection/data/store.js +11 -11
  92. package/dist/collection/data/store.js.map +1 -1
  93. package/dist/collection/index.js +2 -2
  94. package/dist/collection/index.js.map +1 -1
  95. package/dist/collection/models/breadcrumbs.model.js +2 -2
  96. package/dist/collection/models/breadcrumbs.model.js.map +1 -1
  97. package/dist/collection/models/coveo.model.js +2 -2
  98. package/dist/collection/models/coveo.model.js.map +1 -1
  99. package/dist/collection/models/footer.model.js +2 -2
  100. package/dist/collection/models/footer.model.js.map +1 -1
  101. package/dist/collection/models/general.model.js +2 -2
  102. package/dist/collection/models/general.model.js.map +1 -1
  103. package/dist/collection/models/geocode.model.js +10 -10
  104. package/dist/collection/models/geocode.model.js.map +1 -1
  105. package/dist/collection/models/header.model.js +2 -2
  106. package/dist/collection/models/header.model.js.map +1 -1
  107. package/dist/collection/models/implementor.model.js +2 -2
  108. package/dist/collection/models/implementor.model.js.map +1 -1
  109. package/dist/collection/models/language.model.js +2 -2
  110. package/dist/collection/models/language.model.js.map +1 -1
  111. package/dist/collection/models/track-and-trace.model.js +2 -2
  112. package/dist/collection/models/track-and-trace.model.js.map +1 -1
  113. package/dist/collection/services/config.service.js +170 -170
  114. package/dist/collection/services/config.service.js.map +1 -1
  115. package/dist/collection/services/language.service.js +107 -107
  116. package/dist/collection/services/language.service.js.map +1 -1
  117. package/dist/collection/services/route.service.js +163 -163
  118. package/dist/collection/services/route.service.js.map +1 -1
  119. package/dist/collection/services/search/coveo.service.js +34 -34
  120. package/dist/collection/services/search/coveo.service.js.map +1 -1
  121. package/dist/collection/services/search/coveo.settings.js +19 -19
  122. package/dist/collection/services/search/coveo.settings.js.map +1 -1
  123. package/dist/collection/services/search/parcel.service.js +54 -54
  124. package/dist/collection/services/search/parcel.service.js.map +1 -1
  125. package/dist/collection/services/search/places.service.js +95 -95
  126. package/dist/collection/services/search/places.service.js.map +1 -1
  127. package/dist/collection/services/search/places.settings.js +16 -16
  128. package/dist/collection/services/search/places.settings.js.map +1 -1
  129. package/dist/collection/services/search/search-utilities.js +26 -26
  130. package/dist/collection/services/search/search-utilities.js.map +1 -1
  131. package/dist/collection/services/search/search.service.js +42 -42
  132. package/dist/collection/services/search/search.service.js.map +1 -1
  133. package/dist/collection/services/ui.service.js +30 -30
  134. package/dist/collection/services/ui.service.js.map +1 -1
  135. package/dist/collection/tests/setup-tests.js +14 -14
  136. package/dist/collection/tests/setup-tests.js.map +1 -1
  137. package/dist/collection/utils/highlighted.component.js +11 -11
  138. package/dist/collection/utils/highlighted.component.js.map +1 -1
  139. package/dist/collection/utils/if.component.js +7 -7
  140. package/dist/collection/utils/if.component.js.map +1 -1
  141. package/dist/collection/utils/svg-icon.component.js +3 -3
  142. package/dist/collection/utils/svg-icon.component.js.map +1 -1
  143. package/dist/collection/utils/svg-sprite.component.js +3 -3
  144. package/dist/collection/utils/svg-sprite.component.js.map +1 -1
  145. package/dist/collection/utils/utils.js +16 -16
  146. package/dist/collection/utils/utils.js.map +1 -1
  147. package/dist/components/klp-widget.controller.js +15754 -15754
  148. package/dist/components/klp-widget.controller.js.map +1 -1
  149. package/dist/components/language.service.js +139 -139
  150. package/dist/components/language.service.js.map +1 -1
  151. package/dist/components/post-klp-login-widget2.js +48 -48
  152. package/dist/components/post-klp-login-widget2.js.map +1 -1
  153. package/dist/components/post-language-switch2.js +102 -102
  154. package/dist/components/post-language-switch2.js.map +1 -1
  155. package/dist/components/post-logo2.js +67 -67
  156. package/dist/components/post-logo2.js.map +1 -1
  157. package/dist/components/post-main-navigation2.js +243 -243
  158. package/dist/components/post-main-navigation2.js.map +1 -1
  159. package/dist/components/post-meta-navigation2.js +32 -32
  160. package/dist/components/post-meta-navigation2.js.map +1 -1
  161. package/dist/components/post-search2.js +577 -555
  162. package/dist/components/post-search2.js.map +1 -1
  163. package/dist/components/post-skiplinks2.js +52 -52
  164. package/dist/components/post-skiplinks2.js.map +1 -1
  165. package/dist/components/store.js +19 -12
  166. package/dist/components/store.js.map +1 -1
  167. package/dist/components/svg-icon.component.js +1 -1
  168. package/dist/components/svg-icon.component.js.map +1 -1
  169. package/dist/components/svg-sprite.component.js +39 -39
  170. package/dist/components/svg-sprite.component.js.map +1 -1
  171. package/dist/components/swisspost-internet-breadcrumbs.js +387 -409
  172. package/dist/components/swisspost-internet-breadcrumbs.js.map +1 -1
  173. package/dist/components/swisspost-internet-footer.js +140 -140
  174. package/dist/components/swisspost-internet-footer.js.map +1 -1
  175. package/dist/components/swisspost-internet-header.js +672 -672
  176. package/dist/components/swisspost-internet-header.js.map +1 -1
  177. package/dist/components/ui.service.js +27 -27
  178. package/dist/components/ui.service.js.map +1 -1
  179. package/dist/components/utils.js +14 -14
  180. package/dist/components/utils.js.map +1 -1
  181. package/dist/esm/{if.component-542fb8c3.js → if.component-0fe54385.js} +6 -6
  182. package/dist/esm/if.component-0fe54385.js.map +1 -0
  183. package/dist/esm/{klp-widget.controller-be1eeb16.js → klp-widget.controller-55366e6a.js} +15755 -15755
  184. package/dist/esm/klp-widget.controller-55366e6a.js.map +1 -0
  185. package/dist/esm/{language.service-e49858e0.js → language.service-023d2711.js} +141 -141
  186. package/dist/esm/language.service-023d2711.js.map +1 -0
  187. package/dist/esm/post-klp-login-widget.entry.js +33 -33
  188. package/dist/esm/post-klp-login-widget.entry.js.map +1 -1
  189. package/dist/esm/post-language-switch.entry.js +88 -88
  190. package/dist/esm/post-language-switch.entry.js.map +1 -1
  191. package/dist/esm/post-logo.entry.js +51 -51
  192. package/dist/esm/post-logo.entry.js.map +1 -1
  193. package/dist/esm/post-main-navigation.entry.js +226 -226
  194. package/dist/esm/post-main-navigation.entry.js.map +1 -1
  195. package/dist/esm/post-meta-navigation.entry.js +15 -15
  196. package/dist/esm/post-meta-navigation.entry.js.map +1 -1
  197. package/dist/esm/post-search.entry.js +556 -534
  198. package/dist/esm/post-search.entry.js.map +1 -1
  199. package/dist/esm/post-skiplinks.entry.js +41 -41
  200. package/dist/esm/post-skiplinks.entry.js.map +1 -1
  201. package/dist/esm/{store-d495dc07.js → store-837c3490.js} +20 -13
  202. package/dist/esm/store-837c3490.js.map +1 -0
  203. package/dist/esm/{svg-icon.component-1b1b27a2.js → svg-icon.component-e09b4bf9.js} +2 -2
  204. package/dist/esm/svg-icon.component-e09b4bf9.js.map +1 -0
  205. package/dist/esm/{svg-sprite.component-ec0ac38c.js → svg-sprite.component-cf60303f.js} +40 -40
  206. package/dist/esm/svg-sprite.component-cf60303f.js.map +1 -0
  207. package/dist/esm/swisspost-internet-breadcrumbs.entry.js +370 -392
  208. package/dist/esm/swisspost-internet-breadcrumbs.entry.js.map +1 -1
  209. package/dist/esm/swisspost-internet-footer.entry.js +125 -125
  210. package/dist/esm/swisspost-internet-footer.entry.js.map +1 -1
  211. package/dist/esm/swisspost-internet-header.entry.js +608 -608
  212. package/dist/esm/swisspost-internet-header.entry.js.map +1 -1
  213. package/dist/esm/{ui.service-1d9b0f51.js → ui.service-2fbc9c45.js} +28 -28
  214. package/dist/esm/ui.service-2fbc9c45.js.map +1 -0
  215. package/dist/esm/{utils-5bf107ff.js → utils-ee79122f.js} +15 -15
  216. package/dist/esm/utils-ee79122f.js.map +1 -0
  217. package/dist/esm-es5/{if.component-542fb8c3.js → if.component-0fe54385.js} +1 -1
  218. package/dist/esm-es5/if.component-0fe54385.js.map +1 -0
  219. package/dist/esm-es5/{klp-widget.controller-be1eeb16.js → klp-widget.controller-55366e6a.js} +2 -2
  220. package/dist/esm-es5/klp-widget.controller-55366e6a.js.map +1 -0
  221. package/dist/esm-es5/{language.service-e49858e0.js → language.service-023d2711.js} +2 -2
  222. package/dist/esm-es5/language.service-023d2711.js.map +1 -0
  223. package/dist/esm-es5/post-klp-login-widget.entry.js +1 -1
  224. package/dist/esm-es5/post-klp-login-widget.entry.js.map +1 -1
  225. package/dist/esm-es5/post-language-switch.entry.js +1 -1
  226. package/dist/esm-es5/post-language-switch.entry.js.map +1 -1
  227. package/dist/esm-es5/post-logo.entry.js +1 -1
  228. package/dist/esm-es5/post-logo.entry.js.map +1 -1
  229. package/dist/esm-es5/post-main-navigation.entry.js +1 -1
  230. package/dist/esm-es5/post-main-navigation.entry.js.map +1 -1
  231. package/dist/esm-es5/post-meta-navigation.entry.js +1 -1
  232. package/dist/esm-es5/post-meta-navigation.entry.js.map +1 -1
  233. package/dist/esm-es5/post-search.entry.js +1 -1
  234. package/dist/esm-es5/post-search.entry.js.map +1 -1
  235. package/dist/esm-es5/post-skiplinks.entry.js +1 -1
  236. package/dist/esm-es5/post-skiplinks.entry.js.map +1 -1
  237. package/dist/esm-es5/store-837c3490.js +2 -0
  238. package/dist/esm-es5/store-837c3490.js.map +1 -0
  239. package/dist/esm-es5/{svg-icon.component-1b1b27a2.js → svg-icon.component-e09b4bf9.js} +1 -1
  240. package/dist/esm-es5/svg-icon.component-e09b4bf9.js.map +1 -0
  241. package/dist/esm-es5/{svg-sprite.component-ec0ac38c.js → svg-sprite.component-cf60303f.js} +1 -1
  242. package/dist/esm-es5/svg-sprite.component-cf60303f.js.map +1 -0
  243. package/dist/esm-es5/swisspost-internet-breadcrumbs.entry.js +3 -3
  244. package/dist/esm-es5/swisspost-internet-breadcrumbs.entry.js.map +1 -1
  245. package/dist/esm-es5/swisspost-internet-footer.entry.js +1 -1
  246. package/dist/esm-es5/swisspost-internet-footer.entry.js.map +1 -1
  247. package/dist/esm-es5/swisspost-internet-header.entry.js +1 -1
  248. package/dist/esm-es5/swisspost-internet-header.entry.js.map +1 -1
  249. package/dist/esm-es5/{ui.service-1d9b0f51.js → ui.service-2fbc9c45.js} +1 -1
  250. package/dist/esm-es5/ui.service-2fbc9c45.js.map +1 -0
  251. package/dist/esm-es5/{utils-5bf107ff.js → utils-ee79122f.js} +1 -1
  252. package/dist/esm-es5/utils-ee79122f.js.map +1 -0
  253. package/dist/swisspost-internet-header/assets/config/test-configuration.json +4067 -4067
  254. package/dist/swisspost-internet-header/p-06649b46.js +2 -0
  255. package/dist/swisspost-internet-header/p-06649b46.js.map +1 -0
  256. package/dist/swisspost-internet-header/{p-ec80c8fc.js → p-0942595f.js} +2 -2
  257. package/dist/swisspost-internet-header/p-0942595f.js.map +1 -0
  258. package/dist/swisspost-internet-header/{p-c29ec122.system.js → p-0c5624c0.system.js} +1 -1
  259. package/dist/swisspost-internet-header/p-0c5624c0.system.js.map +1 -0
  260. package/dist/swisspost-internet-header/{p-2eb04045.entry.js → p-0cba8ab4.entry.js} +2 -2
  261. package/dist/swisspost-internet-header/p-0cba8ab4.entry.js.map +1 -0
  262. package/dist/swisspost-internet-header/p-17a47667.system.js +1 -1
  263. package/dist/swisspost-internet-header/{p-ddcb8258.entry.js → p-26879023.entry.js} +2 -2
  264. package/dist/swisspost-internet-header/p-26879023.entry.js.map +1 -0
  265. package/dist/swisspost-internet-header/{p-cb3de015.system.entry.js → p-28e6362f.system.entry.js} +2 -2
  266. package/dist/swisspost-internet-header/p-28e6362f.system.entry.js.map +1 -0
  267. package/dist/swisspost-internet-header/{p-00fd320e.entry.js → p-322526ef.entry.js} +2 -2
  268. package/dist/swisspost-internet-header/p-322526ef.entry.js.map +1 -0
  269. package/dist/swisspost-internet-header/{p-f4ff1e9e.system.js → p-3753a678.system.js} +2 -2
  270. package/dist/swisspost-internet-header/p-3753a678.system.js.map +1 -0
  271. package/dist/swisspost-internet-header/{p-a9c4b2d0.system.entry.js → p-38d645ba.system.entry.js} +2 -2
  272. package/dist/swisspost-internet-header/p-38d645ba.system.entry.js.map +1 -0
  273. package/dist/swisspost-internet-header/{p-4c9ec2d8.system.js → p-42695801.system.js} +2 -2
  274. package/dist/swisspost-internet-header/p-42695801.system.js.map +1 -0
  275. package/dist/swisspost-internet-header/{p-bdabd6ac.js → p-45db66a6.js} +1 -1
  276. package/dist/swisspost-internet-header/p-45db66a6.js.map +1 -0
  277. package/dist/swisspost-internet-header/p-493337e1.system.entry.js +2 -0
  278. package/dist/swisspost-internet-header/p-493337e1.system.entry.js.map +1 -0
  279. package/dist/swisspost-internet-header/{p-78f653be.system.entry.js → p-5d2fac3b.system.entry.js} +2 -2
  280. package/dist/swisspost-internet-header/p-5d2fac3b.system.entry.js.map +1 -0
  281. package/dist/swisspost-internet-header/p-62c5cf26.entry.js +2 -0
  282. package/dist/swisspost-internet-header/p-62c5cf26.entry.js.map +1 -0
  283. package/dist/swisspost-internet-header/{p-9d0a7039.entry.js → p-64cb215a.entry.js} +2 -2
  284. package/dist/swisspost-internet-header/p-64cb215a.entry.js.map +1 -0
  285. package/dist/swisspost-internet-header/{p-a51ad207.system.entry.js → p-66144e99.system.entry.js} +2 -2
  286. package/dist/swisspost-internet-header/p-66144e99.system.entry.js.map +1 -0
  287. package/dist/swisspost-internet-header/p-715ebef7.system.entry.js +7 -0
  288. package/dist/swisspost-internet-header/p-715ebef7.system.entry.js.map +1 -0
  289. package/dist/swisspost-internet-header/{p-43cbbf42.entry.js → p-77d5e07f.entry.js} +2 -2
  290. package/dist/swisspost-internet-header/p-77d5e07f.entry.js.map +1 -0
  291. package/dist/swisspost-internet-header/p-7ea26ee9.entry.js +2 -0
  292. package/dist/swisspost-internet-header/p-7ea26ee9.entry.js.map +1 -0
  293. package/dist/swisspost-internet-header/p-7fcba2e7.system.js +2 -0
  294. package/dist/swisspost-internet-header/p-7fcba2e7.system.js.map +1 -0
  295. package/dist/swisspost-internet-header/{p-549b62ba.system.js → p-88aac12c.system.js} +1 -1
  296. package/dist/swisspost-internet-header/p-88aac12c.system.js.map +1 -0
  297. package/dist/swisspost-internet-header/{p-0e2ec555.js → p-8bf099a8.js} +1 -1
  298. package/dist/swisspost-internet-header/p-8bf099a8.js.map +1 -0
  299. package/dist/swisspost-internet-header/{p-8717445f.entry.js → p-95b81c4d.entry.js} +2 -2
  300. package/dist/swisspost-internet-header/p-95b81c4d.entry.js.map +1 -0
  301. package/dist/swisspost-internet-header/{p-3eb881c3.js → p-a2f9d462.js} +1 -1
  302. package/dist/swisspost-internet-header/p-a2f9d462.js.map +1 -0
  303. package/dist/swisspost-internet-header/{p-eeff8b03.js → p-ab1dd269.js} +1 -1
  304. package/dist/swisspost-internet-header/p-ab1dd269.js.map +1 -0
  305. package/dist/swisspost-internet-header/p-b228fe49.system.entry.js +2 -0
  306. package/dist/swisspost-internet-header/p-b228fe49.system.entry.js.map +1 -0
  307. package/dist/swisspost-internet-header/{p-a4160d23.entry.js → p-ccb522ba.entry.js} +2 -2
  308. package/dist/swisspost-internet-header/p-ccb522ba.entry.js.map +1 -0
  309. package/dist/swisspost-internet-header/p-cfa787d7.entry.js +6 -0
  310. package/dist/swisspost-internet-header/p-cfa787d7.entry.js.map +1 -0
  311. package/dist/swisspost-internet-header/{p-c946c5b8.system.entry.js → p-d6539597.system.entry.js} +2 -2
  312. package/dist/swisspost-internet-header/p-d6539597.system.entry.js.map +1 -0
  313. package/dist/swisspost-internet-header/{p-cb06a633.system.entry.js → p-e2990968.system.entry.js} +2 -2
  314. package/dist/swisspost-internet-header/p-e2990968.system.entry.js.map +1 -0
  315. package/dist/swisspost-internet-header/{p-7e653a26.js → p-ed24b372.js} +2 -2
  316. package/dist/swisspost-internet-header/p-ed24b372.js.map +1 -0
  317. package/dist/swisspost-internet-header/{p-9509f6c7.system.js → p-edb2802d.system.js} +1 -1
  318. package/dist/swisspost-internet-header/p-edb2802d.system.js.map +1 -0
  319. package/dist/swisspost-internet-header/{p-ee915bbe.system.js → p-ee119d2e.system.js} +1 -1
  320. package/dist/swisspost-internet-header/p-ee119d2e.system.js.map +1 -0
  321. package/dist/swisspost-internet-header/{p-883f9547.system.entry.js → p-f38f38f4.system.entry.js} +2 -2
  322. package/dist/swisspost-internet-header/p-f38f38f4.system.entry.js.map +1 -0
  323. package/dist/swisspost-internet-header/{p-3ba40afe.js → p-f7c0cf7b.js} +1 -1
  324. package/dist/swisspost-internet-header/p-f7c0cf7b.js.map +1 -0
  325. package/dist/swisspost-internet-header/{p-4654b2af.system.js → p-ffc59851.system.js} +1 -1
  326. package/dist/swisspost-internet-header/p-ffc59851.system.js.map +1 -0
  327. package/dist/swisspost-internet-header/swisspost-internet-header.esm.js +1 -1
  328. package/dist/types/assets/i18n/translations.d.ts +37 -37
  329. package/dist/types/components/post-internet-breadcrumbs/components/breadcrumb-list.component.d.ts +9 -9
  330. package/dist/types/components/post-internet-breadcrumbs/components/focus-trap.component.d.ts +12 -12
  331. package/dist/types/components/post-internet-breadcrumbs/components/middle-dropdown.component.d.ts +7 -7
  332. package/dist/types/components/post-internet-breadcrumbs/components/middle-links.component.d.ts +6 -6
  333. package/dist/types/components/post-internet-breadcrumbs/components/overlay.component.d.ts +16 -16
  334. package/dist/types/components/post-internet-breadcrumbs/post-internet-breadcrumbs.d.ts +45 -45
  335. package/dist/types/components/post-internet-footer/components/post-footer-block-address.component.d.ts +5 -5
  336. package/dist/types/components/post-internet-footer/components/post-footer-block-contact.component.d.ts +6 -6
  337. package/dist/types/components/post-internet-footer/components/post-footer-block-custom.component.d.ts +4 -4
  338. package/dist/types/components/post-internet-footer/components/post-footer-block-list.component.d.ts +5 -5
  339. package/dist/types/components/post-internet-footer/components/post-footer-block-socials.component.d.ts +5 -5
  340. package/dist/types/components/post-internet-footer/post-internet-footer.d.ts +10 -10
  341. package/dist/types/components/post-internet-header/post-internet-header.d.ts +124 -124
  342. package/dist/types/components/post-klp-login-widget/klp-widget.controller.d.ts +3 -3
  343. package/dist/types/components/post-klp-login-widget/post-klp-login-widget.d.ts +10 -10
  344. package/dist/types/components/post-language-switch/components/post-language-switch-list.d.ts +6 -6
  345. package/dist/types/components/post-language-switch/post-language-switch.d.ts +27 -27
  346. package/dist/types/components/post-logo/logo-sprite.component.d.ts +4 -4
  347. package/dist/types/components/post-logo/post-logo.d.ts +11 -11
  348. package/dist/types/components/post-main-navigation/components/level-one-action.component.d.ts +8 -8
  349. package/dist/types/components/post-main-navigation/post-main-navigation.d.ts +48 -48
  350. package/dist/types/components/post-meta-navigation/post-meta-navigation.d.ts +5 -5
  351. package/dist/types/components/post-search/post-search.d.ts +61 -61
  352. package/dist/types/components/post-skiplinks/post-skiplinks.d.ts +9 -9
  353. package/dist/types/data/store.d.ts +16 -16
  354. package/dist/types/index.d.ts +1 -1
  355. package/dist/types/models/breadcrumbs.model.d.ts +36 -36
  356. package/dist/types/models/coveo.model.d.ts +22 -22
  357. package/dist/types/models/footer.model.d.ts +48 -48
  358. package/dist/types/models/general.model.d.ts +46 -46
  359. package/dist/types/models/geocode.model.d.ts +52 -52
  360. package/dist/types/models/header.model.d.ts +163 -163
  361. package/dist/types/models/implementor.model.d.ts +22 -22
  362. package/dist/types/models/language.model.d.ts +6 -6
  363. package/dist/types/models/track-and-trace.model.d.ts +25 -25
  364. package/dist/types/services/config.service.d.ts +56 -56
  365. package/dist/types/services/language.service.d.ts +65 -65
  366. package/dist/types/services/route.service.d.ts +39 -39
  367. package/dist/types/services/search/coveo.service.d.ts +9 -9
  368. package/dist/types/services/search/coveo.settings.d.ts +2 -2
  369. package/dist/types/services/search/parcel.service.d.ts +28 -28
  370. package/dist/types/services/search/places.service.d.ts +24 -24
  371. package/dist/types/services/search/places.settings.d.ts +3 -3
  372. package/dist/types/services/search/search-utilities.d.ts +15 -15
  373. package/dist/types/services/search/search.service.d.ts +24 -24
  374. package/dist/types/services/ui.service.d.ts +23 -23
  375. package/dist/types/utils/highlighted.component.d.ts +4 -4
  376. package/dist/types/utils/if.component.d.ts +4 -4
  377. package/dist/types/utils/svg-icon.component.d.ts +4 -4
  378. package/dist/types/utils/svg-sprite.component.d.ts +1 -1
  379. package/dist/types/utils/utils.d.ts +8 -8
  380. package/package.json +7 -7
  381. package/readme.md +57 -15
  382. package/dist/cjs/if.component-313f59b8.js.map +0 -1
  383. package/dist/cjs/klp-widget.controller-675b23db.js.map +0 -1
  384. package/dist/cjs/language.service-a80ae01d.js.map +0 -1
  385. package/dist/cjs/store-47e14589.js.map +0 -1
  386. package/dist/cjs/svg-icon.component-10fbda11.js.map +0 -1
  387. package/dist/cjs/svg-sprite.component-c3b454b3.js.map +0 -1
  388. package/dist/cjs/ui.service-db4a8252.js.map +0 -1
  389. package/dist/cjs/utils-b6014257.js.map +0 -1
  390. package/dist/esm/if.component-542fb8c3.js.map +0 -1
  391. package/dist/esm/klp-widget.controller-be1eeb16.js.map +0 -1
  392. package/dist/esm/language.service-e49858e0.js.map +0 -1
  393. package/dist/esm/store-d495dc07.js.map +0 -1
  394. package/dist/esm/svg-icon.component-1b1b27a2.js.map +0 -1
  395. package/dist/esm/svg-sprite.component-ec0ac38c.js.map +0 -1
  396. package/dist/esm/ui.service-1d9b0f51.js.map +0 -1
  397. package/dist/esm/utils-5bf107ff.js.map +0 -1
  398. package/dist/esm-es5/if.component-542fb8c3.js.map +0 -1
  399. package/dist/esm-es5/klp-widget.controller-be1eeb16.js.map +0 -1
  400. package/dist/esm-es5/language.service-e49858e0.js.map +0 -1
  401. package/dist/esm-es5/store-d495dc07.js +0 -2
  402. package/dist/esm-es5/store-d495dc07.js.map +0 -1
  403. package/dist/esm-es5/svg-icon.component-1b1b27a2.js.map +0 -1
  404. package/dist/esm-es5/svg-sprite.component-ec0ac38c.js.map +0 -1
  405. package/dist/esm-es5/ui.service-1d9b0f51.js.map +0 -1
  406. package/dist/esm-es5/utils-5bf107ff.js.map +0 -1
  407. package/dist/swisspost-internet-header/p-00fd320e.entry.js.map +0 -1
  408. package/dist/swisspost-internet-header/p-0e2ec555.js.map +0 -1
  409. package/dist/swisspost-internet-header/p-1394ee67.entry.js +0 -2
  410. package/dist/swisspost-internet-header/p-1394ee67.entry.js.map +0 -1
  411. package/dist/swisspost-internet-header/p-26c2842e.system.entry.js +0 -2
  412. package/dist/swisspost-internet-header/p-26c2842e.system.entry.js.map +0 -1
  413. package/dist/swisspost-internet-header/p-2eb04045.entry.js.map +0 -1
  414. package/dist/swisspost-internet-header/p-3ba40afe.js.map +0 -1
  415. package/dist/swisspost-internet-header/p-3eb881c3.js.map +0 -1
  416. package/dist/swisspost-internet-header/p-43cbbf42.entry.js.map +0 -1
  417. package/dist/swisspost-internet-header/p-4654b2af.system.js.map +0 -1
  418. package/dist/swisspost-internet-header/p-4c9ec2d8.system.js.map +0 -1
  419. package/dist/swisspost-internet-header/p-549b62ba.system.js.map +0 -1
  420. package/dist/swisspost-internet-header/p-5e43c5e0.js +0 -2
  421. package/dist/swisspost-internet-header/p-5e43c5e0.js.map +0 -1
  422. package/dist/swisspost-internet-header/p-74932c29.entry.js +0 -6
  423. package/dist/swisspost-internet-header/p-74932c29.entry.js.map +0 -1
  424. package/dist/swisspost-internet-header/p-76ce4acc.system.entry.js +0 -2
  425. package/dist/swisspost-internet-header/p-76ce4acc.system.entry.js.map +0 -1
  426. package/dist/swisspost-internet-header/p-78f653be.system.entry.js.map +0 -1
  427. package/dist/swisspost-internet-header/p-7e653a26.js.map +0 -1
  428. package/dist/swisspost-internet-header/p-7f16a46b.entry.js +0 -2
  429. package/dist/swisspost-internet-header/p-7f16a46b.entry.js.map +0 -1
  430. package/dist/swisspost-internet-header/p-8717445f.entry.js.map +0 -1
  431. package/dist/swisspost-internet-header/p-883f9547.system.entry.js.map +0 -1
  432. package/dist/swisspost-internet-header/p-9509f6c7.system.js.map +0 -1
  433. package/dist/swisspost-internet-header/p-9d0a7039.entry.js.map +0 -1
  434. package/dist/swisspost-internet-header/p-a4160d23.entry.js.map +0 -1
  435. package/dist/swisspost-internet-header/p-a51ad207.system.entry.js.map +0 -1
  436. package/dist/swisspost-internet-header/p-a9c4b2d0.system.entry.js.map +0 -1
  437. package/dist/swisspost-internet-header/p-bdabd6ac.js.map +0 -1
  438. package/dist/swisspost-internet-header/p-c29ec122.system.js.map +0 -1
  439. package/dist/swisspost-internet-header/p-c69923cd.system.js +0 -2
  440. package/dist/swisspost-internet-header/p-c69923cd.system.js.map +0 -1
  441. package/dist/swisspost-internet-header/p-c946c5b8.system.entry.js.map +0 -1
  442. package/dist/swisspost-internet-header/p-cb06a633.system.entry.js.map +0 -1
  443. package/dist/swisspost-internet-header/p-cb3de015.system.entry.js.map +0 -1
  444. package/dist/swisspost-internet-header/p-d713a3b3.system.entry.js +0 -7
  445. package/dist/swisspost-internet-header/p-d713a3b3.system.entry.js.map +0 -1
  446. package/dist/swisspost-internet-header/p-ddcb8258.entry.js.map +0 -1
  447. package/dist/swisspost-internet-header/p-ec80c8fc.js.map +0 -1
  448. package/dist/swisspost-internet-header/p-ee915bbe.system.js.map +0 -1
  449. package/dist/swisspost-internet-header/p-eeff8b03.js.map +0 -1
  450. package/dist/swisspost-internet-header/p-f4ff1e9e.system.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"language.service.js","sourceRoot":"","sources":["../../../src/services/language.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { translations } from '../assets/i18n/translations';\r\nimport { state } from '../data/store';\r\n\r\nexport const getUserLang = (\r\n supportedLanguages: string[],\r\n implementorPreferredLanguage?: string,\r\n localStorageKey?: string,\r\n cookieKey?: string,\r\n) => {\r\n // If there are no supported languages, well...\r\n if (supportedLanguages.length === 0) {\r\n return undefined;\r\n }\r\n\r\n // If there is only one language in the config, use this\r\n if (supportedLanguages.length === 1) {\r\n return supportedLanguages[0];\r\n }\r\n\r\n const url = new URL(window.location.href);\r\n\r\n /**\r\n * Build array of possible language definitions in order of importance.\r\n * At the end is a filter function that will weed out any undefined or null entries.\r\n */\r\n let languagesSet: Array<string> = [\r\n // Check if implementor overrides lang config\r\n implementorPreferredLanguage,\r\n\r\n // Check query string param\r\n url.searchParams.get('lang'),\r\n\r\n // Check url pathname\r\n url.pathname.split('/').find(segment => supportedLanguages.includes(segment)),\r\n\r\n // Check local storage with the key provided\r\n localStorageKey !== undefined ? window.localStorage.getItem(localStorageKey) : null,\r\n\r\n // Check cookies\r\n getCookie('language'),\r\n getCookie('lang'),\r\n cookieKey !== undefined ? getCookie(cookieKey) : null,\r\n\r\n // Check document language\r\n document.documentElement.lang,\r\n\r\n // Check browser preferred language\r\n getPreferredLanguageFromBrowser(supportedLanguages),\r\n\r\n // Check the state\r\n state.currentLanguage,\r\n ].filter((lang): lang is string => !!lang);\r\n\r\n // Check the set of languages to see if it matches\r\n // any of the supported languages. Return the first\r\n // supported language if there is none set\r\n const lang =\r\n languagesSet.find(language => supportedLanguages.includes(language)) || supportedLanguages[0];\r\n\r\n if (!lang || lang.length !== 2) {\r\n throw new Error(\r\n `Current language could not be determined from settings or the language provided (${lang}) is not supported by the Header API.`,\r\n );\r\n }\r\n\r\n return lang;\r\n};\r\n\r\n/**\r\n * Persist chosen language to local storage\r\n * @param lang Currently chose language, two char string\r\n */\r\nexport const persistLanguageChoice = (\r\n lang: string,\r\n cookieKey?: string,\r\n localStorageKey?: string,\r\n) => {\r\n if (localStorageKey !== undefined) {\r\n window.localStorage.setItem(localStorageKey, lang);\r\n }\r\n\r\n if (cookieKey !== undefined) {\r\n setCookie(cookieKey, lang);\r\n }\r\n\r\n state.currentLanguage = lang;\r\n};\r\n\r\n/**\r\n * Read a cookie by name\r\n * https://stackoverflow.com/questions/5639346/what-is-the-shortest-function-for-reading-a-cookie-by-name-in-javascript?rq=1\r\n * @param name Cookie name\r\n * @returns Cookie value or an empty string\r\n */\r\nexport const getCookie = (name: string) => {\r\n return document.cookie.match('(^|;)\\\\s*' + name + '\\\\s*=\\\\s*([^;]+)')?.pop() || '';\r\n};\r\n\r\n/**\r\n * Write a new cookie\r\n * https://developer.mozilla.org/en-US/docs/Web/API/document/cookie#A_little_framework.3A_a_complete_cookies_reader.2Fwriter_with_full_unicode_support\r\n * @param key\r\n * @param value\r\n */\r\nexport const setCookie = (key: string, value: string) => {\r\n document.cookie = `${encodeURIComponent(key)}=${encodeURIComponent(value)}`;\r\n};\r\n\r\nconst getPreferredLanguageFromBrowser = (supportedLanguages: string[]): string | null => {\r\n // IE & Chrome\r\n if (navigator.language) {\r\n const lang = extractLanguage(navigator.language);\r\n if (supportedLanguages.indexOf(lang) !== -1) {\r\n return lang;\r\n }\r\n }\r\n\r\n // Chrome supports a list of preferred languages: if the preferred is not supported, we go down the list.\r\n if (navigator.languages) {\r\n for (const l of navigator.languages) {\r\n const lang = extractLanguage(l);\r\n if (supportedLanguages.indexOf(lang) !== -1) {\r\n return lang;\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n};\r\n\r\nconst extractLanguage = (language: string): string => language.substring(0, 2).toLowerCase();\r\n\r\n/**\r\n * Simple translate function for general header UI strings\r\n *\r\n * @param key Translation key\r\n * @param lang Force a language\r\n * @param translationObject Optionally provide translations\r\n * @returns Translated string or the key\r\n */\r\nexport const translate = (key: string, lang?: string, translationObject = translations) =>\r\n translationObject[key]?.[lang ?? state.currentLanguage ?? ''] ?? key;\r\n"]}
1
+ {"version":3,"file":"language.service.js","sourceRoot":"","sources":["../../../src/services/language.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { translations } from '../assets/i18n/translations';\nimport { state } from '../data/store';\n\nexport const getUserLang = (\n supportedLanguages: string[],\n implementorPreferredLanguage?: string,\n localStorageKey?: string,\n cookieKey?: string,\n) => {\n // If there are no supported languages, well...\n if (supportedLanguages.length === 0) {\n return undefined;\n }\n\n // If there is only one language in the config, use this\n if (supportedLanguages.length === 1) {\n return supportedLanguages[0];\n }\n\n const url = new URL(window.location.href);\n\n /**\n * Build array of possible language definitions in order of importance.\n * At the end is a filter function that will weed out any undefined or null entries.\n */\n let languagesSet: Array<string> = [\n // Check if implementor overrides lang config\n implementorPreferredLanguage,\n\n // Check query string param\n url.searchParams.get('lang'),\n\n // Check url pathname\n url.pathname.split('/').find(segment => supportedLanguages.includes(segment)),\n\n // Check local storage with the key provided\n localStorageKey !== undefined ? window.localStorage.getItem(localStorageKey) : null,\n\n // Check cookies\n getCookie('language'),\n getCookie('lang'),\n cookieKey !== undefined ? getCookie(cookieKey) : null,\n\n // Check document language\n document.documentElement.lang,\n\n // Check browser preferred language\n getPreferredLanguageFromBrowser(supportedLanguages),\n\n // Check the state\n state.currentLanguage,\n ].filter((lang): lang is string => !!lang);\n\n // Check the set of languages to see if it matches\n // any of the supported languages. Return the first\n // supported language if there is none set\n const lang =\n languagesSet.find(language => supportedLanguages.includes(language)) || supportedLanguages[0];\n\n if (!lang || lang.length !== 2) {\n throw new Error(\n `Current language could not be determined from settings or the language provided (${lang}) is not supported by the Header API.`,\n );\n }\n\n return lang;\n};\n\n/**\n * Persist chosen language to local storage\n * @param lang Currently chose language, two char string\n */\nexport const persistLanguageChoice = (\n lang: string,\n cookieKey?: string,\n localStorageKey?: string,\n) => {\n if (localStorageKey !== undefined) {\n window.localStorage.setItem(localStorageKey, lang);\n }\n\n if (cookieKey !== undefined) {\n setCookie(cookieKey, lang);\n }\n\n state.currentLanguage = lang;\n};\n\n/**\n * Read a cookie by name\n * https://stackoverflow.com/questions/5639346/what-is-the-shortest-function-for-reading-a-cookie-by-name-in-javascript?rq=1\n * @param name Cookie name\n * @returns Cookie value or an empty string\n */\nexport const getCookie = (name: string) => {\n return document.cookie.match('(^|;)\\\\s*' + name + '\\\\s*=\\\\s*([^;]+)')?.pop() || '';\n};\n\n/**\n * Write a new cookie\n * https://developer.mozilla.org/en-US/docs/Web/API/document/cookie#A_little_framework.3A_a_complete_cookies_reader.2Fwriter_with_full_unicode_support\n * @param key\n * @param value\n */\nexport const setCookie = (key: string, value: string) => {\n document.cookie = `${encodeURIComponent(key)}=${encodeURIComponent(value)}`;\n};\n\nconst getPreferredLanguageFromBrowser = (supportedLanguages: string[]): string | null => {\n // IE & Chrome\n if (navigator.language) {\n const lang = extractLanguage(navigator.language);\n if (supportedLanguages.indexOf(lang) !== -1) {\n return lang;\n }\n }\n\n // Chrome supports a list of preferred languages: if the preferred is not supported, we go down the list.\n if (navigator.languages) {\n for (const l of navigator.languages) {\n const lang = extractLanguage(l);\n if (supportedLanguages.indexOf(lang) !== -1) {\n return lang;\n }\n }\n }\n\n return null;\n};\n\nconst extractLanguage = (language: string): string => language.substring(0, 2).toLowerCase();\n\n/**\n * Simple translate function for general header UI strings\n *\n * @param key Translation key\n * @param lang Force a language\n * @param translationObject Optionally provide translations\n * @returns Translated string or the key\n */\nexport const translate = (key: string, lang?: string, translationObject = translations) =>\n translationObject[key]?.[lang ?? state.currentLanguage ?? ''] ?? key;\n"]}
@@ -1,163 +1,163 @@
1
- /**
2
- * Activate the current route based on the config and the match mode
3
- * @param config Main Navigation Config
4
- * @param activeRouteProp Match mode
5
- * @returns Modified Main Navigation Config
6
- */
7
- export const markActiveRoute = (config, activeRouteProp) => {
8
- // Don't highlight any route
9
- if (activeRouteProp === false) {
10
- return config;
11
- }
12
- // Set compare URL and check if activeRouteProp is valid
13
- let compareUrl;
14
- config = resetOverrideConfig(config);
15
- if (activeRouteProp === 'auto' || activeRouteProp === 'exact') {
16
- // Check if an active route is already configured, set override to that and return
17
- if (hasActivePortalRoute(config)) {
18
- return resetActiveStateToPortalConfig(config);
19
- }
20
- compareUrl = new URL(window.location.href);
21
- }
22
- else {
23
- try {
24
- compareUrl = new URL(activeRouteProp, document.location.origin);
25
- }
26
- catch (error) {
27
- console.warn(`Active Route: ${activeRouteProp} is not a valid URL. Navigation highlighting has been disabled.`);
28
- return config;
29
- }
30
- }
31
- const scoreList = compileScoreList(config, compareUrl, activeRouteProp);
32
- if (scoreList.length === 0) {
33
- // No match found or already active links defined
34
- return config;
35
- }
36
- const winnerPair = scoreList[0];
37
- winnerPair.main.isActiveOverride = true;
38
- if (winnerPair.sub)
39
- winnerPair.sub.isActiveOverride = true;
40
- return config;
41
- };
42
- /**
43
- * Check if the portal config set any active route
44
- * @param config Main navigation config
45
- * @returns True if portal set any route as active
46
- */
47
- export const hasActivePortalRoute = (config) => {
48
- return config.filter(nav => nav.isActive).length > 0;
49
- };
50
- export const resetActiveStateToPortalConfig = (config) => {
51
- return config.map(nav => (Object.assign(Object.assign({}, nav), { isActiveOverride: nav.isActive, flyout: nav.flyout.map(flyout => (Object.assign(Object.assign({}, flyout), { linkList: flyout.linkList.map(link => (Object.assign(Object.assign({}, link), { isActiveOverride: link.isActive }))) }))) })));
52
- };
53
- const resetOverrideConfig = (config) => {
54
- return config.map(nav => (Object.assign(Object.assign({}, nav), { isActiveOverride: false, flyout: nav.flyout.map(flyout => (Object.assign(Object.assign({}, flyout), { linkList: flyout.linkList.map(link => (Object.assign(Object.assign({}, link), { isActiveOverride: false }))) }))) })));
55
- };
56
- /**
57
- * Compile a list of scores based on the map mode, sorted in descending order
58
- * @param config Main Nav Config
59
- * @param compareUrl Current Browser URL or a custom URL
60
- * @param activeRouteProp Match mode
61
- * @returns A list of scored URLs if any matched
62
- */
63
- export const compileScoreList = (config, compareUrl, activeRouteProp) => {
64
- // Flag to check if the Portal set any active links or if there are any exact matches
65
- let hadAnyActiveLink = false;
66
- const scoreList = [];
67
- config.forEach(mainNav => {
68
- if (hadAnyActiveLink || !mainNav) {
69
- return;
70
- }
71
- try {
72
- const score = compareRoutes(compareUrl, new URL(mainNav.url), activeRouteProp);
73
- if (score > 0) {
74
- if (score === Infinity)
75
- hadAnyActiveLink = true;
76
- scoreList.push({ main: mainNav, score });
77
- }
78
- }
79
- catch (_a) {
80
- // Not a valid url, continue
81
- }
82
- // Loop through flyout links 2nd level
83
- if (mainNav.flyout.length) {
84
- mainNav.flyout.forEach(flyout => {
85
- if (flyout.linkList) {
86
- flyout.linkList.forEach(linklist => {
87
- // Don't override if any link is already active
88
- if (linklist.isActive && (activeRouteProp === 'auto' || activeRouteProp === 'exact')) {
89
- hadAnyActiveLink = true;
90
- return;
91
- }
92
- try {
93
- const url = new URL(linklist.url);
94
- const score = compareRoutes(compareUrl, url, activeRouteProp);
95
- if (score > 0) {
96
- if (score === Infinity)
97
- hadAnyActiveLink = true;
98
- // Push score
99
- scoreList.push({
100
- main: mainNav,
101
- sub: linklist,
102
- score,
103
- });
104
- }
105
- }
106
- catch (_a) {
107
- // Not a valid URL, continue
108
- }
109
- });
110
- }
111
- });
112
- }
113
- });
114
- return scoreList.sort((a, b) => b.score - a.score);
115
- };
116
- /**
117
- * Compare two URLs for similarity based on a match mode
118
- * @param baseUrl Browser URL
119
- * @param compareUrl Navigatgion URL
120
- * @param matchMode exact or auto matching
121
- * @returns Score
122
- */
123
- export const compareRoutes = (baseUrl, compareUrl, matchMode) => {
124
- // One url is not defined or they don't share the same orign
125
- if (!baseUrl || !compareUrl || baseUrl.origin !== compareUrl.origin) {
126
- return 0;
127
- }
128
- // Exact match, origin and pathname are the same
129
- if (baseUrl.pathname === compareUrl.pathname) {
130
- return Infinity;
131
- }
132
- // The basepath is longer than the comparison, a match is impossible
133
- if (baseUrl.pathname.length < compareUrl.pathname.length) {
134
- return 0;
135
- }
136
- if (matchMode === 'auto') {
137
- const baseSegments = [baseUrl.origin, ...baseUrl.pathname.split('/').filter(x => !!x)];
138
- const compareSegments = [compareUrl.origin, ...compareUrl.pathname.split('/').filter(x => !!x)];
139
- const score = getSimilarityScore(baseSegments, compareSegments);
140
- // If only some segments match, but not the whole smaller array, it's not a match
141
- return Math.min(baseSegments.length, compareSegments.length) === score ? score : 0;
142
- }
143
- return 0;
144
- };
145
- /**
146
- * Check how many items in an array match
147
- * @param a Base array
148
- * @param b Compare array
149
- * @returns Score
150
- */
151
- export const getSimilarityScore = (a, b) => {
152
- if (!(a === null || a === void 0 ? void 0 : a.length) || !(b === null || b === void 0 ? void 0 : b.length)) {
153
- return 0;
154
- }
155
- let i = 0;
156
- for (; i < Math.min(a.length, b.length); i++) {
157
- if (a[i] !== b[i]) {
158
- return 0;
159
- }
160
- }
161
- return i;
162
- };
163
- //# sourceMappingURL=route.service.js.map
1
+ /**
2
+ * Activate the current route based on the config and the match mode
3
+ * @param config Main Navigation Config
4
+ * @param activeRouteProp Match mode
5
+ * @returns Modified Main Navigation Config
6
+ */
7
+ export const markActiveRoute = (config, activeRouteProp) => {
8
+ // Don't highlight any route
9
+ if (activeRouteProp === false) {
10
+ return config;
11
+ }
12
+ // Set compare URL and check if activeRouteProp is valid
13
+ let compareUrl;
14
+ config = resetOverrideConfig(config);
15
+ if (activeRouteProp === 'auto' || activeRouteProp === 'exact') {
16
+ // Check if an active route is already configured, set override to that and return
17
+ if (hasActivePortalRoute(config)) {
18
+ return resetActiveStateToPortalConfig(config);
19
+ }
20
+ compareUrl = new URL(window.location.href);
21
+ }
22
+ else {
23
+ try {
24
+ compareUrl = new URL(activeRouteProp, document.location.origin);
25
+ }
26
+ catch (error) {
27
+ console.warn(`Active Route: ${activeRouteProp} is not a valid URL. Navigation highlighting has been disabled.`);
28
+ return config;
29
+ }
30
+ }
31
+ const scoreList = compileScoreList(config, compareUrl, activeRouteProp);
32
+ if (scoreList.length === 0) {
33
+ // No match found or already active links defined
34
+ return config;
35
+ }
36
+ const winnerPair = scoreList[0];
37
+ winnerPair.main.isActiveOverride = true;
38
+ if (winnerPair.sub)
39
+ winnerPair.sub.isActiveOverride = true;
40
+ return config;
41
+ };
42
+ /**
43
+ * Check if the portal config set any active route
44
+ * @param config Main navigation config
45
+ * @returns True if portal set any route as active
46
+ */
47
+ export const hasActivePortalRoute = (config) => {
48
+ return config.filter(nav => nav.isActive).length > 0;
49
+ };
50
+ export const resetActiveStateToPortalConfig = (config) => {
51
+ return config.map(nav => (Object.assign(Object.assign({}, nav), { isActiveOverride: nav.isActive, flyout: nav.flyout.map(flyout => (Object.assign(Object.assign({}, flyout), { linkList: flyout.linkList.map(link => (Object.assign(Object.assign({}, link), { isActiveOverride: link.isActive }))) }))) })));
52
+ };
53
+ const resetOverrideConfig = (config) => {
54
+ return config.map(nav => (Object.assign(Object.assign({}, nav), { isActiveOverride: false, flyout: nav.flyout.map(flyout => (Object.assign(Object.assign({}, flyout), { linkList: flyout.linkList.map(link => (Object.assign(Object.assign({}, link), { isActiveOverride: false }))) }))) })));
55
+ };
56
+ /**
57
+ * Compile a list of scores based on the map mode, sorted in descending order
58
+ * @param config Main Nav Config
59
+ * @param compareUrl Current Browser URL or a custom URL
60
+ * @param activeRouteProp Match mode
61
+ * @returns A list of scored URLs if any matched
62
+ */
63
+ export const compileScoreList = (config, compareUrl, activeRouteProp) => {
64
+ // Flag to check if the Portal set any active links or if there are any exact matches
65
+ let hadAnyActiveLink = false;
66
+ const scoreList = [];
67
+ config.forEach(mainNav => {
68
+ if (hadAnyActiveLink || !mainNav) {
69
+ return;
70
+ }
71
+ try {
72
+ const score = compareRoutes(compareUrl, new URL(mainNav.url), activeRouteProp);
73
+ if (score > 0) {
74
+ if (score === Infinity)
75
+ hadAnyActiveLink = true;
76
+ scoreList.push({ main: mainNav, score });
77
+ }
78
+ }
79
+ catch (_a) {
80
+ // Not a valid url, continue
81
+ }
82
+ // Loop through flyout links 2nd level
83
+ if (mainNav.flyout.length) {
84
+ mainNav.flyout.forEach(flyout => {
85
+ if (flyout.linkList) {
86
+ flyout.linkList.forEach(linklist => {
87
+ // Don't override if any link is already active
88
+ if (linklist.isActive && (activeRouteProp === 'auto' || activeRouteProp === 'exact')) {
89
+ hadAnyActiveLink = true;
90
+ return;
91
+ }
92
+ try {
93
+ const url = new URL(linklist.url);
94
+ const score = compareRoutes(compareUrl, url, activeRouteProp);
95
+ if (score > 0) {
96
+ if (score === Infinity)
97
+ hadAnyActiveLink = true;
98
+ // Push score
99
+ scoreList.push({
100
+ main: mainNav,
101
+ sub: linklist,
102
+ score,
103
+ });
104
+ }
105
+ }
106
+ catch (_a) {
107
+ // Not a valid URL, continue
108
+ }
109
+ });
110
+ }
111
+ });
112
+ }
113
+ });
114
+ return scoreList.sort((a, b) => b.score - a.score);
115
+ };
116
+ /**
117
+ * Compare two URLs for similarity based on a match mode
118
+ * @param baseUrl Browser URL
119
+ * @param compareUrl Navigatgion URL
120
+ * @param matchMode exact or auto matching
121
+ * @returns Score
122
+ */
123
+ export const compareRoutes = (baseUrl, compareUrl, matchMode) => {
124
+ // One url is not defined or they don't share the same orign
125
+ if (!baseUrl || !compareUrl || baseUrl.origin !== compareUrl.origin) {
126
+ return 0;
127
+ }
128
+ // Exact match, origin and pathname are the same
129
+ if (baseUrl.pathname === compareUrl.pathname) {
130
+ return Infinity;
131
+ }
132
+ // The basepath is longer than the comparison, a match is impossible
133
+ if (baseUrl.pathname.length < compareUrl.pathname.length) {
134
+ return 0;
135
+ }
136
+ if (matchMode === 'auto') {
137
+ const baseSegments = [baseUrl.origin, ...baseUrl.pathname.split('/').filter(x => !!x)];
138
+ const compareSegments = [compareUrl.origin, ...compareUrl.pathname.split('/').filter(x => !!x)];
139
+ const score = getSimilarityScore(baseSegments, compareSegments);
140
+ // If only some segments match, but not the whole smaller array, it's not a match
141
+ return Math.min(baseSegments.length, compareSegments.length) === score ? score : 0;
142
+ }
143
+ return 0;
144
+ };
145
+ /**
146
+ * Check how many items in an array match
147
+ * @param a Base array
148
+ * @param b Compare array
149
+ * @returns Score
150
+ */
151
+ export const getSimilarityScore = (a, b) => {
152
+ if (!(a === null || a === void 0 ? void 0 : a.length) || !(b === null || b === void 0 ? void 0 : b.length)) {
153
+ return 0;
154
+ }
155
+ let i = 0;
156
+ for (; i < Math.min(a.length, b.length); i++) {
157
+ if (a[i] !== b[i]) {
158
+ return 0;
159
+ }
160
+ }
161
+ return i;
162
+ };
163
+ //# sourceMappingURL=route.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"route.service.js","sourceRoot":"","sources":["../../../src/services/route.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { ActiveRouteProp } from '../models/general.model';\r\nimport { NavMainEntity, MainNavScoreList } from '../models/header.model';\r\n\r\n/**\r\n * Activate the current route based on the config and the match mode\r\n * @param config Main Navigation Config\r\n * @param activeRouteProp Match mode\r\n * @returns Modified Main Navigation Config\r\n */\r\nexport const markActiveRoute = (\r\n config: NavMainEntity[],\r\n activeRouteProp: ActiveRouteProp,\r\n): NavMainEntity[] => {\r\n // Don't highlight any route\r\n if (activeRouteProp === false) {\r\n return config;\r\n }\r\n\r\n // Set compare URL and check if activeRouteProp is valid\r\n let compareUrl: URL;\r\n config = resetOverrideConfig(config);\r\n\r\n if (activeRouteProp === 'auto' || activeRouteProp === 'exact') {\r\n // Check if an active route is already configured, set override to that and return\r\n if (hasActivePortalRoute(config)) {\r\n return resetActiveStateToPortalConfig(config);\r\n }\r\n\r\n compareUrl = new URL(window.location.href);\r\n } else {\r\n try {\r\n compareUrl = new URL(activeRouteProp, document.location.origin);\r\n } catch (error) {\r\n console.warn(\r\n `Active Route: ${activeRouteProp} is not a valid URL. Navigation highlighting has been disabled.`,\r\n );\r\n return config;\r\n }\r\n }\r\n\r\n const scoreList = compileScoreList(config, compareUrl, activeRouteProp);\r\n\r\n if (scoreList.length === 0) {\r\n // No match found or already active links defined\r\n return config;\r\n }\r\n\r\n const winnerPair = scoreList[0];\r\n winnerPair.main.isActiveOverride = true;\r\n if (winnerPair.sub) winnerPair.sub.isActiveOverride = true;\r\n\r\n return config;\r\n};\r\n\r\n/**\r\n * Check if the portal config set any active route\r\n * @param config Main navigation config\r\n * @returns True if portal set any route as active\r\n */\r\nexport const hasActivePortalRoute = (config: NavMainEntity[]): boolean => {\r\n return config.filter(nav => nav.isActive).length > 0;\r\n};\r\n\r\nexport const resetActiveStateToPortalConfig = (config: NavMainEntity[]): NavMainEntity[] => {\r\n return config.map(nav => ({\r\n ...nav,\r\n isActiveOverride: nav.isActive,\r\n flyout: nav.flyout.map(flyout => ({\r\n ...flyout,\r\n linkList: flyout.linkList.map(link => ({ ...link, isActiveOverride: link.isActive })),\r\n })),\r\n }));\r\n};\r\n\r\nconst resetOverrideConfig = (config: NavMainEntity[]): NavMainEntity[] => {\r\n return config.map(nav => ({\r\n ...nav,\r\n isActiveOverride: false,\r\n flyout: nav.flyout.map(flyout => ({\r\n ...flyout,\r\n linkList: flyout.linkList.map(link => ({ ...link, isActiveOverride: false })),\r\n })),\r\n }));\r\n};\r\n\r\n/**\r\n * Compile a list of scores based on the map mode, sorted in descending order\r\n * @param config Main Nav Config\r\n * @param compareUrl Current Browser URL or a custom URL\r\n * @param activeRouteProp Match mode\r\n * @returns A list of scored URLs if any matched\r\n */\r\nexport const compileScoreList = (\r\n config: NavMainEntity[],\r\n compareUrl: URL,\r\n activeRouteProp: ActiveRouteProp,\r\n): MainNavScoreList => {\r\n // Flag to check if the Portal set any active links or if there are any exact matches\r\n let hadAnyActiveLink = false;\r\n const scoreList: MainNavScoreList = [];\r\n\r\n config.forEach(mainNav => {\r\n if (hadAnyActiveLink || !mainNav) {\r\n return;\r\n }\r\n\r\n try {\r\n const score = compareRoutes(\r\n compareUrl,\r\n new URL(mainNav.url),\r\n activeRouteProp as 'auto' | 'exact',\r\n );\r\n if (score > 0) {\r\n if (score === Infinity) hadAnyActiveLink = true;\r\n scoreList.push({ main: mainNav, score });\r\n }\r\n } catch {\r\n // Not a valid url, continue\r\n }\r\n\r\n // Loop through flyout links 2nd level\r\n if (mainNav.flyout.length) {\r\n mainNav.flyout.forEach(flyout => {\r\n if (flyout.linkList) {\r\n flyout.linkList.forEach(linklist => {\r\n // Don't override if any link is already active\r\n if (linklist.isActive && (activeRouteProp === 'auto' || activeRouteProp === 'exact')) {\r\n hadAnyActiveLink = true;\r\n return;\r\n }\r\n\r\n try {\r\n const url = new URL(linklist.url);\r\n const score = compareRoutes(compareUrl, url, activeRouteProp as 'auto' | 'exact');\r\n if (score > 0) {\r\n if (score === Infinity) hadAnyActiveLink = true;\r\n\r\n // Push score\r\n scoreList.push({\r\n main: mainNav,\r\n sub: linklist,\r\n score,\r\n });\r\n }\r\n } catch {\r\n // Not a valid URL, continue\r\n }\r\n });\r\n }\r\n });\r\n }\r\n });\r\n\r\n return scoreList.sort((a, b) => b.score - a.score);\r\n};\r\n\r\n/**\r\n * Compare two URLs for similarity based on a match mode\r\n * @param baseUrl Browser URL\r\n * @param compareUrl Navigatgion URL\r\n * @param matchMode exact or auto matching\r\n * @returns Score\r\n */\r\nexport const compareRoutes = (\r\n baseUrl: URL,\r\n compareUrl: URL,\r\n matchMode?: 'auto' | 'exact',\r\n): number => {\r\n // One url is not defined or they don't share the same orign\r\n if (!baseUrl || !compareUrl || baseUrl.origin !== compareUrl.origin) {\r\n return 0;\r\n }\r\n\r\n // Exact match, origin and pathname are the same\r\n if (baseUrl.pathname === compareUrl.pathname) {\r\n return Infinity;\r\n }\r\n\r\n // The basepath is longer than the comparison, a match is impossible\r\n if (baseUrl.pathname.length < compareUrl.pathname.length) {\r\n return 0;\r\n }\r\n\r\n if (matchMode === 'auto') {\r\n const baseSegments = [baseUrl.origin, ...baseUrl.pathname.split('/').filter(x => !!x)];\r\n const compareSegments = [compareUrl.origin, ...compareUrl.pathname.split('/').filter(x => !!x)];\r\n\r\n const score = getSimilarityScore(baseSegments, compareSegments);\r\n\r\n // If only some segments match, but not the whole smaller array, it's not a match\r\n return Math.min(baseSegments.length, compareSegments.length) === score ? score : 0;\r\n }\r\n\r\n return 0;\r\n};\r\n\r\n/**\r\n * Check how many items in an array match\r\n * @param a Base array\r\n * @param b Compare array\r\n * @returns Score\r\n */\r\nexport const getSimilarityScore = (a: string[], b: string[]): number => {\r\n if (!a?.length || !b?.length) {\r\n return 0;\r\n }\r\n\r\n let i = 0;\r\n for (; i < Math.min(a.length, b.length); i++) {\r\n if (a[i] !== b[i]) {\r\n return 0;\r\n }\r\n }\r\n\r\n return i;\r\n};\r\n"]}
1
+ {"version":3,"file":"route.service.js","sourceRoot":"","sources":["../../../src/services/route.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { ActiveRouteProp } from '../models/general.model';\nimport { NavMainEntity, MainNavScoreList } from '../models/header.model';\n\n/**\n * Activate the current route based on the config and the match mode\n * @param config Main Navigation Config\n * @param activeRouteProp Match mode\n * @returns Modified Main Navigation Config\n */\nexport const markActiveRoute = (\n config: NavMainEntity[],\n activeRouteProp: ActiveRouteProp,\n): NavMainEntity[] => {\n // Don't highlight any route\n if (activeRouteProp === false) {\n return config;\n }\n\n // Set compare URL and check if activeRouteProp is valid\n let compareUrl: URL;\n config = resetOverrideConfig(config);\n\n if (activeRouteProp === 'auto' || activeRouteProp === 'exact') {\n // Check if an active route is already configured, set override to that and return\n if (hasActivePortalRoute(config)) {\n return resetActiveStateToPortalConfig(config);\n }\n\n compareUrl = new URL(window.location.href);\n } else {\n try {\n compareUrl = new URL(activeRouteProp, document.location.origin);\n } catch (error) {\n console.warn(\n `Active Route: ${activeRouteProp} is not a valid URL. Navigation highlighting has been disabled.`,\n );\n return config;\n }\n }\n\n const scoreList = compileScoreList(config, compareUrl, activeRouteProp);\n\n if (scoreList.length === 0) {\n // No match found or already active links defined\n return config;\n }\n\n const winnerPair = scoreList[0];\n winnerPair.main.isActiveOverride = true;\n if (winnerPair.sub) winnerPair.sub.isActiveOverride = true;\n\n return config;\n};\n\n/**\n * Check if the portal config set any active route\n * @param config Main navigation config\n * @returns True if portal set any route as active\n */\nexport const hasActivePortalRoute = (config: NavMainEntity[]): boolean => {\n return config.filter(nav => nav.isActive).length > 0;\n};\n\nexport const resetActiveStateToPortalConfig = (config: NavMainEntity[]): NavMainEntity[] => {\n return config.map(nav => ({\n ...nav,\n isActiveOverride: nav.isActive,\n flyout: nav.flyout.map(flyout => ({\n ...flyout,\n linkList: flyout.linkList.map(link => ({ ...link, isActiveOverride: link.isActive })),\n })),\n }));\n};\n\nconst resetOverrideConfig = (config: NavMainEntity[]): NavMainEntity[] => {\n return config.map(nav => ({\n ...nav,\n isActiveOverride: false,\n flyout: nav.flyout.map(flyout => ({\n ...flyout,\n linkList: flyout.linkList.map(link => ({ ...link, isActiveOverride: false })),\n })),\n }));\n};\n\n/**\n * Compile a list of scores based on the map mode, sorted in descending order\n * @param config Main Nav Config\n * @param compareUrl Current Browser URL or a custom URL\n * @param activeRouteProp Match mode\n * @returns A list of scored URLs if any matched\n */\nexport const compileScoreList = (\n config: NavMainEntity[],\n compareUrl: URL,\n activeRouteProp: ActiveRouteProp,\n): MainNavScoreList => {\n // Flag to check if the Portal set any active links or if there are any exact matches\n let hadAnyActiveLink = false;\n const scoreList: MainNavScoreList = [];\n\n config.forEach(mainNav => {\n if (hadAnyActiveLink || !mainNav) {\n return;\n }\n\n try {\n const score = compareRoutes(\n compareUrl,\n new URL(mainNav.url),\n activeRouteProp as 'auto' | 'exact',\n );\n if (score > 0) {\n if (score === Infinity) hadAnyActiveLink = true;\n scoreList.push({ main: mainNav, score });\n }\n } catch {\n // Not a valid url, continue\n }\n\n // Loop through flyout links 2nd level\n if (mainNav.flyout.length) {\n mainNav.flyout.forEach(flyout => {\n if (flyout.linkList) {\n flyout.linkList.forEach(linklist => {\n // Don't override if any link is already active\n if (linklist.isActive && (activeRouteProp === 'auto' || activeRouteProp === 'exact')) {\n hadAnyActiveLink = true;\n return;\n }\n\n try {\n const url = new URL(linklist.url);\n const score = compareRoutes(compareUrl, url, activeRouteProp as 'auto' | 'exact');\n if (score > 0) {\n if (score === Infinity) hadAnyActiveLink = true;\n\n // Push score\n scoreList.push({\n main: mainNav,\n sub: linklist,\n score,\n });\n }\n } catch {\n // Not a valid URL, continue\n }\n });\n }\n });\n }\n });\n\n return scoreList.sort((a, b) => b.score - a.score);\n};\n\n/**\n * Compare two URLs for similarity based on a match mode\n * @param baseUrl Browser URL\n * @param compareUrl Navigatgion URL\n * @param matchMode exact or auto matching\n * @returns Score\n */\nexport const compareRoutes = (\n baseUrl: URL,\n compareUrl: URL,\n matchMode?: 'auto' | 'exact',\n): number => {\n // One url is not defined or they don't share the same orign\n if (!baseUrl || !compareUrl || baseUrl.origin !== compareUrl.origin) {\n return 0;\n }\n\n // Exact match, origin and pathname are the same\n if (baseUrl.pathname === compareUrl.pathname) {\n return Infinity;\n }\n\n // The basepath is longer than the comparison, a match is impossible\n if (baseUrl.pathname.length < compareUrl.pathname.length) {\n return 0;\n }\n\n if (matchMode === 'auto') {\n const baseSegments = [baseUrl.origin, ...baseUrl.pathname.split('/').filter(x => !!x)];\n const compareSegments = [compareUrl.origin, ...compareUrl.pathname.split('/').filter(x => !!x)];\n\n const score = getSimilarityScore(baseSegments, compareSegments);\n\n // If only some segments match, but not the whole smaller array, it's not a match\n return Math.min(baseSegments.length, compareSegments.length) === score ? score : 0;\n }\n\n return 0;\n};\n\n/**\n * Check how many items in an array match\n * @param a Base array\n * @param b Compare array\n * @returns Score\n */\nexport const getSimilarityScore = (a: string[], b: string[]): number => {\n if (!a?.length || !b?.length) {\n return 0;\n }\n\n let i = 0;\n for (; i < Math.min(a.length, b.length); i++) {\n if (a[i] !== b[i]) {\n return 0;\n }\n }\n\n return i;\n};\n"]}
@@ -1,34 +1,34 @@
1
- import { state } from '../../data/store';
2
- import { coveo } from './coveo.settings';
3
- import { getSearchPageUrl } from './search.service';
4
- /**
5
- * Get suggestions from coveo
6
- * https://docs.coveo.com/en/1459/build-a-search-ui/get-query-suggestions#context-object
7
- *
8
- * @param query Search term
9
- * @returns
10
- */
11
- export const getCoveoSuggestions = async (query) => {
12
- var _a, _b;
13
- if (((_b = (_a = state.localizedConfig) === null || _a === void 0 ? void 0 : _a.header) === null || _b === void 0 ? void 0 : _b.search) === undefined)
14
- return [];
15
- const config = state.localizedConfig.header.search;
16
- const { token, organisation } = coveo.environment[state.environment];
17
- const url = `${coveo.url}?q=${query}&locale=${state.currentLanguage}&searchHub=${config.searchHubName}&pipeline=${config.searchPipelineName}&organizationId=${organisation}`;
18
- let coveoCompletions;
19
- try {
20
- const coveoResponse = await fetch(url, {
21
- method: 'GET',
22
- headers: {
23
- Authorization: `Bearer ${token}`,
24
- },
25
- });
26
- const coveoJSON = (await coveoResponse.json());
27
- coveoCompletions = coveoJSON.completions.map(completion => (Object.assign(Object.assign({}, completion), { redirectUrl: getSearchPageUrl(completion.expression) })));
28
- }
29
- catch (error) {
30
- console.error('Connection to coveo failed. Did you add "*.coveo.com" to your connect-src content security policy and tried turning off your adblocker?');
31
- }
32
- return coveoCompletions === undefined ? [] : coveoCompletions;
33
- };
34
- //# sourceMappingURL=coveo.service.js.map
1
+ import { state } from '../../data/store';
2
+ import { coveo } from './coveo.settings';
3
+ import { getSearchPageUrl } from './search.service';
4
+ /**
5
+ * Get suggestions from coveo
6
+ * https://docs.coveo.com/en/1459/build-a-search-ui/get-query-suggestions#context-object
7
+ *
8
+ * @param query Search term
9
+ * @returns
10
+ */
11
+ export const getCoveoSuggestions = async (query) => {
12
+ var _a, _b;
13
+ if (((_b = (_a = state.localizedConfig) === null || _a === void 0 ? void 0 : _a.header) === null || _b === void 0 ? void 0 : _b.search) === undefined)
14
+ return [];
15
+ const config = state.localizedConfig.header.search;
16
+ const { token, organisation } = coveo.environment[state.environment];
17
+ const url = `${coveo.url}?q=${query}&locale=${state.currentLanguage}&searchHub=${config.searchHubName}&pipeline=${config.searchPipelineName}&organizationId=${organisation}`;
18
+ let coveoCompletions;
19
+ try {
20
+ const coveoResponse = await fetch(url, {
21
+ method: 'GET',
22
+ headers: {
23
+ Authorization: `Bearer ${token}`,
24
+ },
25
+ });
26
+ const coveoJSON = (await coveoResponse.json());
27
+ coveoCompletions = coveoJSON.completions.map(completion => (Object.assign(Object.assign({}, completion), { redirectUrl: getSearchPageUrl(completion.expression) })));
28
+ }
29
+ catch (error) {
30
+ console.error('Connection to coveo failed. Did you add "*.coveo.com" to your connect-src content security policy and tried turning off your adblocker?');
31
+ }
32
+ return coveoCompletions === undefined ? [] : coveoCompletions;
33
+ };
34
+ //# sourceMappingURL=coveo.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"coveo.service.js","sourceRoot":"","sources":["../../../../src/services/search/coveo.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EAAE,KAAa,EAA8B,EAAE;;EACrF,IAAI,CAAA,MAAA,MAAA,KAAK,CAAC,eAAe,0CAAE,MAAM,0CAAE,MAAM,MAAK,SAAS;IAAE,OAAO,EAAE,CAAC;EACnE,MAAM,MAAM,GAAG,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC;EACnD,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;EACrE,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG,MAAM,KAAK,WAAW,KAAK,CAAC,eAAe,cAAc,MAAM,CAAC,aAAa,aAAa,MAAM,CAAC,kBAAkB,mBAAmB,YAAY,EAAE,CAAC;EAC7K,IAAI,gBAA+C,CAAC;EAEpD,IAAI;IACF,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;MACrC,MAAM,EAAE,KAAK;MACb,OAAO,EAAE;QACP,aAAa,EAAE,UAAU,KAAK,EAAE;OACjC;KACF,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,CAAC,MAAM,aAAa,CAAC,IAAI,EAAE,CAAkB,CAAC;IAChE,gBAAgB,GAAG,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,iCACtD,UAAU,KACb,WAAW,EAAE,gBAAgB,CAAC,UAAU,CAAC,UAAU,CAAC,IACpD,CAAC,CAAC;GACL;EAAC,OAAO,KAAK,EAAE;IACd,OAAO,CAAC,KAAK,CACX,yIAAyI,CAC1I,CAAC;GACH;EAED,OAAO,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC;AAChE,CAAC,CAAC","sourcesContent":["import { state } from '../../data/store';\r\nimport { CoveoCompletion, CoveoResponse } from '../../models/coveo.model';\r\nimport { coveo } from './coveo.settings';\r\nimport { getSearchPageUrl } from './search.service';\r\n\r\n/**\r\n * Get suggestions from coveo\r\n * https://docs.coveo.com/en/1459/build-a-search-ui/get-query-suggestions#context-object\r\n *\r\n * @param query Search term\r\n * @returns\r\n */\r\nexport const getCoveoSuggestions = async (query: string): Promise<CoveoCompletion[]> => {\r\n if (state.localizedConfig?.header?.search === undefined) return [];\r\n const config = state.localizedConfig.header.search;\r\n const { token, organisation } = coveo.environment[state.environment];\r\n const url = `${coveo.url}?q=${query}&locale=${state.currentLanguage}&searchHub=${config.searchHubName}&pipeline=${config.searchPipelineName}&organizationId=${organisation}`;\r\n let coveoCompletions: CoveoCompletion[] | undefined;\r\n\r\n try {\r\n const coveoResponse = await fetch(url, {\r\n method: 'GET',\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n },\r\n });\r\n const coveoJSON = (await coveoResponse.json()) as CoveoResponse;\r\n coveoCompletions = coveoJSON.completions.map(completion => ({\r\n ...completion,\r\n redirectUrl: getSearchPageUrl(completion.expression),\r\n }));\r\n } catch (error) {\r\n console.error(\r\n 'Connection to coveo failed. Did you add \"*.coveo.com\" to your connect-src content security policy and tried turning off your adblocker?',\r\n );\r\n }\r\n\r\n return coveoCompletions === undefined ? [] : coveoCompletions;\r\n};\r\n"]}
1
+ {"version":3,"file":"coveo.service.js","sourceRoot":"","sources":["../../../../src/services/search/coveo.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EAAE,KAAa,EAA8B,EAAE;;EACrF,IAAI,CAAA,MAAA,MAAA,KAAK,CAAC,eAAe,0CAAE,MAAM,0CAAE,MAAM,MAAK,SAAS;IAAE,OAAO,EAAE,CAAC;EACnE,MAAM,MAAM,GAAG,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC;EACnD,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;EACrE,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG,MAAM,KAAK,WAAW,KAAK,CAAC,eAAe,cAAc,MAAM,CAAC,aAAa,aAAa,MAAM,CAAC,kBAAkB,mBAAmB,YAAY,EAAE,CAAC;EAC7K,IAAI,gBAA+C,CAAC;EAEpD,IAAI;IACF,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;MACrC,MAAM,EAAE,KAAK;MACb,OAAO,EAAE;QACP,aAAa,EAAE,UAAU,KAAK,EAAE;OACjC;KACF,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,CAAC,MAAM,aAAa,CAAC,IAAI,EAAE,CAAkB,CAAC;IAChE,gBAAgB,GAAG,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,iCACtD,UAAU,KACb,WAAW,EAAE,gBAAgB,CAAC,UAAU,CAAC,UAAU,CAAC,IACpD,CAAC,CAAC;GACL;EAAC,OAAO,KAAK,EAAE;IACd,OAAO,CAAC,KAAK,CACX,yIAAyI,CAC1I,CAAC;GACH;EAED,OAAO,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC;AAChE,CAAC,CAAC","sourcesContent":["import { state } from '../../data/store';\nimport { CoveoCompletion, CoveoResponse } from '../../models/coveo.model';\nimport { coveo } from './coveo.settings';\nimport { getSearchPageUrl } from './search.service';\n\n/**\n * Get suggestions from coveo\n * https://docs.coveo.com/en/1459/build-a-search-ui/get-query-suggestions#context-object\n *\n * @param query Search term\n * @returns\n */\nexport const getCoveoSuggestions = async (query: string): Promise<CoveoCompletion[]> => {\n if (state.localizedConfig?.header?.search === undefined) return [];\n const config = state.localizedConfig.header.search;\n const { token, organisation } = coveo.environment[state.environment];\n const url = `${coveo.url}?q=${query}&locale=${state.currentLanguage}&searchHub=${config.searchHubName}&pipeline=${config.searchPipelineName}&organizationId=${organisation}`;\n let coveoCompletions: CoveoCompletion[] | undefined;\n\n try {\n const coveoResponse = await fetch(url, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n const coveoJSON = (await coveoResponse.json()) as CoveoResponse;\n coveoCompletions = coveoJSON.completions.map(completion => ({\n ...completion,\n redirectUrl: getSearchPageUrl(completion.expression),\n }));\n } catch (error) {\n console.error(\n 'Connection to coveo failed. Did you add \"*.coveo.com\" to your connect-src content security policy and tried turning off your adblocker?',\n );\n }\n\n return coveoCompletions === undefined ? [] : coveoCompletions;\n};\n"]}
@@ -1,19 +1,19 @@
1
- // Coveo constants
2
- export const coveo = {
3
- url: 'https://platform-eu.cloud.coveo.com/rest/search/v2/querySuggest',
4
- environment: {
5
- prod: {
6
- organisation: 'postchagprod6ef4sbet',
7
- token: 'xx5b629890-23b9-4fbe-b601-0e8719186969',
8
- },
9
- int01: {
10
- organisation: 'postchagnonprods5sq57qt',
11
- token: 'xx7c0e52ab-3de2-4fbd-b9a7-6ca6abd532b4',
12
- },
13
- int02: {
14
- organisation: 'postchagnonprods5sq57qt',
15
- token: 'xx7c0e52ab-3de2-4fbd-b9a7-6ca6abd532b4',
16
- },
17
- },
18
- };
19
- //# sourceMappingURL=coveo.settings.js.map
1
+ // Coveo constants
2
+ export const coveo = {
3
+ url: 'https://platform-eu.cloud.coveo.com/rest/search/v2/querySuggest',
4
+ environment: {
5
+ prod: {
6
+ organisation: 'postchagprod6ef4sbet',
7
+ token: 'xx5b629890-23b9-4fbe-b601-0e8719186969',
8
+ },
9
+ int01: {
10
+ organisation: 'postchagnonprods5sq57qt',
11
+ token: 'xx7c0e52ab-3de2-4fbd-b9a7-6ca6abd532b4',
12
+ },
13
+ int02: {
14
+ organisation: 'postchagnonprods5sq57qt',
15
+ token: 'xx7c0e52ab-3de2-4fbd-b9a7-6ca6abd532b4',
16
+ },
17
+ },
18
+ };
19
+ //# sourceMappingURL=coveo.settings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"coveo.settings.js","sourceRoot":"","sources":["../../../../src/services/search/coveo.settings.ts"],"names":[],"mappings":"AAEA,kBAAkB;AAClB,MAAM,CAAC,MAAM,KAAK,GAAiB;EACjC,GAAG,EAAE,iEAAiE;EACtE,WAAW,EAAE;IACX,IAAI,EAAE;MACJ,YAAY,EAAE,sBAAsB;MACpC,KAAK,EAAE,wCAAwC;KAChD;IACD,KAAK,EAAE;MACL,YAAY,EAAE,yBAAyB;MACvC,KAAK,EAAE,wCAAwC;KAChD;IACD,KAAK,EAAE;MACL,YAAY,EAAE,yBAAyB;MACvC,KAAK,EAAE,wCAAwC;KAChD;GACF;CACF,CAAC","sourcesContent":["import { CoveoOptions } from '../../models/coveo.model';\r\n\r\n// Coveo constants\r\nexport const coveo: CoveoOptions = {\r\n url: 'https://platform-eu.cloud.coveo.com/rest/search/v2/querySuggest',\r\n environment: {\r\n prod: {\r\n organisation: 'postchagprod6ef4sbet',\r\n token: 'xx5b629890-23b9-4fbe-b601-0e8719186969',\r\n },\r\n int01: {\r\n organisation: 'postchagnonprods5sq57qt',\r\n token: 'xx7c0e52ab-3de2-4fbd-b9a7-6ca6abd532b4',\r\n },\r\n int02: {\r\n organisation: 'postchagnonprods5sq57qt',\r\n token: 'xx7c0e52ab-3de2-4fbd-b9a7-6ca6abd532b4',\r\n },\r\n },\r\n};\r\n"]}
1
+ {"version":3,"file":"coveo.settings.js","sourceRoot":"","sources":["../../../../src/services/search/coveo.settings.ts"],"names":[],"mappings":"AAEA,kBAAkB;AAClB,MAAM,CAAC,MAAM,KAAK,GAAiB;EACjC,GAAG,EAAE,iEAAiE;EACtE,WAAW,EAAE;IACX,IAAI,EAAE;MACJ,YAAY,EAAE,sBAAsB;MACpC,KAAK,EAAE,wCAAwC;KAChD;IACD,KAAK,EAAE;MACL,YAAY,EAAE,yBAAyB;MACvC,KAAK,EAAE,wCAAwC;KAChD;IACD,KAAK,EAAE;MACL,YAAY,EAAE,yBAAyB;MACvC,KAAK,EAAE,wCAAwC;KAChD;GACF;CACF,CAAC","sourcesContent":["import { CoveoOptions } from '../../models/coveo.model';\n\n// Coveo constants\nexport const coveo: CoveoOptions = {\n url: 'https://platform-eu.cloud.coveo.com/rest/search/v2/querySuggest',\n environment: {\n prod: {\n organisation: 'postchagprod6ef4sbet',\n token: 'xx5b629890-23b9-4fbe-b601-0e8719186969',\n },\n int01: {\n organisation: 'postchagnonprods5sq57qt',\n token: 'xx7c0e52ab-3de2-4fbd-b9a7-6ca6abd532b4',\n },\n int02: {\n organisation: 'postchagnonprods5sq57qt',\n token: 'xx7c0e52ab-3de2-4fbd-b9a7-6ca6abd532b4',\n },\n },\n};\n"]}