@swisspost/internet-header 1.8.3-beta.1 → 1.9.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 (250) hide show
  1. package/dist/cjs/{klp-widget.controller-d86525e1.js → klp-widget.controller-8e2198a2.js} +8 -8
  2. package/dist/cjs/klp-widget.controller-8e2198a2.js.map +1 -0
  3. package/dist/cjs/{language.service-516d1809.js → language.service-9334ca5d.js} +7 -2
  4. package/dist/cjs/language.service-9334ca5d.js.map +1 -0
  5. package/dist/cjs/loader.cjs.js +1 -1
  6. package/dist/cjs/post-klp-login-widget.cjs.entry.js +3 -3
  7. package/dist/cjs/post-klp-login-widget.cjs.entry.js.map +1 -1
  8. package/dist/cjs/post-language-switch.cjs.entry.js +3 -3
  9. package/dist/cjs/post-language-switch.cjs.entry.js.map +1 -1
  10. package/dist/cjs/post-logo.cjs.entry.js +2 -29
  11. package/dist/cjs/post-logo.cjs.entry.js.map +1 -1
  12. package/dist/cjs/post-main-navigation.cjs.entry.js +3 -3
  13. package/dist/cjs/post-main-navigation.cjs.entry.js.map +1 -1
  14. package/dist/cjs/post-meta-navigation.cjs.entry.js +2 -2
  15. package/dist/cjs/post-meta-navigation.cjs.entry.js.map +1 -1
  16. package/dist/cjs/post-search.cjs.entry.js +2 -2
  17. package/dist/cjs/post-search.cjs.entry.js.map +1 -1
  18. package/dist/cjs/post-skiplinks.cjs.entry.js +2 -2
  19. package/dist/cjs/{store-915e0360.js → store-b99affc1.js} +2 -1
  20. package/dist/cjs/store-b99affc1.js.map +1 -0
  21. package/dist/cjs/swisspost-internet-breadcrumbs.cjs.entry.js +3 -3
  22. package/dist/cjs/swisspost-internet-breadcrumbs.cjs.entry.js.map +1 -1
  23. package/dist/cjs/swisspost-internet-footer.cjs.entry.js +20 -5
  24. package/dist/cjs/swisspost-internet-footer.cjs.entry.js.map +1 -1
  25. package/dist/cjs/swisspost-internet-header.cjs.entry.js +73 -20
  26. package/dist/cjs/swisspost-internet-header.cjs.entry.js.map +1 -1
  27. package/dist/cjs/swisspost-internet-header.cjs.js +1 -1
  28. package/dist/collection/assets/config/test-configuration.json +12 -12
  29. package/dist/collection/assets/i18n/translations.js +5 -0
  30. package/dist/collection/assets/i18n/translations.js.map +1 -1
  31. package/dist/collection/assets/js/klp-login-widget.js +7 -7
  32. package/dist/collection/components/post-internet-breadcrumbs/post-internet-breadcrumbs.css +61 -126
  33. package/dist/collection/components/post-internet-footer/post-internet-footer.css +26 -22
  34. package/dist/collection/components/post-internet-footer/post-internet-footer.js +20 -4
  35. package/dist/collection/components/post-internet-footer/post-internet-footer.js.map +1 -1
  36. package/dist/collection/components/post-internet-header/logo-animation/logo-animation.js +46 -0
  37. package/dist/collection/components/post-internet-header/logo-animation/logo-animation.js.map +1 -0
  38. package/dist/collection/components/post-internet-header/post-internet-header.css +27 -2
  39. package/dist/collection/components/post-internet-header/post-internet-header.js +13 -1
  40. package/dist/collection/components/post-internet-header/post-internet-header.js.map +1 -1
  41. package/dist/collection/components/post-klp-login-widget/post-klp-login-widget.css +23 -22
  42. package/dist/collection/components/post-language-switch/post-language-switch.css +5 -3
  43. package/dist/collection/components/post-logo/post-logo.css +6 -4
  44. package/dist/collection/components/post-logo/post-logo.js +0 -34
  45. package/dist/collection/components/post-logo/post-logo.js.map +1 -1
  46. package/dist/collection/components/post-main-navigation/post-main-navigation.css +6 -2
  47. package/dist/collection/components/post-meta-navigation/post-meta-navigation.css +15 -3
  48. package/dist/collection/components/post-search/post-search.css +6 -2
  49. package/dist/collection/data/store.js +1 -0
  50. package/dist/collection/data/store.js.map +1 -1
  51. package/dist/components/klp-widget.controller.js +7 -7
  52. package/dist/components/klp-widget.controller.js.map +1 -1
  53. package/dist/components/language.service.js +5 -0
  54. package/dist/components/language.service.js.map +1 -1
  55. package/dist/components/post-klp-login-widget2.js +1 -1
  56. package/dist/components/post-klp-login-widget2.js.map +1 -1
  57. package/dist/components/post-language-switch2.js +1 -1
  58. package/dist/components/post-language-switch2.js.map +1 -1
  59. package/dist/components/post-logo2.js +2 -31
  60. package/dist/components/post-logo2.js.map +1 -1
  61. package/dist/components/post-main-navigation2.js +1 -1
  62. package/dist/components/post-main-navigation2.js.map +1 -1
  63. package/dist/components/post-meta-navigation2.js +1 -1
  64. package/dist/components/post-meta-navigation2.js.map +1 -1
  65. package/dist/components/post-search2.js +1 -1
  66. package/dist/components/post-search2.js.map +1 -1
  67. package/dist/components/store.js +1 -0
  68. package/dist/components/store.js.map +1 -1
  69. package/dist/components/swisspost-internet-breadcrumbs.js +1 -1
  70. package/dist/components/swisspost-internet-breadcrumbs.js.map +1 -1
  71. package/dist/components/swisspost-internet-footer.js +21 -5
  72. package/dist/components/swisspost-internet-footer.js.map +1 -1
  73. package/dist/components/swisspost-internet-header.js +65 -12
  74. package/dist/components/swisspost-internet-header.js.map +1 -1
  75. package/dist/esm/{klp-widget.controller-91f5dd0b.js → klp-widget.controller-e9029567.js} +8 -8
  76. package/dist/esm/klp-widget.controller-e9029567.js.map +1 -0
  77. package/dist/esm/{language.service-faf591b3.js → language.service-bd0f3b6f.js} +7 -2
  78. package/dist/esm/language.service-bd0f3b6f.js.map +1 -0
  79. package/dist/esm/loader.js +1 -1
  80. package/dist/esm/post-klp-login-widget.entry.js +3 -3
  81. package/dist/esm/post-klp-login-widget.entry.js.map +1 -1
  82. package/dist/esm/post-language-switch.entry.js +3 -3
  83. package/dist/esm/post-language-switch.entry.js.map +1 -1
  84. package/dist/esm/post-logo.entry.js +2 -29
  85. package/dist/esm/post-logo.entry.js.map +1 -1
  86. package/dist/esm/post-main-navigation.entry.js +3 -3
  87. package/dist/esm/post-main-navigation.entry.js.map +1 -1
  88. package/dist/esm/post-meta-navigation.entry.js +2 -2
  89. package/dist/esm/post-meta-navigation.entry.js.map +1 -1
  90. package/dist/esm/post-search.entry.js +2 -2
  91. package/dist/esm/post-search.entry.js.map +1 -1
  92. package/dist/esm/post-skiplinks.entry.js +2 -2
  93. package/dist/esm/{store-79377f91.js → store-44830922.js} +2 -1
  94. package/dist/esm/store-44830922.js.map +1 -0
  95. package/dist/esm/swisspost-internet-breadcrumbs.entry.js +3 -3
  96. package/dist/esm/swisspost-internet-breadcrumbs.entry.js.map +1 -1
  97. package/dist/esm/swisspost-internet-footer.entry.js +20 -5
  98. package/dist/esm/swisspost-internet-footer.entry.js.map +1 -1
  99. package/dist/esm/swisspost-internet-header.entry.js +67 -14
  100. package/dist/esm/swisspost-internet-header.entry.js.map +1 -1
  101. package/dist/esm/swisspost-internet-header.js +1 -1
  102. package/dist/esm-es5/{klp-widget.controller-91f5dd0b.js → klp-widget.controller-e9029567.js} +2 -2
  103. package/dist/esm-es5/{klp-widget.controller-91f5dd0b.js.map → klp-widget.controller-e9029567.js.map} +1 -1
  104. package/dist/esm-es5/language.service-bd0f3b6f.js +2 -0
  105. package/dist/{swisspost-internet-header/p-3e6e0272.system.js.map → esm-es5/language.service-bd0f3b6f.js.map} +1 -1
  106. package/dist/esm-es5/loader.js +1 -1
  107. package/dist/esm-es5/loader.js.map +1 -1
  108. package/dist/esm-es5/post-klp-login-widget.entry.js +1 -1
  109. package/dist/esm-es5/post-klp-login-widget.entry.js.map +1 -1
  110. package/dist/esm-es5/post-language-switch.entry.js +1 -1
  111. package/dist/esm-es5/post-language-switch.entry.js.map +1 -1
  112. package/dist/esm-es5/post-logo.entry.js +1 -1
  113. package/dist/esm-es5/post-logo.entry.js.map +1 -1
  114. package/dist/esm-es5/post-main-navigation.entry.js +1 -1
  115. package/dist/esm-es5/post-main-navigation.entry.js.map +1 -1
  116. package/dist/esm-es5/post-meta-navigation.entry.js +1 -1
  117. package/dist/esm-es5/post-meta-navigation.entry.js.map +1 -1
  118. package/dist/esm-es5/post-search.entry.js +1 -1
  119. package/dist/esm-es5/post-search.entry.js.map +1 -1
  120. package/dist/esm-es5/post-skiplinks.entry.js +1 -1
  121. package/dist/esm-es5/{store-79377f91.js → store-44830922.js} +2 -2
  122. package/dist/esm-es5/store-44830922.js.map +1 -0
  123. package/dist/esm-es5/swisspost-internet-breadcrumbs.entry.js +2 -2
  124. package/dist/esm-es5/swisspost-internet-breadcrumbs.entry.js.map +1 -1
  125. package/dist/esm-es5/swisspost-internet-footer.entry.js +1 -1
  126. package/dist/esm-es5/swisspost-internet-footer.entry.js.map +1 -1
  127. package/dist/esm-es5/swisspost-internet-header.entry.js +1 -1
  128. package/dist/esm-es5/swisspost-internet-header.entry.js.map +1 -1
  129. package/dist/esm-es5/swisspost-internet-header.js +1 -1
  130. package/dist/esm-es5/swisspost-internet-header.js.map +1 -1
  131. package/dist/swisspost-internet-header/assets/config/test-configuration.json +12 -12
  132. package/dist/swisspost-internet-header/p-06d32a28.entry.js +7 -0
  133. package/dist/swisspost-internet-header/{p-1055564a.entry.js.map → p-06d32a28.entry.js.map} +1 -1
  134. package/dist/swisspost-internet-header/p-0dd2de97.entry.js +2 -0
  135. package/dist/swisspost-internet-header/p-0dd2de97.entry.js.map +1 -0
  136. package/dist/swisspost-internet-header/p-131078ce.system.entry.js +2 -0
  137. package/dist/swisspost-internet-header/p-131078ce.system.entry.js.map +1 -0
  138. package/dist/swisspost-internet-header/p-1ec4e0ee.system.js +2 -0
  139. package/dist/swisspost-internet-header/p-1ec4e0ee.system.js.map +1 -0
  140. package/dist/swisspost-internet-header/p-273fd39b.entry.js +2 -0
  141. package/dist/swisspost-internet-header/{p-bab5139b.entry.js.map → p-273fd39b.entry.js.map} +1 -1
  142. package/dist/swisspost-internet-header/p-3c8504b4.system.entry.js +2 -0
  143. package/dist/swisspost-internet-header/p-3c8504b4.system.entry.js.map +1 -0
  144. package/dist/swisspost-internet-header/p-4099b274.system.js +2 -0
  145. package/dist/swisspost-internet-header/p-4099b274.system.js.map +1 -0
  146. package/dist/swisspost-internet-header/{p-8eb05d18.js → p-459c3983.js} +2 -2
  147. package/dist/swisspost-internet-header/p-459c3983.js.map +1 -0
  148. package/dist/swisspost-internet-header/p-51c15273.entry.js +2 -0
  149. package/dist/swisspost-internet-header/p-51c15273.entry.js.map +1 -0
  150. package/dist/swisspost-internet-header/p-5b233b42.entry.js +2 -0
  151. package/dist/swisspost-internet-header/{p-df51fa24.entry.js.map → p-5b233b42.entry.js.map} +1 -1
  152. package/dist/swisspost-internet-header/p-5d893017.system.js +1 -1
  153. package/dist/swisspost-internet-header/p-5d893017.system.js.map +1 -1
  154. package/dist/swisspost-internet-header/{p-24aba4ed.system.js → p-6426cae8.system.js} +2 -2
  155. package/dist/swisspost-internet-header/{p-24aba4ed.system.js.map → p-6426cae8.system.js.map} +1 -1
  156. package/dist/swisspost-internet-header/p-6bb07a80.entry.js +2 -0
  157. package/dist/swisspost-internet-header/p-6bb07a80.entry.js.map +1 -0
  158. package/dist/swisspost-internet-header/{p-bedb8e58.system.entry.js → p-6f69aff4.system.entry.js} +2 -2
  159. package/dist/swisspost-internet-header/p-7bed0797.js +2 -0
  160. package/dist/swisspost-internet-header/p-7bed0797.js.map +1 -0
  161. package/dist/swisspost-internet-header/p-811b9615.entry.js +2 -0
  162. package/dist/swisspost-internet-header/{p-4ae35141.entry.js.map → p-811b9615.entry.js.map} +1 -1
  163. package/dist/swisspost-internet-header/p-84f78f40.system.entry.js +2 -0
  164. package/dist/swisspost-internet-header/{p-b8ea3c0a.system.entry.js.map → p-84f78f40.system.entry.js.map} +1 -1
  165. package/dist/swisspost-internet-header/{p-77f72b8d.js → p-8ad474a9.js} +2 -2
  166. package/dist/swisspost-internet-header/{p-77f72b8d.js.map → p-8ad474a9.js.map} +1 -1
  167. package/dist/swisspost-internet-header/p-97c90e22.system.entry.js +7 -0
  168. package/dist/swisspost-internet-header/{p-b7d03cb1.system.entry.js.map → p-97c90e22.system.entry.js.map} +1 -1
  169. package/dist/swisspost-internet-header/p-9ab24fb3.entry.js +2 -0
  170. package/dist/swisspost-internet-header/p-9ab24fb3.entry.js.map +1 -0
  171. package/dist/swisspost-internet-header/{p-ed043df2.entry.js → p-9ec1f474.entry.js} +2 -2
  172. package/dist/swisspost-internet-header/p-a366648c.system.entry.js +2 -0
  173. package/dist/swisspost-internet-header/{p-eccdad3c.system.entry.js.map → p-a366648c.system.entry.js.map} +1 -1
  174. package/dist/swisspost-internet-header/p-b33e74a6.entry.js +2 -0
  175. package/dist/swisspost-internet-header/p-b33e74a6.entry.js.map +1 -0
  176. package/dist/swisspost-internet-header/p-d6a99399.system.entry.js +2 -0
  177. package/dist/swisspost-internet-header/p-d6a99399.system.entry.js.map +1 -0
  178. package/dist/swisspost-internet-header/p-e1fa55e3.system.entry.js +2 -0
  179. package/dist/swisspost-internet-header/{p-4bd302a5.system.entry.js.map → p-e1fa55e3.system.entry.js.map} +1 -1
  180. package/dist/swisspost-internet-header/p-e2df6e93.system.entry.js +2 -0
  181. package/dist/swisspost-internet-header/p-e2df6e93.system.entry.js.map +1 -0
  182. package/dist/swisspost-internet-header/p-fed8d74d.system.entry.js +2 -0
  183. package/dist/swisspost-internet-header/p-fed8d74d.system.entry.js.map +1 -0
  184. package/dist/swisspost-internet-header/swisspost-internet-header.css +3 -1
  185. package/dist/swisspost-internet-header/swisspost-internet-header.esm.js +1 -1
  186. package/dist/swisspost-internet-header/swisspost-internet-header.esm.js.map +1 -1
  187. package/dist/types/assets/i18n/translations.d.ts +5 -0
  188. package/dist/types/components/post-internet-footer/post-internet-footer.d.ts +3 -0
  189. package/dist/types/components/post-internet-header/logo-animation/logo-animation.d.ts +1 -0
  190. package/dist/types/components/post-internet-header/post-internet-header.d.ts +4 -1
  191. package/dist/types/components/post-logo/post-logo.d.ts +0 -7
  192. package/dist/types/data/store.d.ts +2 -0
  193. package/dist/types/services/language.service.d.ts +5 -0
  194. package/package.json +8 -8
  195. package/dist/cjs/klp-widget.controller-d86525e1.js.map +0 -1
  196. package/dist/cjs/language.service-516d1809.js.map +0 -1
  197. package/dist/cjs/store-915e0360.js.map +0 -1
  198. package/dist/collection/services/config.service.spec.js +0 -274
  199. package/dist/collection/services/config.service.spec.js.map +0 -1
  200. package/dist/collection/services/route.service.spec.js +0 -109
  201. package/dist/collection/services/route.service.spec.js.map +0 -1
  202. package/dist/collection/services/search/search.service.spec.js +0 -49
  203. package/dist/collection/services/search/search.service.spec.js.map +0 -1
  204. package/dist/collection/tests/setup-tests.js +0 -14
  205. package/dist/collection/tests/setup-tests.js.map +0 -1
  206. package/dist/collection/utils/utils.spec.js +0 -11
  207. package/dist/collection/utils/utils.spec.js.map +0 -1
  208. package/dist/esm/klp-widget.controller-91f5dd0b.js.map +0 -1
  209. package/dist/esm/language.service-faf591b3.js.map +0 -1
  210. package/dist/esm/store-79377f91.js.map +0 -1
  211. package/dist/esm-es5/language.service-faf591b3.js +0 -2
  212. package/dist/esm-es5/language.service-faf591b3.js.map +0 -1
  213. package/dist/esm-es5/store-79377f91.js.map +0 -1
  214. package/dist/swisspost-internet-header/p-1055564a.entry.js +0 -7
  215. package/dist/swisspost-internet-header/p-30669cd6.entry.js +0 -2
  216. package/dist/swisspost-internet-header/p-30669cd6.entry.js.map +0 -1
  217. package/dist/swisspost-internet-header/p-31881c83.system.entry.js +0 -2
  218. package/dist/swisspost-internet-header/p-31881c83.system.entry.js.map +0 -1
  219. package/dist/swisspost-internet-header/p-36d624d3.entry.js +0 -2
  220. package/dist/swisspost-internet-header/p-36d624d3.entry.js.map +0 -1
  221. package/dist/swisspost-internet-header/p-3e6e0272.system.js +0 -2
  222. package/dist/swisspost-internet-header/p-41e08c10.system.entry.js +0 -2
  223. package/dist/swisspost-internet-header/p-41e08c10.system.entry.js.map +0 -1
  224. package/dist/swisspost-internet-header/p-4ae35141.entry.js +0 -2
  225. package/dist/swisspost-internet-header/p-4bd302a5.system.entry.js +0 -2
  226. package/dist/swisspost-internet-header/p-541c204b.entry.js +0 -2
  227. package/dist/swisspost-internet-header/p-541c204b.entry.js.map +0 -1
  228. package/dist/swisspost-internet-header/p-8078bb3c.entry.js +0 -2
  229. package/dist/swisspost-internet-header/p-8078bb3c.entry.js.map +0 -1
  230. package/dist/swisspost-internet-header/p-8d12fe0c.system.entry.js +0 -2
  231. package/dist/swisspost-internet-header/p-8d12fe0c.system.entry.js.map +0 -1
  232. package/dist/swisspost-internet-header/p-8d5f4d78.entry.js +0 -2
  233. package/dist/swisspost-internet-header/p-8d5f4d78.entry.js.map +0 -1
  234. package/dist/swisspost-internet-header/p-8eb05d18.js.map +0 -1
  235. package/dist/swisspost-internet-header/p-b6f237a1.system.entry.js +0 -2
  236. package/dist/swisspost-internet-header/p-b6f237a1.system.entry.js.map +0 -1
  237. package/dist/swisspost-internet-header/p-b7d03cb1.system.entry.js +0 -7
  238. package/dist/swisspost-internet-header/p-b8ea3c0a.system.entry.js +0 -2
  239. package/dist/swisspost-internet-header/p-bab5139b.entry.js +0 -2
  240. package/dist/swisspost-internet-header/p-df51fa24.entry.js +0 -2
  241. package/dist/swisspost-internet-header/p-e057071d.js +0 -2
  242. package/dist/swisspost-internet-header/p-e057071d.js.map +0 -1
  243. package/dist/swisspost-internet-header/p-eccdad3c.system.entry.js +0 -2
  244. package/dist/swisspost-internet-header/p-f445483f.system.entry.js +0 -2
  245. package/dist/swisspost-internet-header/p-f445483f.system.entry.js.map +0 -1
  246. package/dist/swisspost-internet-header/p-fa230c6b.system.js +0 -2
  247. package/dist/swisspost-internet-header/p-fa230c6b.system.js.map +0 -1
  248. package/dist/types/tests/setup-tests.d.ts +0 -0
  249. /package/dist/swisspost-internet-header/{p-bedb8e58.system.entry.js.map → p-6f69aff4.system.entry.js.map} +0 -0
  250. /package/dist/swisspost-internet-header/{p-ed043df2.entry.js.map → p-9ec1f474.entry.js.map} +0 -0
@@ -0,0 +1,2 @@
1
+ import{h as t,r as e,H as r}from"./p-8e0a4d18.js";import{s as o}from"./p-459c3983.js";import{S as l}from"./p-b762fba9.js";import{t as i}from"./p-7bed0797.js";const n=e=>t("div",{class:"pre-footer"},t("div",{class:"block-custom container"},t("h3",null,e.block.title),t("ul",{class:"no-list box link-list"},e.block.links&&e.block.links.map((e=>t("li",{key:e.url},t("a",{class:"flyout-link",href:e.url,target:e.target},e.text)))))));const a=e=>t("div",{class:"block-list"},t("h3",null,e.block.title),t("ul",{class:"no-list box link-list"},e.block.links&&e.block.links.map((e=>t("li",{key:e.url},t("a",{class:"flyout-link",href:e.url,target:e.target},e.text))))));const g=e=>t("div",{class:"block-socials"},t("h3",null,e.content.title),t("ul",{class:"no-list socials"},e.content.links.map((e=>t("li",{key:e.url},t("a",{href:e.url,target:e.target},t("span",{class:"visually-hidden"},e.name),t("svg",{"aria-hidden":"true"},t("use",{href:`#${e.icon}`}))))))));const s=e=>t("div",{class:"block-address"},t("h3",null,e.block.title),e.block.content&&e.block.content.filter((t=>t.address)).map((e=>t("address",{class:"vcard",key:e.address},t("span",{class:"adr",innerHTML:e.address})))),e.block.content&&e.block.content.filter((t=>t.links&&t.links.length)).map((e=>t(g,{key:e.name,content:e}))));const f=t=>t.replace(/<[^>]*>?/gm,"");const b=()=>{if(typeof window["unbluLSLoad"]==="function"){window["unbluLSLoad"]()}else{console.error('swisspost-internet-footer: The function "unbluLSLoad" could not be called because it is not available in the global scope. Did you include the unblu live chat script on your page?')}};const d=e=>t("button",{class:"hours btn btn-link",id:"liveSupport",type:"button",onClick:b,innerHTML:f(e.hours)});const m=e=>t("div",{class:"block-contact"},t("h3",null,e.block.title),e.block.content&&e.block.content.map(((r,o)=>{const l=o===e.block.content.length-1&&r.text==="Live Support";if(l&&!e.liveSupportEnabled){return null}return t("div",{class:"content-row",key:r.name},r.number?t("p",{class:"number"},r.number):null,r.text?t("p",{class:"text"},r.text):null,r.hours&&l&&t(d,{hours:r.hours}),r.hours&&!l&&t("p",{class:"hours",innerHTML:f(r.hours)}),r.describe?t("p",{class:"describe"},r.describe):null)})));const u='/*!\n * Bootstrap Utilities v5.1.3 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n\n * The MIT License (MIT)\n\n * Copyright (c) 2011-2020 Twitter, Inc.\n * Copyright (c) 2011-2020 The Bootstrap Authors\n\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the "Software"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */:root{--bs-breakpoint-xs:0;--bs-breakpoint-sm:400px;--bs-breakpoint-rg:600px;--bs-breakpoint-md:780px;--bs-breakpoint-lg:1024px;--bs-breakpoint-xl:1280px;--bs-breakpoint-xxl:1441px}.row{--bs-gutter-x:30px;--bs-gutter-y:0;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-0.5 * var(--bs-gutter-x));margin-left:calc(-0.5 * var(--bs-gutter-x))}.row>*{-ms-flex-negative:0;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * 0.5);padding-left:calc(var(--bs-gutter-x) * 0.5);margin-top:var(--bs-gutter-y)}.col{-ms-flex:1 0 0%;flex:1 0 0%}.row-cols-auto>*{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.row-cols-1>*{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.row-cols-2>*{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.row-cols-3>*{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.row-cols-5>*{-ms-flex:0 0 auto;flex:0 0 auto;width:20%}.row-cols-6>*{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.33333333%}.col-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.66666667%}.col-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.col-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.33333333%}.col-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.66666667%}.col-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.col-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.33333333%}.col-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.66666667%}.col-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.col-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.33333333%}.col-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.66666667%}.col-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width: 400px){.col-sm{-ms-flex:1 0 0%;flex:1 0 0%}.row-cols-sm-auto>*{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.row-cols-sm-1>*{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.row-cols-sm-2>*{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.row-cols-sm-3>*{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.row-cols-sm-5>*{-ms-flex:0 0 auto;flex:0 0 auto;width:20%}.row-cols-sm-6>*{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-sm-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.33333333%}.col-sm-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.66666667%}.col-sm-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.col-sm-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.33333333%}.col-sm-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.66666667%}.col-sm-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.col-sm-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.33333333%}.col-sm-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.66666667%}.col-sm-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.col-sm-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.33333333%}.col-sm-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.66666667%}.col-sm-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width: 600px){.col-rg{-ms-flex:1 0 0%;flex:1 0 0%}.row-cols-rg-auto>*{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.row-cols-rg-1>*{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.row-cols-rg-2>*{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.row-cols-rg-3>*{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.row-cols-rg-4>*{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.row-cols-rg-5>*{-ms-flex:0 0 auto;flex:0 0 auto;width:20%}.row-cols-rg-6>*{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.col-rg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-rg-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.33333333%}.col-rg-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.66666667%}.col-rg-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.col-rg-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.33333333%}.col-rg-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.66666667%}.col-rg-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.col-rg-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.33333333%}.col-rg-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.66666667%}.col-rg-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.col-rg-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.33333333%}.col-rg-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.66666667%}.col-rg-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.offset-rg-0{margin-left:0}.offset-rg-1{margin-left:8.33333333%}.offset-rg-2{margin-left:16.66666667%}.offset-rg-3{margin-left:25%}.offset-rg-4{margin-left:33.33333333%}.offset-rg-5{margin-left:41.66666667%}.offset-rg-6{margin-left:50%}.offset-rg-7{margin-left:58.33333333%}.offset-rg-8{margin-left:66.66666667%}.offset-rg-9{margin-left:75%}.offset-rg-10{margin-left:83.33333333%}.offset-rg-11{margin-left:91.66666667%}.g-rg-0,.gx-rg-0{--bs-gutter-x:0}.g-rg-0,.gy-rg-0{--bs-gutter-y:0}.g-rg-1,.gx-rg-1{--bs-gutter-x:0.25rem}.g-rg-1,.gy-rg-1{--bs-gutter-y:0.25rem}.g-rg-2,.gx-rg-2{--bs-gutter-x:0.5rem}.g-rg-2,.gy-rg-2{--bs-gutter-y:0.5rem}.g-rg-3,.gx-rg-3{--bs-gutter-x:1rem}.g-rg-3,.gy-rg-3{--bs-gutter-y:1rem}.g-rg-4,.gx-rg-4{--bs-gutter-x:1.5rem}.g-rg-4,.gy-rg-4{--bs-gutter-y:1.5rem}.g-rg-5,.gx-rg-5{--bs-gutter-x:3rem}.g-rg-5,.gy-rg-5{--bs-gutter-y:3rem}}@media (min-width: 780px){.col-md{-ms-flex:1 0 0%;flex:1 0 0%}.row-cols-md-auto>*{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.row-cols-md-1>*{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.row-cols-md-2>*{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.row-cols-md-3>*{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.row-cols-md-5>*{-ms-flex:0 0 auto;flex:0 0 auto;width:20%}.row-cols-md-6>*{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-md-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.33333333%}.col-md-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.66666667%}.col-md-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.col-md-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.33333333%}.col-md-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.66666667%}.col-md-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.col-md-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.33333333%}.col-md-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.66666667%}.col-md-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.col-md-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.33333333%}.col-md-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.66666667%}.col-md-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width: 1024px){.col-lg{-ms-flex:1 0 0%;flex:1 0 0%}.row-cols-lg-auto>*{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.row-cols-lg-1>*{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.row-cols-lg-2>*{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.row-cols-lg-3>*{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.row-cols-lg-5>*{-ms-flex:0 0 auto;flex:0 0 auto;width:20%}.row-cols-lg-6>*{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-lg-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.33333333%}.col-lg-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.66666667%}.col-lg-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.col-lg-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.33333333%}.col-lg-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.66666667%}.col-lg-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.col-lg-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.33333333%}.col-lg-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.66666667%}.col-lg-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.col-lg-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.33333333%}.col-lg-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.66666667%}.col-lg-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width: 1280px){.col-xl{-ms-flex:1 0 0%;flex:1 0 0%}.row-cols-xl-auto>*{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.row-cols-xl-1>*{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.row-cols-xl-2>*{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.row-cols-xl-3>*{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.row-cols-xl-5>*{-ms-flex:0 0 auto;flex:0 0 auto;width:20%}.row-cols-xl-6>*{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-xl-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.33333333%}.col-xl-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.66666667%}.col-xl-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.col-xl-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.33333333%}.col-xl-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.66666667%}.col-xl-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.col-xl-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.33333333%}.col-xl-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.66666667%}.col-xl-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.col-xl-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.33333333%}.col-xl-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.66666667%}.col-xl-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width: 1441px){.col-xxl{-ms-flex:1 0 0%;flex:1 0 0%}.row-cols-xxl-auto>*{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.row-cols-xxl-1>*{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.row-cols-xxl-2>*{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.row-cols-xxl-3>*{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.row-cols-xxl-5>*{-ms-flex:0 0 auto;flex:0 0 auto;width:20%}.row-cols-xxl-6>*{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-xxl-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.33333333%}.col-xxl-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.66666667%}.col-xxl-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.col-xxl-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.33333333%}.col-xxl-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.66666667%}.col-xxl-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.col-xxl-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.33333333%}.col-xxl-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.66666667%}.col-xxl-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.col-xxl-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.33333333%}.col-xxl-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.66666667%}.col-xxl-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.container,.container-fluid,.container-xs{--bs-gutter-x:30px;--bs-gutter-y:0;width:100%;padding-right:calc(var(--bs-gutter-x) * 0.5);padding-left:calc(var(--bs-gutter-x) * 0.5);margin-right:auto;margin-left:auto}.container{max-width:1440px}.vertical-gutters{margin-bottom:-30px}.vertical-gutters>.col,.vertical-gutters>[class*=col-]{padding-bottom:30px}.row.border-gutters{margin-right:-1px;margin-bottom:-1px;margin-left:0}.row.border-gutters>.col,.row.border-gutters>[class*=col-]{padding-right:1px;padding-bottom:1px;padding-left:0}.container{padding-right:12px;padding-left:12px}.container-reset{margin-right:-12px;margin-left:-12px}.container-reset-left{margin-left:-12px}.container-reset-right{margin-right:-12px}@media (max-width: 399.98px){.container-fluid-xs{padding-right:1rem;padding-left:1rem}}@media (min-width: 400px){.container{padding-right:16px;padding-left:16px}}@media (min-width: 400px){.container-reset{margin-right:-16px;margin-left:-16px}}@media (min-width: 400px){.container-reset-left{margin-left:-16px}}@media (min-width: 400px){.container-reset-right{margin-right:-16px}}@media (min-width: 400px) and (max-width: 599.98px){.container-fluid-sm{padding-right:1rem;padding-left:1rem}}@media (min-width: 600px){.container{padding-right:32px;padding-left:32px}}@media (min-width: 600px){.container-reset{margin-right:-32px;margin-left:-32px}}@media (min-width: 600px){.container-reset-left{margin-left:-32px}}@media (min-width: 600px){.container-reset-right{margin-right:-32px}}@media (min-width: 600px) and (max-width: 779.98px){.container-fluid-rg{padding-right:1rem;padding-left:1rem}}@media (min-width: 780px) and (max-width: 1023.98px){.container-fluid-md{padding-right:1rem;padding-left:1rem}}@media (min-width: 1024px){.container{padding-right:40px;padding-left:40px}}@media (min-width: 1024px){.container-reset{margin-right:-40px;margin-left:-40px}}@media (min-width: 1024px){.container-reset-left{margin-left:-40px}}@media (min-width: 1024px){.container-reset-right{margin-right:-40px}}@media (min-width: 1024px) and (max-width: 1279.98px){.container-fluid-lg{padding-right:1rem;padding-left:1rem}}@media (min-width: 1280px){.container{padding-right:128px;padding-left:128px}}@media (min-width: 1280px){.container-reset{margin-right:-128px;margin-left:-128px}}@media (min-width: 1280px){.container-reset-left{margin-left:-128px}}@media (min-width: 1280px){.container-reset-right{margin-right:-128px}}@media (min-width: 1280px) and (max-width: 1440.98px){.container-fluid-xl{padding-right:1rem;padding-left:1rem}}@media (min-width: 1441px){.container-fluid-xxl{padding-right:1rem;padding-left:1rem}}/*!\n * Copyright 2021 by Swiss Post, Information Technology\n */.btn-default,.btn-secondary{border:2px solid var(--post-gray-60)}.btn-default:focus,.btn-secondary:focus,.btn-default:not(:disabled):hover,.btn-secondary:not(:disabled):hover,.pretend-hover.btn-default,.pretend-hover.btn-secondary{border-color:var(--post-contrast-color)}:is(.bg-dark,.bg-primary,.bg-black,.bg-danger,.bg-nightblue,.bg-nightblue-bright,.bg-petrol,.bg-coral,.bg-olive,.bg-purple,.bg-purple-bright,.bg-aubergine,.bg-aubergine-bright) .btn-default,:is(.bg-dark,.bg-primary,.bg-black,.bg-danger,.bg-nightblue,.bg-nightblue-bright,.bg-petrol,.bg-coral,.bg-olive,.bg-purple,.bg-purple-bright,.bg-aubergine,.bg-aubergine-bright) .btn-secondary{border-color:var(--post-contrast-color)}:is(.bg-dark,.bg-primary,.bg-black,.bg-danger,.bg-nightblue,.bg-nightblue-bright,.bg-petrol,.bg-coral,.bg-olive,.bg-purple,.bg-purple-bright,.bg-aubergine,.bg-aubergine-bright) .btn-default:focus,:is(.bg-dark,.bg-primary,.bg-black,.bg-danger,.bg-nightblue,.bg-nightblue-bright,.bg-petrol,.bg-coral,.bg-olive,.bg-purple,.bg-purple-bright,.bg-aubergine,.bg-aubergine-bright) .btn-secondary:focus,:is(.bg-dark,.bg-primary,.bg-black,.bg-danger,.bg-nightblue,.bg-nightblue-bright,.bg-petrol,.bg-coral,.bg-olive,.bg-purple,.bg-purple-bright,.bg-aubergine,.bg-aubergine-bright) .btn-default:not(:disabled):hover,:is(.bg-dark,.bg-primary,.bg-black,.bg-danger,.bg-nightblue,.bg-nightblue-bright,.bg-petrol,.bg-coral,.bg-olive,.bg-purple,.bg-purple-bright,.bg-aubergine,.bg-aubergine-bright) .btn-secondary:not(:disabled):hover,:is(.bg-dark,.bg-primary,.bg-black,.bg-danger,.bg-nightblue,.bg-nightblue-bright,.bg-petrol,.bg-coral,.bg-olive,.bg-purple,.bg-purple-bright,.bg-aubergine,.bg-aubergine-bright) .pretend-hover.btn-default,:is(.bg-dark,.bg-primary,.bg-black,.bg-danger,.bg-nightblue,.bg-nightblue-bright,.bg-petrol,.bg-coral,.bg-olive,.bg-purple,.bg-purple-bright,.bg-aubergine,.bg-aubergine-bright) .pretend-hover.btn-secondary{border-color:var(--post-gray-40)}.btn-default:disabled,.btn-secondary:disabled{border-color:var(--post-gray-40);color:var(--post-gray-60)}.btn-default:focus,.btn-secondary:focus,.btn-link:focus,.btn-tertiary:focus,.btn-default:not(:disabled):hover,.btn-secondary:not(:disabled):hover,.btn-link:not(:disabled):hover,.btn-tertiary:not(:disabled):hover,.pretend-hover.btn-default,.pretend-hover.btn-secondary,.pretend-hover.btn-link,.pretend-hover.btn-tertiary{color:var(--post-contrast-color)}:is(.bg-dark,.bg-primary,.bg-black,.bg-danger,.bg-nightblue,.bg-nightblue-bright,.bg-petrol,.bg-coral,.bg-olive,.bg-purple,.bg-purple-bright,.bg-aubergine,.bg-aubergine-bright) .btn-default .pi,:is(.bg-dark,.bg-primary,.bg-black,.bg-danger,.bg-nightblue,.bg-nightblue-bright,.bg-petrol,.bg-coral,.bg-olive,.bg-purple,.bg-purple-bright,.bg-aubergine,.bg-aubergine-bright) .btn-secondary .pi,:is(.bg-dark,.bg-primary,.bg-black,.bg-danger,.bg-nightblue,.bg-nightblue-bright,.bg-petrol,.bg-coral,.bg-olive,.bg-purple,.bg-purple-bright,.bg-aubergine,.bg-aubergine-bright) .btn-link .pi,:is(.bg-dark,.bg-primary,.bg-black,.bg-danger,.bg-nightblue,.bg-nightblue-bright,.bg-petrol,.bg-coral,.bg-olive,.bg-purple,.bg-purple-bright,.bg-aubergine,.bg-aubergine-bright) .btn-tertiary .pi{-webkit-filter:invert(1);filter:invert(1)}.btn{min-height:3rem;font-size:1rem;gap:0.625rem;outline:none;outline-offset:2px;display:-ms-inline-flexbox;display:inline-flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;max-width:100%;overflow:hidden;-webkit-transition:opacity 250ms, border-color 250ms, background-color 250ms, color 250ms;transition:opacity 250ms, border-color 250ms, background-color 250ms, color 250ms;border-width:2px;border-style:solid;border-radius:4px;background-color:transparent;-webkit-box-shadow:none;box-shadow:none;color:var(--post-gray-80);font-family:inherit;font-weight:400;text-decoration:none !important;white-space:nowrap}.btn:where(:not(.btn-link,.btn-tertiary)){padding:0 1rem}.btn>.pi{width:1.25rem;height:1.25rem}.btn:is(:focus-visible,:focus-within,.pretend-focus){outline:2px solid var(--post-contrast-color)}.btn-primary{border-color:transparent;background-color:var(--post-gray-80);color:var(--post-contrast-color-inverted)}.btn-primary:focus,.btn-primary:not(:disabled):hover,.btn-primary.pretend-hover{background-color:var(--post-contrast-color);color:var(--post-contrast-color-inverted)}:is(.bg-dark,.bg-primary,.bg-black,.bg-danger,.bg-nightblue,.bg-nightblue-bright,.bg-petrol,.bg-coral,.bg-olive,.bg-purple,.bg-purple-bright,.bg-aubergine,.bg-aubergine-bright) .btn-primary{background-color:var(--post-contrast-color);color:var(--post-gray-10)}:is(.bg-dark,.bg-primary,.bg-black,.bg-danger,.bg-nightblue,.bg-nightblue-bright,.bg-petrol,.bg-coral,.bg-olive,.bg-purple,.bg-purple-bright,.bg-aubergine,.bg-aubergine-bright) .btn-primary:focus,:is(.bg-dark,.bg-primary,.bg-black,.bg-danger,.bg-nightblue,.bg-nightblue-bright,.bg-petrol,.bg-coral,.bg-olive,.bg-purple,.bg-purple-bright,.bg-aubergine,.bg-aubergine-bright) .btn-primary:not(:disabled):hover,:is(.bg-dark,.bg-primary,.bg-black,.bg-danger,.bg-nightblue,.bg-nightblue-bright,.bg-petrol,.bg-coral,.bg-olive,.bg-purple,.bg-purple-bright,.bg-aubergine,.bg-aubergine-bright) .btn-primary.pretend-hover{background-color:var(--post-gray-80)}:is(.bg-dark,.bg-primary,.bg-black,.bg-danger,.bg-nightblue,.bg-nightblue-bright,.bg-petrol,.bg-coral,.bg-olive,.bg-purple,.bg-purple-bright,.bg-aubergine,.bg-aubergine-bright) .btn-primary:disabled{color:var(--post-gray-80)}:is(.bg-dark,.bg-primary,.bg-black,.bg-danger,.bg-nightblue,.bg-nightblue-bright,.bg-petrol,.bg-coral,.bg-olive,.bg-purple,.bg-purple-bright,.bg-aubergine,.bg-aubergine-bright) .btn-primary .pi{-webkit-filter:invert(0);filter:invert(0)}@media (forced-colors: active), (-ms-high-contrast: active), (-ms-high-contrast: white-on-black){.btn-primary{border-color:var(--post-contrast-color);background-color:ButtonFace}.btn-primary:not(:disabled,.disabled):hover,.btn-primary:not(:disabled,.disabled):focus-visible{border-color:highlight}.btn-primary .pi{-webkit-filter:invert(1) !important;filter:invert(1) !important}}.btn-primary:disabled{background-color:var(--post-gray-40)}.btn-primary .pi{-webkit-filter:invert(1);filter:invert(1);forced-color-adjust:none}.btn-link,.btn-tertiary{border:0;padding-inline:0.25rem}.btn-link:disabled,.btn-tertiary:disabled{color:var(--post-gray-60)}@media (forced-colors: active), (-ms-high-contrast: active), (-ms-high-contrast: white-on-black){.btn-link,.btn-tertiary{color:linktext;text-decoration:underline !important}}.btn-icon{min-width:3rem;padding-right:0.75rem;padding-left:0.75rem}.btn-icon.btn-sm{min-width:2rem;padding-right:0.375rem;padding-left:0.375rem}.btn-icon.btn-rg{min-width:2.5rem;padding-right:0.5625rem;padding-left:0.5625rem}.btn-icon.btn-lg{min-width:3.5rem;padding-right:0.9375rem;padding-left:0.9375rem}.btn-animated:not(.btn-link,.btn-tertiary)::after{content:"";position:absolute;right:0.5rem;width:0.625em;height:0.625em;-webkit-transform:rotateZ(315deg) translate(-2px, -2px);transform:rotateZ(315deg) translate(-2px, -2px);-webkit-transform-origin:center center;transform-origin:center center;-webkit-transition:opacity 250ms, -webkit-transform 250ms;transition:opacity 250ms, -webkit-transform 250ms;transition:opacity 250ms, transform 250ms;transition:opacity 250ms, transform 250ms, -webkit-transform 250ms;border-right:2px solid currentColor;border-bottom:2px solid currentColor;opacity:0}.btn-animated:not(.btn-link,.btn-tertiary).btn-sm::after{right:0.25rem}.btn-animated:not(.btn-link,.btn-tertiary).btn-rg::after{right:0.375rem}.btn-animated:not(.btn-link,.btn-tertiary).btn-lg::after{right:0.625rem}.btn-animated:not(.btn-link,.btn-tertiary)>span{-webkit-transition:-webkit-transform 250ms;transition:-webkit-transform 250ms;transition:transform 250ms;transition:transform 250ms, -webkit-transform 250ms}@media (prefers-reduced-motion: no-preference){.btn-animated:not(.btn-link,.btn-tertiary):focus>span,.btn-animated:not(.btn-link,.btn-tertiary):not(:disabled):hover>span,.btn-animated:not(.btn-link,.btn-tertiary).pretend-hover>span{-webkit-transform:translateX(-0.5rem);transform:translateX(-0.5rem)}.btn-animated:not(.btn-link,.btn-tertiary):focus.btn-sm>span,.btn-animated:not(.btn-link,.btn-tertiary):not(:disabled):hover.btn-sm>span,.btn-animated:not(.btn-link,.btn-tertiary).pretend-hover.btn-sm>span{-webkit-transform:translateX(-0.5rem);transform:translateX(-0.5rem)}.btn-animated:not(.btn-link,.btn-tertiary):focus.btn-rg>span,.btn-animated:not(.btn-link,.btn-tertiary):not(:disabled):hover.btn-rg>span,.btn-animated:not(.btn-link,.btn-tertiary).pretend-hover.btn-rg>span{-webkit-transform:translateX(-0.5rem);transform:translateX(-0.5rem)}.btn-animated:not(.btn-link,.btn-tertiary):focus.btn-lg>span,.btn-animated:not(.btn-link,.btn-tertiary):not(:disabled):hover.btn-lg>span,.btn-animated:not(.btn-link,.btn-tertiary).pretend-hover.btn-lg>span{-webkit-transform:translateX(-0.5rem);transform:translateX(-0.5rem)}.btn-animated:not(.btn-link,.btn-tertiary):focus::after,.btn-animated:not(.btn-link,.btn-tertiary):not(:disabled):hover::after,.btn-animated:not(.btn-link,.btn-tertiary).pretend-hover::after{-webkit-transform:rotateZ(315deg) translate(0, 0);transform:rotateZ(315deg) translate(0, 0);opacity:1}.btn-animated:not(.btn-link,.btn-tertiary)>span{-webkit-transform:translateX(0);transform:translateX(0)}}.btn-sm{min-height:2rem;font-size:0.75rem;gap:0.375rem}.btn-sm:where(:not(.btn-link,.btn-tertiary)){padding:0 0.75rem}.btn-sm>.pi{width:1rem;height:1rem}.btn-rg{min-height:2.5rem;font-size:0.875rem;gap:0.5rem}.btn-rg:where(:not(.btn-link,.btn-tertiary)){padding:0 0.875rem}.btn-rg>.pi{width:1.125rem;height:1.125rem}.btn-lg{min-height:3.5rem;font-size:1.125rem;gap:0.75rem}.btn-lg:where(:not(.btn-link,.btn-tertiary)){padding:0 1.125rem}.btn-lg>.pi{width:1.375rem;height:1.375rem}.btn-nightblue{border-color:transparent;background-color:#004976;color:#fff}.btn-nightblue:focus,.btn-nightblue:not(:disabled):hover,.btn-nightblue.pretend-hover{background-color:#002943;color:#fff}.btn-nightblue-bright{border-color:transparent;background-color:#0076a8;color:#fff}.btn-nightblue-bright:focus,.btn-nightblue-bright:not(:disabled):hover,.btn-nightblue-bright.pretend-hover{background-color:#005275;color:#fff}.btn-petrol{border-color:transparent;background-color:#006d68;color:#fff}.btn-petrol:focus,.btn-petrol:not(:disabled):hover,.btn-petrol.pretend-hover{background-color:#003a37;color:#fff}.btn-petrol-bright{border-color:transparent;background-color:#00968f;color:#000}.btn-petrol-bright:focus,.btn-petrol-bright:not(:disabled):hover,.btn-petrol-bright.pretend-hover{background-color:#00635e;color:#fff}.btn-coral{border-color:transparent;background-color:#9e2a2f;color:#fff}.btn-coral:focus,.btn-coral:not(:disabled):hover,.btn-coral.pretend-hover{background-color:#761f23;color:#fff}.btn-coral-bright{border-color:transparent;background-color:#e03c31;color:#000}.btn-coral-bright:focus,.btn-coral-bright:not(:disabled):hover,.btn-coral-bright.pretend-hover{background-color:#c1271d;color:#fff}.btn-olive{border-color:transparent;background-color:#716135;color:#fff}.btn-olive:focus,.btn-olive:not(:disabled):hover,.btn-olive.pretend-hover{background-color:#4e4325;color:#fff}.btn-olive-bright{border-color:transparent;background-color:#aa9d2e;color:#000}.btn-olive-bright:focus,.btn-olive-bright:not(:disabled):hover,.btn-olive-bright.pretend-hover{background-color:#827823;color:#000}.btn-purple{border-color:transparent;background-color:#80276c;color:#fff}.btn-purple:focus,.btn-purple:not(:disabled):hover,.btn-purple.pretend-hover{background-color:#591b4b;color:#fff}.btn-purple-bright{border-color:transparent;background-color:#c5299b;color:#fff}.btn-purple-bright:focus,.btn-purple-bright:not(:disabled):hover,.btn-purple-bright.pretend-hover{background-color:#9b207a;color:#fff}.btn-aubergine{border-color:transparent;background-color:#523178;color:#fff}.btn-aubergine:focus,.btn-aubergine:not(:disabled):hover,.btn-aubergine.pretend-hover{background-color:#392254;color:#fff}.btn-aubergine-bright{border-color:transparent;background-color:#7566a0;color:#fff}.btn-aubergine-bright:focus,.btn-aubergine-bright:not(:disabled):hover,.btn-aubergine-bright.pretend-hover{background-color:#5e5182;color:#fff}.btn-success{border-color:transparent;background-color:#2c911c;color:#000}.btn-success:focus,.btn-success:not(:disabled):hover,.btn-success.pretend-hover{background-color:#1f6614;color:#fff}.btn-info{border-color:transparent;background-color:#cce4ee;color:#000}.btn-info:focus,.btn-info:not(:disabled):hover,.btn-info.pretend-hover{background-color:#a6d0e1;color:#000}.btn-warning{border-color:transparent;background-color:#f49e00;color:#000}.btn-warning:focus,.btn-warning:not(:disabled):hover,.btn-warning.pretend-hover{background-color:#c17d00;color:#000}.btn-danger{border-color:transparent;background-color:#a51728;color:#fff}.btn-danger:focus,.btn-danger:not(:disabled):hover,.btn-danger.pretend-hover{background-color:#78111d;color:#fff}@font-face{font-display:swap;font-family:"Frutiger Neue For Post";font-weight:700;src:url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-Bold.woff2") format("woff2"), url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-Bold.woff") format("woff")}@font-face{font-display:swap;font-family:"Frutiger Neue For Post";font-weight:700;font-style:italic;src:url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-BdIt.woff2") format("woff2"), url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-BdIt.woff") format("woff")}@font-face{font-display:swap;font-family:"Frutiger Neue For Post";font-weight:400;src:url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-Rg.woff2") format("woff2"), url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-Rg.woff") format("woff")}@font-face{font-display:swap;font-family:"Frutiger Neue For Post";font-weight:400;font-style:italic;src:url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-It.woff2") format("woff2"), url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-It.woff") format("woff")}@font-face{font-display:swap;font-family:"Frutiger Neue For Post";font-weight:300;src:url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-Lt.woff2") format("woff2"), url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-Lt.woff") format("woff")}@font-face{font-display:swap;font-family:"Frutiger Neue For Post";font-weight:300;font-style:italic;src:url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-LtIt.woff2") format("woff2"), url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-LtIt.woff") format("woff")}.visually-hidden{position:absolute;width:1px;height:1px;border:0;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0)}.btn-blank{background-color:transparent;border:none;border-radius:0;padding:0}.nav-link{outline:none;outline-offset:2px;text-decoration:none;color:rgba(0, 0, 0, 0.8);-webkit-transition:color 200ms;transition:color 200ms;background-color:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;margin:0;cursor:pointer;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:0.5rem}.nav-link:is(:focus-visible,:focus-within,.pretend-focus){outline:2px solid var(--post-contrast-color)}.nav-link:hover,.nav-link:focus{color:black}.nav-link:focus-visible{z-index:1;position:relative}.nav-link>svg{width:1.4em;height:1.4em;-ms-flex-negative:0;flex-shrink:0}.nav-link>span{-ms-flex-negative:1;flex-shrink:1}.no-list{list-style:none;padding-left:0;margin-top:0;margin-bottom:0}*,:host,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}:host{font-family:"Frutiger Neue For Post", system-ui, sans-serif}button{font:inherit;padding:0}a,button{border-radius:4px;outline:none;outline-offset:2px;}a:is(:focus-visible,:focus-within,.pretend-focus),button:is(:focus-visible,:focus-within,.pretend-focus){outline:2px solid var(--post-contrast-color);border-radius:4px}img,svg{max-width:100%;max-height:100%}@media (forced-colors: active){svg{color:white}}.box>*:first-child{margin-top:0}.box>*:last-child{margin-bottom:0}.mirrored{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.bold{font-weight:700}.light{font-weight:300}.d-flex{display:-ms-flexbox;display:flex}.d-inline-flex{display:-ms-inline-flexbox;display:inline-flex}.align-items-center{-ms-flex-align:center;align-items:center}@media (min-width: 1441px){.wide-container{margin:0 auto;max-width:1440px}}@media (max-width: 599.98px){.container{padding-right:16px;padding-left:16px}}@media (min-width: 600px) and (max-width: 1023.98px){.container{padding-right:32px;padding-left:32px}}@media (min-width: 1024px){.container{padding-right:40px;padding-left:40px}}@media (max-width: -0.02px){.hidden-xs{display:none}}@media (max-width: 399.98px){.hidden-sm{display:none}}@media (max-width: 599.98px){.hidden-rg{display:none}}@media (max-width: 779.98px){.hidden-md{display:none}}@media (max-width: 1023.98px){.hidden-lg{display:none}}@media (max-width: 1279.98px){.hidden-xl{display:none}}@media (max-width: 1440.98px){.hidden-xxl{display:none}}:host{display:block}h3{font-size:inherit;margin-top:0}.btn.btn-link{padding-left:0;padding-right:0}.btn.btn-link:hover{cursor:pointer}.post-internet-footer{font-size:1rem;font-weight:300;border-top:2px solid hsl(0, 0%, 90%)}.pre-footer{padding-top:2rem;padding-bottom:2rem;border-bottom:2px solid hsl(0, 0%, 90%)}.pre-footer .block-custom,.pre-footer .link-list{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:1rem 1.5rem}.pre-footer h3,.pre-footer .link-list li{margin:0}.footer-container{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:3.5rem 2rem;margin-top:3.5rem;margin-bottom:3.5rem}@media (max-width: 1023.98px){.footer-container{grid-template-columns:1fr 1fr}}@media (max-width: 599.98px){.footer-container{gap:1.5rem 2rem;margin-top:1.5rem;margin-bottom:1.5rem}}@media (max-width: 399.98px){.block-list{grid-column:1/3}}@media (max-width: 599.98px){.block-contact,.block-address{grid-column:1/3}}.block-socials{margin-top:3.5rem}@media (max-width: 599.98px){.block-socials{margin-top:1.5rem}}address{font-style:normal}.link-list li{margin:1rem 0}.link-list a{display:block;text-decoration:none;color:hsl(0, 0%, 40%);-webkit-transition:color 200ms;transition:color 200ms}.link-list a:hover{color:black}.content-row{padding:0.5rem 0}h3+.content-row{padding-top:0}.content-row:last-child{padding-bottom:0}.content-row+.content-row{border-top:1px solid hsl(0, 0%, 90%)}.content-row p,.content-row button{margin:0.25rem}.text{font-weight:700}.describe{font-size:0.8125rem;color:hsl(0, 0%, 40%);font-weight:400}.number{font-size:1.25rem}.socials{display:inline-grid;grid-auto-flow:row;grid-template-columns:repeat(4, 1fr);gap:1rem 1.5rem}.socials a{display:block;color:hsl(0, 0%, 40%);-webkit-transition:color 200ms;transition:color 200ms}.socials a:hover,.socials a:focus{color:black}.socials svg{display:block;width:1.5rem;height:1.5rem}.copyright{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:0.5rem 1.5rem;margin-top:2rem;margin-bottom:2rem;font-size:0.75rem}.footer-meta-links{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:0.5rem;font-weight:400}';const x=class{constructor(t){e(this,t);this.liveSupportEnabled=false;this.cookieSettingsEnabled=false;this.liveSupportEnabled=this.unbluEnabled();this.cookieSettingsEnabled=this.ucUIEnabled();if(!this.liveSupportEnabled){let t;let e=0;const r=()=>{const r=this.unbluEnabled();const o=this.ucUIEnabled();const l=r&&o;if(r){this.liveSupportEnabled=true}if(o){this.cookieSettingsEnabled=true}if(l||e>=5){window.clearInterval(t)}e++};t=window.setInterval(r,1e3)}}unbluEnabled(){return typeof window["unbluLSLoad"]==="function"}ucUIEnabled(){return typeof window["UC_UI"]==="object"&&typeof window["UC_UI"]["showSecondLayer"]==="function"}handleCookieSettingsClick(){window["UC_UI"]["showSecondLayer"]()}render(){var e;if(!o){console.warn(`Internet Footer: Could not load config. Please make sure that you included the <swisspost-internet-header></swisspost-internet-header> component.`);return null}if(!o.localizedConfig){return null}if(!o.localizedConfig.footer){console.warn(`Internet Footer: Current project "${o.projectId}" does not include a footer config. The footer will not be rendered. Remove `,document.querySelector("swisspost-internet-footer"),`from your markup or configure the footer in your portal config to stop seeing this warning.`);return null}const g=o.localizedConfig.footer;const f=(e=o.localizedCustomConfig)===null||e===void 0?void 0:e.footer;return t(r,null,t(l,null),t("footer",{class:"post-internet-footer light font-curve-regular"},t("h2",{class:"visually-hidden"},g.title),(f===null||f===void 0?void 0:f.block)&&t(n,{block:f===null||f===void 0?void 0:f.block}),t("div",{class:"footer-container container"},g.block.filter((t=>t.columnType==="list")).map((e=>t(a,{key:e.title,block:e}))),g.block.filter((t=>t.columnType==="contact")).map((e=>t(m,{key:e.title,block:e,liveSupportEnabled:this.liveSupportEnabled}))),g.block.filter((t=>t.columnType==="address")).map((e=>t(s,{key:e.title,block:e})))),t("div",{class:"copyright container"},t("span",{class:"bold"},g.entry.text),t("ul",{class:"no-list footer-meta-links"},g.links?g.links.map((e=>t("li",{key:e.url},t("a",{class:"nav-link",href:e.url,target:e.target},e.text)))):null,this.cookieSettingsEnabled&&t("li",null,t("button",{class:"nav-link cookie-settings",onClick:this.handleCookieSettingsClick},i("Cookie Settings")))))))}};x.style=u;export{x as swisspost_internet_footer};
2
+ //# sourceMappingURL=p-9ab24fb3.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["PostFooterBlockCustom","props","h","class","block","title","links","map","link","key","url","href","target","text","PostFooterBlockList","PostFooterBlockSocials","content","name","icon","PostFooterBlockAddress","filter","address","innerHTML","length","getContentHours","hours","replace","callUnblu","window","console","error","LiveSupport","id","type","onClick","PostFooterBlockContact","index","isLiveSupport","liveSupportEnabled","number","describe","postInternetFooterCss","PostInternetFooter","constructor","hostRef","this","unbluEnabled","cookieSettingsEnabled","ucUIEnabled","intervalId","runs","checker","isEnabled","clearInterval","setInterval","handleCookieSettingsClick","render","state","warn","localizedConfig","footer","projectId","document","querySelector","footerConfig","customFooterConfig","_a","localizedCustomConfig","Host","SvgSprite","columnType","entry","translate"],"sources":["./src/components/post-internet-footer/components/post-footer-block-custom.component.tsx","./src/components/post-internet-footer/components/post-footer-block-list.component.tsx","./src/components/post-internet-footer/components/post-footer-block-socials.component.tsx","./src/components/post-internet-footer/components/post-footer-block-address.component.tsx","./src/components/post-internet-footer/components/post-footer-block-contact.component.tsx","./src/components/post-internet-footer/post-internet-footer.scss?tag=swisspost-internet-footer&encapsulation=shadow","./src/components/post-internet-footer/post-internet-footer.tsx"],"sourcesContent":["import { h } from '@stencil/core';\nimport { CustomBlockEntity } from '../../../models/footer.model';\n\nexport const PostFooterBlockCustom = (props: { block: CustomBlockEntity }) => {\n return (\n <div class=\"pre-footer\">\n <div class=\"block-custom container\">\n <h3>{props.block.title}</h3>\n <ul class=\"no-list box link-list\">\n {props.block.links &&\n props.block.links.map(link => (\n <li key={link.url}>\n <a class=\"flyout-link\" href={link.url} target={link.target}>\n {link.text}\n </a>\n </li>\n ))}\n </ul>\n </div>\n </div>\n );\n};\n","import { h } from '@stencil/core';\nimport { CustomBlockEntity } from '../../../models/footer.model';\n\nexport const PostFooterBlockList = (props: { block: CustomBlockEntity; key: string }) => {\n return (\n <div class=\"block-list\">\n <h3>{props.block.title}</h3>\n <ul class=\"no-list box link-list\">\n {props.block.links &&\n props.block.links.map(link => (\n <li key={link.url}>\n <a class=\"flyout-link\" href={link.url} target={link.target}>\n {link.text}\n </a>\n </li>\n ))}\n </ul>\n </div>\n );\n};\n","import { h } from '@stencil/core';\nimport { ContentEntity } from '../../../models/footer.model';\n\nexport const PostFooterBlockSocials = (props: { content: ContentEntity; key: string }) => {\n return (\n <div class=\"block-socials\">\n <h3>{props.content.title}</h3>\n <ul class=\"no-list socials\">\n {props.content.links.map(link => (\n <li key={link.url}>\n <a href={link.url} target={link.target}>\n <span class=\"visually-hidden\">{link.name}</span>\n <svg aria-hidden=\"true\">\n <use href={`#${link.icon}`} />\n </svg>\n </a>\n </li>\n ))}\n </ul>\n </div>\n );\n};\n","import { h } from '@stencil/core';\nimport { BlockEntity } from '../../../models/footer.model';\nimport { PostFooterBlockSocials } from './post-footer-block-socials.component';\n\nexport const PostFooterBlockAddress = (props: { block: BlockEntity; key: string }) => {\n return (\n <div class=\"block-address\">\n <h3>{props.block.title}</h3>\n {props.block.content &&\n props.block.content\n .filter(content => content.address)\n .map(content => (\n <address class=\"vcard\" key={content.address}>\n <span class=\"adr\" innerHTML={content.address}></span>\n </address>\n ))}\n {props.block.content &&\n props.block.content\n .filter(content => content.links && content.links.length)\n .map(content => <PostFooterBlockSocials key={content.name} content={content} />)}\n </div>\n );\n};\n","import { h } from '@stencil/core';\nimport { BlockEntity } from '../../../models/footer.model';\n\nconst getContentHours = (hours: string) => hours.replace(/<[^>]*>?/gm, '');\n\nconst callUnblu = () => {\n if (typeof window['unbluLSLoad'] === 'function') {\n window['unbluLSLoad']();\n } else {\n console.error(\n 'swisspost-internet-footer: The function \"unbluLSLoad\" could not be called because it is not available in the global scope. Did you include the unblu live chat script on your page?',\n );\n }\n};\n\nconst LiveSupport = (props: { hours: string }) => (\n <button\n class=\"hours btn btn-link\"\n id=\"liveSupport\"\n type=\"button\"\n onClick={callUnblu}\n innerHTML={getContentHours(props.hours)}\n ></button>\n);\n\nexport const PostFooterBlockContact = (props: {\n block: BlockEntity;\n liveSupportEnabled: boolean;\n key: string;\n}) => {\n return (\n <div class=\"block-contact\">\n <h3>{props.block.title}</h3>\n {props.block.content &&\n props.block.content.map((content, index) => {\n const isLiveSupport =\n index === props.block.content!.length - 1 && content.text === 'Live Support';\n if (isLiveSupport && !props.liveSupportEnabled) {\n return null;\n }\n return (\n <div class=\"content-row\" key={content.name}>\n {content.number ? <p class=\"number\">{content.number}</p> : null}\n {content.text ? <p class=\"text\">{content.text}</p> : null}\n {content.hours && isLiveSupport && <LiveSupport hours={content.hours} />}\n {content.hours && !isLiveSupport && (\n // Some values arrive in the form of <p>8&emdash;12</p> and without replace and innerHTML, tags get rendered as text (project=\"klp\" language=\"en\" environment=\"int02\")\n <p class=\"hours\" innerHTML={getContentHours(content.hours)}></p>\n )}\n {content.describe ? <p class=\"describe\">{content.describe}</p> : null}\n </div>\n );\n })}\n </div>\n );\n};\n","@use \"@swisspost/design-system-styles/components/grid\";\n@use \"@swisspost/design-system-styles/variables/color\";\n@use \"@swisspost/design-system-styles/placeholders/text\";\n@use \"@swisspost/design-system-styles/functions\";\n@use \"@swisspost/design-system-styles/components/button\";\n@use \"../../utils/utils.scss\";\n@use \"../../utils/mixins.scss\";\n\n:host {\n display: block;\n}\n\nh3 {\n font-size: inherit;\n margin-top: 0;\n}\n\n.btn.btn-link {\n padding-left: 0;\n padding-right: 0;\n\n &:hover {\n cursor: pointer;\n }\n}\n\n.post-internet-footer {\n font-size: 1rem;\n font-weight: 300;\n border-top: 2px solid color.$gray-10;\n}\n\n.pre-footer {\n padding-top: 2rem;\n padding-bottom: 2rem;\n border-bottom: 2px solid color.$gray-10;\n\n .block-custom,\n .link-list {\n display: flex;\n flex-wrap: wrap;\n gap: 1rem 1.5rem;\n }\n\n h3,\n .link-list li {\n margin: 0;\n }\n}\n\n.footer-container {\n display: grid;\n grid-template-columns: 1fr 1fr 1fr 1fr;\n gap: 3.5rem 2rem;\n margin-top: 3.5rem;\n margin-bottom: 3.5rem;\n\n @include mixins.max(lg) {\n grid-template-columns: 1fr 1fr;\n }\n\n @include mixins.max(rg) {\n gap: 1.5rem 2rem;\n margin-top: 1.5rem;\n margin-bottom: 1.5rem;\n }\n}\n\n.block-list {\n @include mixins.max(sm) {\n grid-column: 1 / 3;\n }\n}\n\n.block-contact,\n.block-address {\n @include mixins.max(rg) {\n grid-column: 1 / 3;\n }\n}\n\n.block-socials {\n margin-top: 3.5rem;\n\n @include mixins.max(rg) {\n margin-top: 1.5rem;\n }\n}\n\naddress {\n font-style: normal;\n}\n\n.link-list {\n li {\n margin: 1rem 0;\n }\n a {\n display: block;\n text-decoration: none;\n color: color.$gray-60;\n transition: color 200ms;\n\n &:hover {\n color: black;\n }\n }\n}\n\n.content-row {\n padding: 0.5rem 0;\n\n h3 + & {\n padding-top: 0;\n }\n\n &:last-child {\n padding-bottom: 0;\n }\n\n & + & {\n border-top: 1px solid color.$gray-10;\n }\n\n p,\n button {\n margin: 0.25rem;\n }\n}\n\n.text {\n font-weight: 700;\n}\n\n.describe {\n font-size: 0.8125rem;\n color: color.$gray-60;\n font-weight: 400;\n}\n\n.number {\n font-size: 1.25rem;\n}\n\n.socials {\n display: inline-grid;\n grid-auto-flow: row;\n grid-template-columns: repeat(4, 1fr);\n gap: 1rem 1.5rem;\n\n a {\n display: block;\n color: color.$gray-60;\n transition: color 200ms;\n\n &:hover,\n &:focus {\n color: black;\n }\n }\n\n svg {\n display: block;\n width: 1.5rem;\n height: 1.5rem;\n }\n}\n\n.copyright {\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem 1.5rem;\n margin-top: 2rem;\n margin-bottom: 2rem;\n font-size: functions.px-to-rem(12px);\n}\n\n.footer-meta-links {\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n font-weight: 400;\n}\n","import { Component, Host, h, State } from '@stencil/core';\nimport { state } from '../../data/store';\nimport { SvgSprite } from '../../utils/svg-sprite.component';\nimport { PostFooterBlockCustom } from './components/post-footer-block-custom.component';\nimport { PostFooterBlockList } from './components/post-footer-block-list.component';\nimport { PostFooterBlockAddress } from './components/post-footer-block-address.component';\nimport { PostFooterBlockContact } from './components/post-footer-block-contact.component';\nimport { translate } from '../../services/language.service';\n\n@Component({\n tag: 'swisspost-internet-footer',\n styleUrl: 'post-internet-footer.scss',\n shadow: true,\n})\nexport class PostInternetFooter {\n @State() liveSupportEnabled = false;\n @State() cookieSettingsEnabled = false;\n\n constructor() {\n this.liveSupportEnabled = this.unbluEnabled();\n this.cookieSettingsEnabled = this.ucUIEnabled();\n\n /**\n * If the unblu script is not available, wait 5 seconds for it to load.\n * If it's still not there after 5 seconds, abandon efforts and don't\n * show the live support button.\n */\n if (!this.liveSupportEnabled) {\n let intervalId: number;\n let runs = 0;\n\n const checker = () => {\n const unbluEnabled = this.unbluEnabled();\n const ucUIEnabled = this.ucUIEnabled();\n const isEnabled = unbluEnabled && ucUIEnabled;\n if (unbluEnabled) {\n this.liveSupportEnabled = true;\n }\n if (ucUIEnabled) {\n this.cookieSettingsEnabled = true;\n }\n if (isEnabled || runs >= 5) {\n window.clearInterval(intervalId);\n }\n runs++;\n };\n\n intervalId = window.setInterval(checker, 1000);\n }\n }\n\n /**\n * Check if the unblu live support script is loaded\n * @returns Boolean\n */\n private unbluEnabled(): boolean {\n return typeof window['unbluLSLoad'] === 'function';\n }\n\n private ucUIEnabled(): boolean {\n return (\n typeof window['UC_UI'] === 'object' &&\n typeof window['UC_UI']['showSecondLayer'] === 'function'\n );\n }\n\n private handleCookieSettingsClick() {\n window['UC_UI']['showSecondLayer']();\n }\n\n render() {\n // There is something wrong entirely\n if (!state) {\n console.warn(\n `Internet Footer: Could not load config. Please make sure that you included the <swisspost-internet-header></swisspost-internet-header> component.`,\n );\n return null;\n }\n\n // Config has not loaded yet\n if (!state.localizedConfig) {\n return null;\n }\n\n // There's no footer config\n if (!state.localizedConfig.footer) {\n console.warn(\n `Internet Footer: Current project \"${state.projectId}\" does not include a footer config. The footer will not be rendered. Remove `,\n document.querySelector('swisspost-internet-footer'),\n `from your markup or configure the footer in your portal config to stop seeing this warning.`,\n );\n return null;\n }\n\n const footerConfig = state.localizedConfig.footer;\n const customFooterConfig = state.localizedCustomConfig?.footer;\n\n return (\n <Host>\n <SvgSprite />\n <footer class=\"post-internet-footer light font-curve-regular\">\n <h2 class=\"visually-hidden\">{footerConfig.title}</h2>\n {customFooterConfig?.block && <PostFooterBlockCustom block={customFooterConfig?.block} />}\n <div class=\"footer-container container\">\n {footerConfig.block\n .filter(block => block.columnType === 'list')\n .map(block => (\n <PostFooterBlockList key={block.title} block={block} />\n ))}\n {footerConfig.block\n .filter(block => block.columnType === 'contact')\n .map(block => (\n <PostFooterBlockContact\n key={block.title}\n block={block}\n liveSupportEnabled={this.liveSupportEnabled}\n />\n ))}\n {footerConfig.block\n .filter(block => block.columnType === 'address')\n .map(block => (\n <PostFooterBlockAddress key={block.title} block={block} />\n ))}\n </div>\n <div class=\"copyright container\">\n <span class=\"bold\">{footerConfig.entry.text}</span>\n <ul class=\"no-list footer-meta-links\">\n {footerConfig.links\n ? footerConfig.links.map(link => (\n <li key={link.url}>\n <a class=\"nav-link\" href={link.url} target={link.target}>\n {link.text}\n </a>\n </li>\n ))\n : null}\n {this.cookieSettingsEnabled && (\n <li>\n <button class=\"nav-link cookie-settings\" onClick={this.handleCookieSettingsClick}>\n {translate('Cookie Settings')}\n </button>\n </li>\n )}\n </ul>\n </div>\n </footer>\n </Host>\n );\n }\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{r as i,h as n,H as s,g as t}from"./p-8e0a4d18.js";import{s as l}from"./p-8eb05d18.js";import{t as o}from"./p-e057071d.js";import{S as a}from"./p-11d05acc.js";const e=":host{display:block}.skiplinks a{position:absolute;top:0.5rem;left:0.5rem;clip:rect(0 0 0 0);width:1px;overflow:hidden;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:0.25rem;background:white}.skiplinks a:focus-visible{position:absolute;clip:unset;width:auto}";const r=class{constructor(n){i(this,n)}getMainId(){var i;return(i=document.querySelector("main[id]"))===null||i===void 0?void 0:i.getAttribute("id")}setFocus(i){const n=this.host.closest(".post-internet-header");if(!n){return}const s=n.querySelector(i);if(s){s.setFocus()}}focusMain(){this.setFocus("post-main-navigation")}focusSearch(){this.setFocus("post-search")}focusLogin(){this.setFocus("post-klp-login-widget")}render(){var i;const t=(i=l.localizedConfig)===null||i===void 0?void 0:i.header;const e=this.getMainId();if(t===undefined){return}return n(s,null,n("div",{class:"skiplinks"},n("ul",{class:"no-list","aria-label":o("Skip Links")},n("li",null,n("a",{class:"nav-link",href:t.logo.logoLink},n("span",null,t.logo.logoLinkTitle),n(a,{name:"pi-pointy-arrow-right"}))),n("li",null,n("a",{class:"nav-link",href:"#post-internet-header-main-navigation",onClick:()=>this.focusMain()},n("span",null,t.translations.navMainAriaLabel),n(a,{name:"pi-pointy-arrow-right"}))),e?n("li",null,n("a",{class:"nav-link",href:`#${e}`},n("span",null,o("Go to main content")),n(a,{name:"pi-pointy-arrow-right"}))):null,l.search?n("li",null,n("a",{class:"nav-link",href:"#post-internet-header-search-button",onClick:()=>this.focusSearch()},n("span",null,o("Go to search")),n(a,{name:"pi-pointy-arrow-right"}))):null,l.login?n("li",null,n("a",{class:"nav-link",href:"#post-klp-login-widget",onClick:()=>this.focusLogin()},n("span",null,o("Go to login")),n(a,{name:"pi-pointy-arrow-right"}))):null)))}get host(){return t(this)}};r.style=e;export{r as post_skiplinks};
2
- //# sourceMappingURL=p-ed043df2.entry.js.map
1
+ import{r as i,h as n,H as s,g as t}from"./p-8e0a4d18.js";import{s as l}from"./p-459c3983.js";import{t as o}from"./p-7bed0797.js";import{S as a}from"./p-11d05acc.js";const e=":host{display:block}.skiplinks a{position:absolute;top:0.5rem;left:0.5rem;clip:rect(0 0 0 0);width:1px;overflow:hidden;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:0.25rem;background:white}.skiplinks a:focus-visible{position:absolute;clip:unset;width:auto}";const r=class{constructor(n){i(this,n)}getMainId(){var i;return(i=document.querySelector("main[id]"))===null||i===void 0?void 0:i.getAttribute("id")}setFocus(i){const n=this.host.closest(".post-internet-header");if(!n){return}const s=n.querySelector(i);if(s){s.setFocus()}}focusMain(){this.setFocus("post-main-navigation")}focusSearch(){this.setFocus("post-search")}focusLogin(){this.setFocus("post-klp-login-widget")}render(){var i;const t=(i=l.localizedConfig)===null||i===void 0?void 0:i.header;const e=this.getMainId();if(t===undefined){return}return n(s,null,n("div",{class:"skiplinks"},n("ul",{class:"no-list","aria-label":o("Skip Links")},n("li",null,n("a",{class:"nav-link",href:t.logo.logoLink},n("span",null,t.logo.logoLinkTitle),n(a,{name:"pi-pointy-arrow-right"}))),n("li",null,n("a",{class:"nav-link",href:"#post-internet-header-main-navigation",onClick:()=>this.focusMain()},n("span",null,t.translations.navMainAriaLabel),n(a,{name:"pi-pointy-arrow-right"}))),e?n("li",null,n("a",{class:"nav-link",href:`#${e}`},n("span",null,o("Go to main content")),n(a,{name:"pi-pointy-arrow-right"}))):null,l.search?n("li",null,n("a",{class:"nav-link",href:"#post-internet-header-search-button",onClick:()=>this.focusSearch()},n("span",null,o("Go to search")),n(a,{name:"pi-pointy-arrow-right"}))):null,l.login?n("li",null,n("a",{class:"nav-link",href:"#post-klp-login-widget",onClick:()=>this.focusLogin()},n("span",null,o("Go to login")),n(a,{name:"pi-pointy-arrow-right"}))):null)))}get host(){return t(this)}};r.style=e;export{r as post_skiplinks};
2
+ //# sourceMappingURL=p-9ec1f474.entry.js.map
@@ -0,0 +1,2 @@
1
+ var __awaiter=this&&this.__awaiter||function(t,i,e,n){function o(t){return t instanceof e?t:new e((function(i){i(t)}))}return new(e||(e=Promise))((function(e,r){function s(t){try{l(n.next(t))}catch(t){r(t)}}function a(t){try{l(n["throw"](t))}catch(t){r(t)}}function l(t){t.done?e(t.value):o(t.value).then(s,a)}l((n=n.apply(t,i||[])).next())}))};var __generator=this&&this.__generator||function(t,i){var e={label:0,sent:function(){if(r[0]&1)throw r[1];return r[1]},trys:[],ops:[]},n,o,r,s;return s={next:a(0),throw:a(1),return:a(2)},typeof Symbol==="function"&&(s[Symbol.iterator]=function(){return this}),s;function a(t){return function(i){return l([t,i])}}function l(a){if(n)throw new TypeError("Generator is already executing.");while(s&&(s=0,a[0]&&(e=0)),e)try{if(n=1,o&&(r=a[0]&2?o["return"]:a[0]?o["throw"]||((r=o["return"])&&r.call(o),0):o.next)&&!(r=r.call(o,a[1])).done)return r;if(o=0,r)a=[a[0]&2,r.value];switch(a[0]){case 0:case 1:r=a;break;case 4:e.label++;return{value:a[1],done:false};case 5:e.label++;o=a[1];a=[0];continue;case 7:a=e.ops.pop();e.trys.pop();continue;default:if(!(r=e.trys,r=r.length>0&&r[r.length-1])&&(a[0]===6||a[0]===2)){e=0;continue}if(a[0]===3&&(!r||a[1]>r[0]&&a[1]<r[3])){e.label=a[1];break}if(a[0]===6&&e.label<r[1]){e.label=r[1];r=a;break}if(r&&e.label<r[2]){e.label=r[2];e.ops.push(a);break}if(r[2])e.ops.pop();e.trys.pop();continue}a=i.call(t,e)}catch(t){a=[6,t];o=0}finally{n=r=0}if(a[0]&5)throw a[1];return{value:a[0]?a[1]:void 0,done:true}}};System.register(["./p-1d455921.system.js","./p-9b4d5e90.system.js","./p-1ec4e0ee.system.js","./p-88aac12c.system.js","./p-4099b274.system.js","./p-fb82b748.system.js","./p-55bfdf22.system.js"],(function(t){"use strict";var i,e,n,o,r,s,a,l,u,f,d;return{setters:[function(t){i=t.h;e=t.r;n=t.c;o=t.H;r=t.g},function(t){s=t.t},function(t){a=t.s},function(t){l=t.u},function(t){u=t.t},function(t){f=t.S},function(t){d=t.S}],execute:function(){var c=function(t){var e,n,o;var r=t.level.url?"a":"button";return i(r,{class:{"main-link":true,active:!!t.level.isActiveOverride,focus:t.isOpen},href:t.level.url,title:((e=t.level.title)===null||e===void 0?void 0:e.trim())&&((n=t.level.title)===null||n===void 0?void 0:n.trim())!==((o=t.level.text)===null||o===void 0?void 0:o.trim())?t.level.title:undefined,tabindex:t.level.url?undefined:0,"aria-haspopup":!t.level.noFlyout+"","aria-expanded":t.level.noFlyout?null:t.isOpen+"",onTouchEnd:function(i){return t.onTouchEnd(i)},onKeyDown:function(i){return t.onKeyDown(i)},onClick:function(i){return t.onClick(i)}},i("span",null,t.level.text),t.level.isActiveOverride?i("span",{class:"visually-hidden"},u("Active navigation element")):null,i("svg",{"aria-hidden":"true"},i("use",{href:"#pi-pointy-arrow-right"})))};var m='/*!\n * Copyright 2021 by Swiss Post, Information Technology\n */.flyout-nav,.flyout-column h3{font-size:0.9375rem}@media (min-width: 600px){.flyout-nav,.flyout-column h3{font-size:1rem}}@media (min-width: 1024px){.flyout-nav,.flyout-column h3{font-size:1.0625rem}}.flyout-title{font-size:1.0625rem}@media (min-width: 600px){.flyout-title{font-size:1.25rem}}@media (min-width: 1024px){.flyout-title{font-size:1.5rem}}@font-face{font-display:swap;font-family:"Frutiger Neue For Post";font-weight:700;src:url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-Bold.woff2") format("woff2"), url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-Bold.woff") format("woff")}@font-face{font-display:swap;font-family:"Frutiger Neue For Post";font-weight:700;font-style:italic;src:url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-BdIt.woff2") format("woff2"), url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-BdIt.woff") format("woff")}@font-face{font-display:swap;font-family:"Frutiger Neue For Post";font-weight:400;src:url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-Rg.woff2") format("woff2"), url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-Rg.woff") format("woff")}@font-face{font-display:swap;font-family:"Frutiger Neue For Post";font-weight:400;font-style:italic;src:url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-It.woff2") format("woff2"), url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-It.woff") format("woff")}@font-face{font-display:swap;font-family:"Frutiger Neue For Post";font-weight:300;src:url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-Lt.woff2") format("woff2"), url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-Lt.woff") format("woff")}@font-face{font-display:swap;font-family:"Frutiger Neue For Post";font-weight:300;font-style:italic;src:url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-LtIt.woff2") format("woff2"), url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-LtIt.woff") format("woff")}.visually-hidden{position:absolute;width:1px;height:1px;border:0;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0)}.btn-blank{background-color:transparent;border:none;border-radius:0;padding:0}.nav-link,.main-link,.flyout-close-button,.flyout-link{outline:none;outline-offset:2px;text-decoration:none;color:rgba(0, 0, 0, 0.8);-webkit-transition:color 200ms;transition:color 200ms;background-color:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;margin:0;cursor:pointer;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:0.5rem}.nav-link:is(:focus-visible,:focus-within,.pretend-focus),.main-link:is(:focus-visible,:focus-within,.pretend-focus),.flyout-close-button:is(:focus-visible,:focus-within,.pretend-focus),.flyout-link:is(:focus-visible,:focus-within,.pretend-focus){outline:2px solid var(--post-contrast-color)}.nav-link:hover,.main-link:hover,.flyout-close-button:hover,.flyout-link:hover,.nav-link:focus,.main-link:focus,.flyout-close-button:focus,.flyout-link:focus{color:black}.nav-link:focus-visible,.main-link:focus-visible,.flyout-close-button:focus-visible,.flyout-link:focus-visible{z-index:1;position:relative}.nav-link>svg,.main-link>svg,.flyout-close-button>svg,.flyout-link>svg{width:1.4em;height:1.4em;-ms-flex-negative:0;flex-shrink:0}.nav-link>span,.main-link>span,.flyout-close-button>span,.flyout-link>span{-ms-flex-negative:1;flex-shrink:1}.no-list,.main-container,.flyout-linklist{list-style:none;padding-left:0;margin-top:0;margin-bottom:0}*,:host,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}:host{font-family:"Frutiger Neue For Post", system-ui, sans-serif}button{font:inherit;padding:0}a,button{border-radius:4px;outline:none;outline-offset:2px;}a:is(:focus-visible,:focus-within,.pretend-focus),button:is(:focus-visible,:focus-within,.pretend-focus){outline:2px solid var(--post-contrast-color);border-radius:4px}img,svg{max-width:100%;max-height:100%}@media (forced-colors: active){svg{color:white}}.box>*:first-child{margin-top:0}.box>*:last-child{margin-bottom:0}.mirrored{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.bold{font-weight:700}.light{font-weight:300}.d-flex{display:-ms-flexbox;display:flex}.d-inline-flex{display:-ms-inline-flexbox;display:inline-flex}.align-items-center{-ms-flex-align:center;align-items:center}@media (min-width: 1441px){.wide-container{margin:0 auto;max-width:1440px}}@media (max-width: 599.98px){.container{padding-right:16px;padding-left:16px}}@media (min-width: 600px) and (max-width: 1023.98px){.container{padding-right:32px;padding-left:32px}}@media (min-width: 1024px){.container{padding-right:40px;padding-left:40px}}@media (max-width: -0.02px){.hidden-xs{display:none}}@media (max-width: 399.98px){.hidden-sm{display:none}}@media (max-width: 599.98px){.hidden-rg{display:none}}@media (max-width: 779.98px){.hidden-md{display:none}}@media (max-width: 1023.98px){.hidden-lg{display:none}}@media (max-width: 1279.98px){.hidden-xl{display:none}}@media (max-width: 1440.98px){.hidden-xxl{display:none}}:host{--host-window-height:var(--window-height, 100vh);--calculated-header-height:calc(var(--header-height) + 1px);display:block;min-width:0;height:var(--header-height)}:host(.no-animation) *{-webkit-animation:none !important;animation:none !important;-webkit-transition:none !important;transition:none !important}@media (min-width: 1024px){.main-navigation,.main-container,.main-container li,.main-link{height:100%}}.main-navigation{font-size:1.125rem}@media (min-width: 1024px){.main-navigation{font-size:1rem;margin:0 0.75rem}}@media (min-width: 1280px){.main-navigation{font-size:1.125rem}}@media (min-width: 1441px){.main-navigation{font-size:1.25rem}}@media (max-width: 1023.98px){.main-navigation{position:absolute;top:var(--calculated-header-height);left:0;background:white;height:calc(var(--host-window-height) - var(--calculated-header-height));width:100%;margin:0;overflow:hidden scroll;-webkit-overflow-scrolling:touch;-ms-scroll-chaining:none;overscroll-behavior:contain;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:justify;justify-content:space-between;z-index:-1;visibility:hidden;-webkit-transform:translateY(-100%);transform:translateY(-100%);-webkit-transition:visibility 0.35s, -webkit-transform 0.35s;transition:visibility 0.35s, -webkit-transform 0.35s;transition:transform 0.35s, visibility 0.35s;transition:transform 0.35s, visibility 0.35s, -webkit-transform 0.35s}}@media (max-width: 1023.98px) and (prefers-reduced-motion: reduce){.main-navigation{-webkit-transition:none;transition:none}}@media (max-width: 1023.98px){.main-navigation.open{-webkit-transform:translateY(0);transform:translateY(0);visibility:visible}}.main-container{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:start;justify-content:flex-start}@media (max-width: 1023.98px){.main-container{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:stretch;align-items:stretch;-ms-flex-pack:start;justify-content:flex-start;padding-top:2.5rem;padding-bottom:2.5rem}.main-container>li+li{border-top:1px solid hsl(0, 0%, 90%)}}@media (min-width: 1024px){.main-container{padding-right:0;padding-left:0}}.main-container>li{-ms-flex:0 1 auto;flex:0 1 auto;min-width:0}.main-link{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding-right:0.75rem;padding-left:0.75rem;text-align:left;cursor:pointer;width:100%}@media (min-width: 1024px){.main-link svg{display:none}}@media (max-width: 1023.98px){.main-link{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:center;align-items:center;font-weight:300;padding:0.625rem 0;width:100%;text-align:left}.main-link svg{width:1.5rem;height:1.5rem}}.main-link span{overflow:hidden;text-overflow:ellipsis}.main-link,.flyout-link{position:relative;color:black}.main-link::after,.flyout-link::after{content:"";position:absolute;bottom:-1px;left:0;width:100%;height:4px;background-color:transparent;opacity:0;-webkit-transform:scaleX(0.8);transform:scaleX(0.8);-webkit-transition:opacity 0.25s cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);transition:opacity 0.25s cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);transition:opacity 0.25s cubic-bezier(0.4, 0, 0.2, 1), transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);transition:opacity 0.25s cubic-bezier(0.4, 0, 0.2, 1), transform 0.25s cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 0.25s cubic-bezier(0.4, 0, 0.2, 1)}@media (prefers-reduced-motion: reduce){.main-link::after,.flyout-link::after{-webkit-transition:none;transition:none}}.main-link:hover::after,.main-link.focus::after,.flyout-link:hover::after,.flyout-link.focus::after{background-color:hsl(0, 0%, 80%);opacity:1;-webkit-transform:scale(1);transform:scale(1);-webkit-transition:opacity 0.25s cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);transition:opacity 0.25s cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);transition:opacity 0.25s cubic-bezier(0.4, 0, 0.2, 1), transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);transition:opacity 0.25s cubic-bezier(0.4, 0, 0.2, 1), transform 0.25s cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 0.25s cubic-bezier(0.4, 0, 0.2, 1)}.main-link.active,.flyout-link.active{font-weight:700}.main-link.active::after,.flyout-link.active::after{background-color:#fc0;opacity:1;-webkit-transform:scale(1);transform:scale(1)}.flyout{left:0;width:100%;background:white;padding-bottom:3rem;overflow:auto;-ms-scroll-chaining:none;overscroll-behavior:contain;visibility:hidden}@media (min-width: 1024px){.flyout{position:absolute;top:100%;max-height:calc(100vh - var(--header-height) - var(--meta-header-height) - 1px);z-index:-1;-webkit-box-shadow:0 0 1px 0 rgba(0, 0, 0, 0.4);box-shadow:0 0 1px 0 rgba(0, 0, 0, 0.4);-webkit-transform:translateY(-100%);transform:translateY(-100%)}.flyout.open{-webkit-box-shadow:0 0 8px 0 rgba(0, 0, 0, 0.4);box-shadow:0 0 8px 0 rgba(0, 0, 0, 0.4);-webkit-transform:translateY(0);transform:translateY(0)}}@media (max-width: 1023.98px){.flyout{position:fixed;top:0;height:100%;z-index:1;-webkit-transform:translateX(100%);transform:translateX(100%)}.flyout.open{-webkit-transform:translateX(0);transform:translateX(0)}}.flyout.open{visibility:visible}.flyout.animate{-webkit-transition:visibility 0.35s, -webkit-transform 0.35s, -webkit-box-shadow 0.35s;transition:visibility 0.35s, -webkit-transform 0.35s, -webkit-box-shadow 0.35s;transition:transform 0.35s, visibility 0.35s, box-shadow 0.35s;transition:transform 0.35s, visibility 0.35s, box-shadow 0.35s, -webkit-transform 0.35s, -webkit-box-shadow 0.35s}@media (prefers-reduced-motion: reduce){.flyout.animate{-webkit-transition:none;transition:none}}.flyout-nav{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;min-height:3.5rem;-webkit-box-sizing:content-box;box-sizing:content-box}.flyout-row{display:-ms-flexbox;display:flex;gap:1.5rem}@media (max-width: 1023.98px){.flyout-row{display:grid;grid-template-columns:1fr 1fr}}@media (max-width: 599.98px){.flyout-row{grid-template-columns:1fr}}.flyout-column{-ms-flex:1;flex:1;max-width:25%}@media (max-width: 1023.98px){.flyout-column{max-width:none}}.flyout-column h3{margin-top:0}.flyout-back-button{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;font-size:1rem;font-weight:400;cursor:pointer}@media (max-width: 599.98px){.flyout-back-button{padding-right:16px;padding-left:16px}}@media (min-width: 600px) and (max-width: 1023.98px){.flyout-back-button{padding-right:32px;padding-left:32px}}@media (min-width: 1024px){.flyout-back-button{padding-right:40px;padding-left:40px}}.flyout-back-button svg{width:1.5rem;height:1.5rem}@media (min-width: 1024px){.flyout-back-button{display:none}}.flyout-close-button{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;margin-left:auto;padding:0 1.5rem;cursor:pointer}.flyout-close-button svg{width:1.5rem;height:1.5rem}@media (max-width: 1023.98px){.flyout-close-button{display:none}}.flyout-linklist li{border-top:1px solid hsl(0, 0%, 90%)}.flyout-linklist:first-child>li{border-top-color:transparent}.flyout-link{display:block;padding:0.75rem 0}.flyout-title{margin:2.5rem 0 1.5rem 0}@media (min-width: 1024px){.flyout-title{display:none}}';var h=t("post_main_navigation",function(){function t(t){e(this,t);this.dropdownToggled=n(this,"dropdownToggled",7);this.flyoutToggled=n(this,"flyoutToggled",7);this.resizeTimer=null;this.mouseLeaveTimer=null;this.mouseEnterTimer=null;this.activeFlyout=undefined;this.mobileMenuOpen=undefined}t.prototype.connectedCallback=function(){var t=this;this.throttledResize=s(300,(function(){return t.handleResize()}));window.addEventListener("resize",this.throttledResize,{passive:true});this.setWindowHeight()};t.prototype.disconnectedCallback=function(){window.removeEventListener("resize",this.throttledResize);if(this.mouseEnterTimer!==null)window.clearTimeout(this.mouseEnterTimer);if(this.mouseLeaveTimer!==null)window.clearTimeout(this.mouseLeaveTimer)};t.prototype.handleResize=function(){var t=this;this.host.classList.add("no-animation");if(this.resizeTimer!==null)window.clearTimeout(this.resizeTimer);this.resizeTimer=window.setTimeout((function(){t.host.classList.remove("no-animation")}),300);this.setWindowHeight()};t.prototype.setWindowHeight=function(){var t=this;if(!this.host){return}this.host.style.setProperty("--window-height","".concat(window.innerHeight,"px"));window.setTimeout((function(){t.host.style.setProperty("--window-height","".concat(window.innerHeight,"px"))}),100)};t.prototype.openFlyout=function(t){var i;var e=(i=this.host.shadowRoot)===null||i===void 0?void 0:i.getElementById(t);if(e&&this.activeFlyout!==""){this.addFlyoutAnimation(e,"expand")}this.activeFlyout=t;this.flyoutToggled.emit(t);this.setWindowHeight();if(this.mouseLeaveTimer!==null){window.clearTimeout(this.mouseLeaveTimer);this.mouseLeaveTimer=null}};t.prototype.closeFlyout=function(t,i){if(i===void 0){i=true}var e;if(t===undefined)return;var n=(e=this.host.shadowRoot)===null||e===void 0?void 0:e.getElementById(t);if(n){this.addFlyoutAnimation(n,"collapse",i)}this.activeFlyout=null;this.flyoutToggled.emit()};t.prototype.addFlyoutAnimation=function(t,i,e){if(e===void 0){e=true}if(!l()){t.classList.add("animate");t.addEventListener("transitionend",(function(){var n,o,r;if(e){if(i==="expand"){(n=t.querySelector("button.flyout-back-button"))===null||n===void 0?void 0:n.focus()}else if(i==="collapse"){(r=(o=t.parentElement)===null||o===void 0?void 0:o.querySelector("a.main-link"))===null||r===void 0?void 0:r.focus()}}t.classList.remove("animate")}),{once:true})}};t.prototype.isActiveFlyout=function(t){return t===this.activeFlyout};t.prototype.handleMouseEnter=function(t){var i=this;if(this.mouseEnterTimer!==null){window.clearTimeout(this.mouseEnterTimer);this.mouseEnterTimer=null}if(this.mouseLeaveTimer&&this.activeFlyout===t.id){window.clearTimeout(this.mouseLeaveTimer);this.mouseLeaveTimer=null}if(window.innerWidth>=1024&&t.flyout.length>0&&this.activeFlyout!==t.id){this.mouseEnterTimer=window.setTimeout((function(){i.mouseEnterTimer=null;if(t.id!==undefined)i.openFlyout(t.id)}),200)}};t.prototype.handleMouseLeave=function(t){var i=this;if(this.mouseEnterTimer!==null){window.clearTimeout(this.mouseEnterTimer)}if(this.activeFlyout&&this.activeFlyout!==t.id){return}if(window.innerWidth>=1024&&t.flyout.length>0){this.mouseLeaveTimer=window.setTimeout((function(){i.closeFlyout(t.id,false)}),300)}};t.prototype.handleTouchEnd=function(t,i){if(!this.isActiveFlyout(i.id)&&!i.noFlyout){if(t.cancelable)t.preventDefault();if(i.id)this.openFlyout(i.id)}};t.prototype.handleKeyPress=function(t,i){if(t.key==="Enter"&&!this.isActiveFlyout(i.id)&&!i.noFlyout){t.preventDefault();if(i.id)this.openFlyout(i.id)}};t.prototype.handleClick=function(t,i){if(!this.isActiveFlyout(i.id)&&!i.noFlyout){t.preventDefault();if(i.id)this.openFlyout(i.id)}};t.prototype.toggleDropdown=function(t){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(i){this.mobileMenuOpen=t===undefined?!this.mobileMenuOpen:t;this.dropdownToggled.emit({open:this.mobileMenuOpen,element:this.host});if(t===false){this.closeFlyout()}this.setWindowHeight();return[2,this.mobileMenuOpen]}))}))};t.prototype.setFocus=function(){return __awaiter(this,void 0,void 0,(function(){var t,i;return __generator(this,(function(e){i=(t=this.host.shadowRoot)===null||t===void 0?void 0:t.querySelector(".main-link");if(i){i.focus()}return[2]}))}))};t.prototype.setActiveFlyout=function(t){return __awaiter(this,void 0,void 0,(function(){return __generator(this,(function(i){this.activeFlyout=t;this.flyoutToggled.emit(this.activeFlyout);return[2]}))}))};t.prototype.render=function(){var t=this;var e;if(((e=a.localizedConfig)===null||e===void 0?void 0:e.header)===undefined)return;var n=a.localizedConfig.header;return i(o,null,i(f,null),i("nav",{"aria-label":n.translations.navMainAriaLabel,id:"post-internet-header-main-navigation",class:{"main-navigation":true,open:this.mobileMenuOpen},role:"menu"},i("ul",{class:"main-container container"},n.navMain.map((function(e){return i("li",{key:e.text,onMouseLeave:function(){return t.handleMouseLeave(e)},onMouseEnter:function(){return t.handleMouseEnter(e)}},i(c,{level:e,isOpen:t.isActiveFlyout(e.id),onTouchEnd:function(i){return t.handleTouchEnd(i,e)},onKeyDown:function(i){return t.handleKeyPress(i,e)},onClick:function(i){return t.handleClick(i,e)}}),!e.noFlyout?r.bind(t)(e):null)}))),i("slot",null)));function r(t){var e=this;return i("div",{id:t.id,class:{flyout:true,open:this.isActiveFlyout(t.id)}},i("div",{class:"wide-container"},i("div",{class:"flyout-nav"},i("button",{class:"nav-link flyout-back-button",onClick:function(){return e.closeFlyout(t.id)}},i(d,{name:"pi-pointy-arrow-right",classNames:"mirrored"}),i("span",null,n.translations.backButtonText)),i("button",{class:"flyout-close-button",onClick:function(){return e.closeFlyout(t.id)}},i("span",{class:"visually-hidden"},t.text,", ",n.translations.mobileNavToggleClose),i(d,{name:"pi-close"}))),i("h2",{class:"flyout-title container"},i("a",{href:t.url,class:"nav-link"},t.text)),i("div",{class:"flyout-row container"},t.flyout.map((function(e,n){return i("div",{key:e.title,class:"flyout-column"},e.title?i("h3",{id:"".concat(t.id,"-column-").concat(n)},e.title):null,i("ul",{class:"flyout-linklist","aria-labelledby":e.title?"".concat(t.id,"-column-").concat(n):undefined},e.linkList.map((function(t){return i("li",{key:t.url},i("a",{class:{"flyout-link":true,active:!!(t===null||t===void 0?void 0:t.isActiveOverride)},href:t.url,target:t.target},t.title,(t===null||t===void 0?void 0:t.isActiveOverride)?i("span",{class:"visually-hidden"},", ",u("Active navigation element")):null))}))))})))))}};Object.defineProperty(t.prototype,"host",{get:function(){return r(this)},enumerable:false,configurable:true});return t}());h.style=m}}}));
2
+ //# sourceMappingURL=p-a366648c.system.entry.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["LevelOneAction","props","TagName","level","url","h","class","active","isActiveOverride","focus","isOpen","href","title","_a","trim","_b","_c","text","undefined","tabindex","noFlyout","onTouchEnd","e","onKeyDown","onClick","translate","postMainNavigationCss","PostMainNavigation","exports","this","resizeTimer","mouseLeaveTimer","mouseEnterTimer","class_1","prototype","connectedCallback","_this","throttledResize","throttle","handleResize","window","addEventListener","passive","setWindowHeight","disconnectedCallback","removeEventListener","clearTimeout","host","classList","add","setTimeout","remove","style","setProperty","concat","innerHeight","openFlyout","id","flyout","shadowRoot","getElementById","activeFlyout","addFlyoutAnimation","flyoutToggled","emit","closeFlyout","manageFocus","direction","userPrefersReducedMotion","querySelector","parentElement","once","isActiveFlyout","handleMouseEnter","innerWidth","length","handleMouseLeave","handleTouchEnd","event","cancelable","preventDefault","handleKeyPress","key","handleClick","toggleDropdown","force","mobileMenuOpen","dropdownToggled","open","element","setFocus","firstLink","setActiveFlyout","render","state","localizedConfig","header","headerConfig","Host","SvgSprite","translations","navMainAriaLabel","role","navMain","map","levelOne","onMouseLeave","onMouseEnter","renderLevelOneFlyout","bind","SvgIcon","name","classNames","backButtonText","mobileNavToggleClose","i","linkList","link","target"],"sources":["src/components/post-main-navigation/components/level-one-action.component.tsx","src/components/post-main-navigation/post-main-navigation.scss?tag=post-main-navigation&encapsulation=shadow","src/components/post-main-navigation/post-main-navigation.tsx"],"sourcesContent":["import { h } from '@stencil/core';\nimport { NavMainEntity } from '../../../models/header.model';\nimport { translate } from '../../../services/language.service';\n\nexport const LevelOneAction = (props: {\n level: NavMainEntity;\n isOpen: boolean;\n onTouchEnd: (e: any) => void;\n onKeyDown: (e: any) => void;\n onClick: (e: any) => void;\n}) => {\n const TagName = props.level.url ? 'a' : 'button';\n\n return (\n <TagName\n class={{\n 'main-link': true,\n 'active': !!props.level.isActiveOverride,\n 'focus': props.isOpen,\n }}\n href={props.level.url}\n title={\n props.level.title?.trim() && props.level.title?.trim() !== props.level.text?.trim()\n ? props.level.title\n : undefined\n }\n tabindex={props.level.url ? undefined : 0}\n aria-haspopup={!props.level.noFlyout + ''}\n aria-expanded={props.level.noFlyout ? null : props.isOpen + ''}\n onTouchEnd={e => props.onTouchEnd(e)}\n onKeyDown={e => props.onKeyDown(e)}\n onClick={e => props.onClick(e)}\n >\n <span>{props.level.text}</span>\n {props.level.isActiveOverride ? (\n <span class=\"visually-hidden\">{translate('Active navigation element')}</span>\n ) : null}\n <svg aria-hidden=\"true\">\n <use href=\"#pi-pointy-arrow-right\" />\n </svg>\n </TagName>\n );\n};\n","@use '@swisspost/design-system-styles/variables/color';\n@use '@swisspost/design-system-styles/placeholders/text';\n@use '@swisspost/design-system-styles/functions';\n@use '../../utils/utils.scss';\n@use '../../utils/mixins.scss';\n\n:host {\n --host-window-height: var(--window-height, 100vh);\n --calculated-header-height: calc(var(--header-height) + 1px);\n\n display: block;\n min-width: 0;\n height: var(--header-height);\n}\n\n:host(.no-animation) {\n * {\n animation: none !important;\n transition: none !important;\n }\n}\n\n.main-navigation,\n.main-container,\n.main-container li,\n.main-link {\n @include mixins.min(lg) {\n height: 100%;\n }\n}\n\n.main-navigation {\n font-size: functions.px-to-rem(18px);\n\n @include mixins.min(lg) {\n font-size: functions.px-to-rem(16px);\n margin: 0 0.75rem;\n }\n\n @include mixins.min(xl) {\n font-size: functions.px-to-rem(18px);\n }\n\n @include mixins.min(xxl) {\n font-size: functions.px-to-rem(20px);\n }\n\n @include mixins.max(lg) {\n position: absolute;\n top: var(--calculated-header-height);\n left: 0;\n background: white;\n height: calc(var(--host-window-height) - var(--calculated-header-height));\n width: 100%;\n margin: 0;\n overflow: hidden scroll;\n -webkit-overflow-scrolling: touch;\n overscroll-behavior: contain;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n z-index: -1;\n visibility: hidden;\n transform: translateY(-100%);\n transition: transform 0.35s, visibility 0.35s;\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n\n &.open {\n transform: translateY(0);\n visibility: visible;\n }\n }\n}\n\n.main-container {\n @extend %no-list;\n\n display: flex;\n align-items: center;\n justify-content: flex-start;\n\n @include mixins.max(lg) {\n flex-direction: column;\n align-items: stretch;\n justify-content: flex-start;\n padding-top: 2.5rem;\n padding-bottom: 2.5rem;\n\n > li + li {\n border-top: 1px solid color.$gray-10;\n }\n }\n\n @include mixins.min(lg) {\n padding-right: 0;\n padding-left: 0;\n }\n\n > li {\n flex: 0 1 auto;\n min-width: 0;\n }\n}\n\n.main-link {\n @extend %nav-link;\n\n display: flex;\n align-items: center;\n padding-right: 0.75rem;\n padding-left: 0.75rem;\n text-align: left;\n cursor: pointer;\n width: 100%;\n\n @include mixins.min(lg) {\n svg {\n display: none;\n }\n }\n\n @include mixins.max(lg) {\n display: flex;\n justify-content: space-between;\n align-items: center;\n font-weight: 300;\n padding: 0.625rem 0;\n width: 100%;\n text-align: left;\n\n svg {\n width: 1.5rem;\n height: 1.5rem;\n }\n }\n\n span {\n overflow: hidden;\n text-overflow: ellipsis;\n }\n}\n\n.main-link,\n.flyout-link {\n position: relative;\n color: black;\n\n &::after {\n content: '';\n position: absolute;\n bottom: -1px;\n left: 0;\n width: 100%;\n height: 4px;\n background-color: transparent;\n opacity: 0;\n transform: scaleX(0.8);\n transition: opacity 0.25s cubic-bezier(0.4, 0, 0.2, 1),\n transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n }\n\n &:hover,\n &.focus {\n &::after {\n background-color: color.$gray-20;\n opacity: 1;\n transform: scale(1);\n transition: opacity 0.25s cubic-bezier(0.4, 0, 0.2, 1),\n transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n }\n }\n\n &.active {\n font-weight: 700;\n\n &::after {\n background-color: color.$yellow;\n opacity: 1;\n transform: scale(1);\n }\n }\n}\n\n.flyout {\n left: 0;\n width: 100%;\n background: white;\n padding-bottom: 3rem;\n overflow: auto;\n overscroll-behavior: contain;\n visibility: hidden;\n\n @include mixins.min(lg) {\n position: absolute;\n top: 100%;\n max-height: calc(100vh - var(--header-height) - var(--meta-header-height) - 1px);\n z-index: -1;\n box-shadow: 0 0 1px 0 rgb(0 0 0 / 40%);\n transform: translateY(-100%);\n\n &.open {\n box-shadow: 0 0 8px 0 rgb(0 0 0 / 40%);\n transform: translateY(0);\n }\n }\n\n @include mixins.max(lg) {\n position: fixed;\n top: 0;\n height: 100%;\n z-index: 1;\n transform: translateX(100%);\n\n &.open {\n transform: translateX(0);\n }\n }\n\n &.open {\n visibility: visible;\n }\n\n &.animate {\n transition: transform 0.35s, visibility 0.35s, box-shadow 0.35s;\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n }\n}\n\n.flyout-nav {\n @extend %font-curve-small;\n\n display: flex;\n justify-content: space-between;\n min-height: 3.5rem;\n\n // Change box-sizing to content-box to add 1px border width to flyout-nav hight.\n // This ensures flyout-nav has same hight as main-navigation-container.\n box-sizing: content-box;\n}\n\n.flyout-row {\n display: flex;\n gap: 1.5rem;\n\n @include mixins.max(lg) {\n display: grid;\n grid-template-columns: 1fr 1fr;\n }\n\n @include mixins.max(rg) {\n grid-template-columns: 1fr;\n }\n}\n\n.flyout-column {\n flex: 1;\n max-width: 25%;\n\n @include mixins.max(lg) {\n max-width: none;\n }\n\n h3 {\n @extend %font-curve-small;\n margin-top: 0;\n }\n}\n\n.flyout-back-button {\n @include mixins.container-padding();\n\n display: flex;\n align-items: center;\n font-size: functions.px-to-rem(16px);\n font-weight: 400;\n cursor: pointer;\n\n svg {\n width: 1.5rem;\n height: 1.5rem;\n }\n\n @include mixins.min(lg) {\n display: none;\n }\n}\n\n.flyout-close-button {\n @extend %nav-link;\n\n display: flex;\n align-items: center;\n margin-left: auto;\n padding: 0 1.5rem;\n cursor: pointer;\n\n svg {\n width: 1.5rem;\n height: 1.5rem;\n }\n\n @include mixins.max(lg) {\n display: none;\n }\n}\n\n.flyout-linklist {\n @extend %no-list;\n\n li {\n border-top: 1px solid color.$gray-10;\n }\n\n &:first-child > li {\n border-top-color: transparent;\n }\n}\n\n.flyout-link {\n @extend %nav-link;\n\n display: block;\n padding: 0.75rem 0;\n}\n\n.flyout-title {\n @extend %font-curve-bigger-regular;\n\n margin: 2.5rem 0 1.5rem 0;\n\n @include mixins.min(lg) {\n display: none;\n }\n}\n","import { Component, Host, h, State, Method, Event, Element, EventEmitter } from '@stencil/core';\nimport { throttle } from 'throttle-debounce';\nimport { state } from '../../data/store';\nimport {\n DropdownElement,\n DropdownEvent,\n HasDropdown,\n IsFocusable,\n NavMainEntity,\n} from '../../models/header.model';\nimport { userPrefersReducedMotion } from '../../services/ui.service';\nimport { translate } from '../../services/language.service';\nimport { SvgSprite } from '../../utils/svg-sprite.component';\nimport { SvgIcon } from '../../utils/svg-icon.component';\nimport { LevelOneAction } from './components/level-one-action.component';\n\n@Component({\n tag: 'post-main-navigation',\n styleUrl: 'post-main-navigation.scss',\n shadow: true,\n})\nexport class PostMainNavigation implements HasDropdown, IsFocusable {\n @State() activeFlyout: string | null;\n @State() mobileMenuOpen: boolean;\n @Event() dropdownToggled: EventEmitter<DropdownEvent>;\n @Event() flyoutToggled: EventEmitter<string | null>;\n @Element() host: DropdownElement;\n private throttledResize: throttle<() => void>;\n private resizeTimer: number | null = null;\n private mouseLeaveTimer: number | null = null;\n private mouseEnterTimer: number | null = null;\n\n connectedCallback() {\n this.throttledResize = throttle(300, () => this.handleResize());\n window.addEventListener('resize', this.throttledResize, { passive: true });\n this.setWindowHeight();\n }\n\n disconnectedCallback() {\n window.removeEventListener('resize', this.throttledResize);\n if (this.mouseEnterTimer !== null) window.clearTimeout(this.mouseEnterTimer);\n if (this.mouseLeaveTimer !== null) window.clearTimeout(this.mouseLeaveTimer);\n }\n\n handleResize() {\n // Suspend all animations and transitions on window resize\n this.host.classList.add('no-animation');\n if (this.resizeTimer !== null) window.clearTimeout(this.resizeTimer);\n this.resizeTimer = window.setTimeout(() => {\n this.host.classList.remove('no-animation');\n }, 300);\n\n this.setWindowHeight();\n }\n\n // Update window height var\n setWindowHeight() {\n if (!this.host) {\n return;\n }\n this.host.style.setProperty('--window-height', `${window.innerHeight}px`);\n\n // Safari might or might not show a blank bar at the bottom where the browser\n // controls should be. This timeout waits for this bar to appear before resetting the available height\n window.setTimeout(() => {\n this.host.style.setProperty('--window-height', `${window.innerHeight}px`);\n }, 100);\n }\n\n openFlyout(id: string) {\n const flyout = this.host.shadowRoot?.getElementById(id);\n\n if (flyout && this.activeFlyout !== '') {\n // Add flyout animation if there's no flyout open\n this.addFlyoutAnimation(flyout, 'expand');\n }\n\n this.activeFlyout = id;\n this.flyoutToggled.emit(id);\n this.setWindowHeight();\n\n if (this.mouseLeaveTimer !== null) {\n window.clearTimeout(this.mouseLeaveTimer);\n this.mouseLeaveTimer = null;\n }\n }\n\n closeFlyout(id?: string, manageFocus = true) {\n if (id === undefined) return;\n const flyout = this.host.shadowRoot?.getElementById(id);\n\n if (flyout) {\n // Add flyout animation for close action\n this.addFlyoutAnimation(flyout, 'collapse', manageFocus);\n }\n\n this.activeFlyout = null;\n this.flyoutToggled.emit();\n }\n\n addFlyoutAnimation(flyout: HTMLElement, direction?: 'expand' | 'collapse', manageFocus = true) {\n // Check if user prefers to see animations or not\n if (!userPrefersReducedMotion()) {\n flyout.classList.add('animate');\n\n // Remove flyout animation after transition ended\n flyout.addEventListener(\n 'transitionend',\n () => {\n if (manageFocus) {\n if (direction === 'expand') {\n flyout.querySelector<HTMLElement>('button.flyout-back-button')?.focus();\n } else if (direction === 'collapse') {\n flyout.parentElement?.querySelector<HTMLElement>('a.main-link')?.focus();\n }\n }\n\n flyout.classList.remove('animate');\n },\n {\n once: true,\n },\n );\n }\n }\n\n isActiveFlyout(id?: string) {\n return id === this.activeFlyout;\n }\n\n handleMouseEnter(level: NavMainEntity) {\n // Cancel opening the flyout if there already is one scheduled to open\n if (this.mouseEnterTimer !== null) {\n window.clearTimeout(this.mouseEnterTimer);\n this.mouseEnterTimer = null;\n }\n\n // Cancel closing if we enter again\n if (this.mouseLeaveTimer && this.activeFlyout === level.id) {\n window.clearTimeout(this.mouseLeaveTimer);\n this.mouseLeaveTimer = null;\n }\n\n if (window.innerWidth >= 1024 && level.flyout.length > 0 && this.activeFlyout !== level.id) {\n // Delay opening the flyout for a moment to give users a chance to move the mouse over the navigation without triggering the flyout\n this.mouseEnterTimer = window.setTimeout(() => {\n this.mouseEnterTimer = null;\n if (level.id !== undefined) this.openFlyout(level.id);\n }, 200);\n }\n }\n\n handleMouseLeave(level: NavMainEntity) {\n // Cancel opening the flyout if a mouseleave event happens before the flyout opened\n if (this.mouseEnterTimer !== null) {\n window.clearTimeout(this.mouseEnterTimer);\n }\n\n // Don't close an open flyout if the mouseleave is from another mainnav entry\n if (this.activeFlyout && this.activeFlyout !== level.id) {\n return;\n }\n\n if (window.innerWidth >= 1024 && level.flyout.length > 0) {\n // Allow the pointer to shortly leave the flyout without closing it. This\n // allows for user mistakes and makes the experience less nervous\n this.mouseLeaveTimer = window.setTimeout(() => {\n this.closeFlyout(level.id, false);\n }, 300);\n }\n }\n\n handleTouchEnd(event: TouchEvent, level: NavMainEntity) {\n if (!this.isActiveFlyout(level.id) && !level.noFlyout) {\n // It's the first touchstart and has a flyout, prevent link activation and open the flyout\n if (event.cancelable) event.preventDefault();\n if (level.id) this.openFlyout(level.id);\n }\n }\n\n handleKeyPress(event: KeyboardEvent, level: NavMainEntity) {\n if (event.key === 'Enter' && !this.isActiveFlyout(level.id) && !level.noFlyout) {\n // It's the first enter keypress and has a flyout, prevent link activation and open the flyout\n event.preventDefault();\n if (level.id) this.openFlyout(level.id);\n }\n }\n\n handleClick(event: MouseEvent, level: NavMainEntity) {\n if (!this.isActiveFlyout(level.id) && !level.noFlyout) {\n // It's the first click, always open the flyout, never the link\n // This is relevant for desktop with active screenreader which\n // translates an enter keypress to a click\n event.preventDefault();\n if (level.id) this.openFlyout(level.id);\n }\n }\n\n /**\n * Toggle the main navigation (only visible on mobile)\n * @param force Force a state\n * @returns Boolean indicating new state\n */\n @Method()\n async toggleDropdown(force?: boolean) {\n this.mobileMenuOpen = force === undefined ? !this.mobileMenuOpen : force;\n this.dropdownToggled.emit({ open: this.mobileMenuOpen, element: this.host });\n\n if (force === false) {\n this.closeFlyout();\n }\n\n this.setWindowHeight();\n\n return this.mobileMenuOpen;\n }\n\n /**\n * Focus the main navigation toggle button\n */\n @Method()\n async setFocus() {\n const firstLink = this.host.shadowRoot?.querySelector<HTMLElement>('.main-link');\n if (firstLink) {\n firstLink.focus();\n }\n }\n\n /**\n * Open a specific flyout\n * @param id Flyout ID\n */\n @Method()\n async setActiveFlyout(id: string | null) {\n this.activeFlyout = id;\n this.flyoutToggled.emit(this.activeFlyout);\n }\n\n render() {\n if (state.localizedConfig?.header === undefined) return;\n const headerConfig = state.localizedConfig.header;\n\n return (\n <Host>\n <SvgSprite />\n <nav\n aria-label={headerConfig.translations.navMainAriaLabel}\n id=\"post-internet-header-main-navigation\"\n class={{ 'main-navigation': true, 'open': this.mobileMenuOpen }}\n role=\"menu\"\n >\n <ul class=\"main-container container\">\n {headerConfig.navMain.map(levelOne => (\n <li\n key={levelOne.text}\n onMouseLeave={() => this.handleMouseLeave(levelOne)}\n onMouseEnter={() => this.handleMouseEnter(levelOne)}\n >\n <LevelOneAction\n level={levelOne}\n isOpen={this.isActiveFlyout(levelOne.id)}\n onTouchEnd={e => this.handleTouchEnd(e, levelOne)}\n onKeyDown={e => this.handleKeyPress(e, levelOne)}\n onClick={e => this.handleClick(e, levelOne)}\n />\n {!levelOne.noFlyout ? renderLevelOneFlyout.bind(this)(levelOne) : null}\n </li>\n ))}\n </ul>\n <slot></slot>\n </nav>\n </Host>\n );\n\n function renderLevelOneFlyout(levelOne: NavMainEntity) {\n return (\n <div id={levelOne.id} class={{ flyout: true, open: this.isActiveFlyout(levelOne.id) }}>\n <div class=\"wide-container\">\n <div class=\"flyout-nav\">\n <button\n class=\"nav-link flyout-back-button\"\n onClick={() => this.closeFlyout(levelOne.id)}\n >\n <SvgIcon name=\"pi-pointy-arrow-right\" classNames=\"mirrored\" />\n <span>{headerConfig.translations.backButtonText}</span>\n </button>\n <button class=\"flyout-close-button\" onClick={() => this.closeFlyout(levelOne.id)}>\n <span class=\"visually-hidden\">\n {levelOne.text}, {headerConfig.translations.mobileNavToggleClose}\n </span>\n <SvgIcon name=\"pi-close\" />\n </button>\n </div>\n <h2 class=\"flyout-title container\">\n <a href={levelOne.url} class=\"nav-link\">\n {levelOne.text}\n </a>\n </h2>\n <div class=\"flyout-row container\">\n {levelOne.flyout.map((flyout, i) => (\n <div key={flyout.title} class=\"flyout-column\">\n {flyout.title ? <h3 id={`${levelOne.id}-column-${i}`}>{flyout.title}</h3> : null}\n <ul\n class=\"flyout-linklist\"\n aria-labelledby={flyout.title ? `${levelOne.id}-column-${i}` : undefined}\n >\n {flyout.linkList.map(link => (\n <li key={link.url}>\n <a\n class={{\n 'flyout-link': true,\n 'active': !!link?.isActiveOverride,\n }}\n href={link.url}\n target={link.target}\n >\n {link.title}\n {link?.isActiveOverride ? (\n <span class=\"visually-hidden\">\n , {translate('Active navigation element')}\n </span>\n ) : null}\n </a>\n </li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["LevelOneAction","props","TagName","level","url","h","class","active","isActiveOverride","focus","isOpen","href","title","_a","trim","_b","_c","text","undefined","tabindex","noFlyout","onTouchEnd","e","onKeyDown","onClick","translate","postMainNavigationCss","PostMainNavigation","exports","this","resizeTimer","mouseLeaveTimer","mouseEnterTimer","class_1","prototype","connectedCallback","_this","throttledResize","throttle","handleResize","window","addEventListener","passive","setWindowHeight","disconnectedCallback","removeEventListener","clearTimeout","host","classList","add","setTimeout","remove","style","setProperty","concat","innerHeight","openFlyout","id","flyout","shadowRoot","getElementById","activeFlyout","addFlyoutAnimation","flyoutToggled","emit","closeFlyout","manageFocus","direction","userPrefersReducedMotion","querySelector","parentElement","once","isActiveFlyout","handleMouseEnter","innerWidth","length","handleMouseLeave","handleTouchEnd","event","cancelable","preventDefault","handleKeyPress","key","handleClick","toggleDropdown","force","mobileMenuOpen","dropdownToggled","open","element","setFocus","firstLink","setActiveFlyout","render","state","localizedConfig","header","headerConfig","Host","SvgSprite","translations","navMainAriaLabel","role","navMain","map","levelOne","onMouseLeave","onMouseEnter","renderLevelOneFlyout","bind","SvgIcon","name","classNames","backButtonText","mobileNavToggleClose","i","linkList","link","target"],"sources":["src/components/post-main-navigation/components/level-one-action.component.tsx","src/components/post-main-navigation/post-main-navigation.scss?tag=post-main-navigation&encapsulation=shadow","src/components/post-main-navigation/post-main-navigation.tsx"],"sourcesContent":["import { h } from '@stencil/core';\nimport { NavMainEntity } from '../../../models/header.model';\nimport { translate } from '../../../services/language.service';\n\nexport const LevelOneAction = (props: {\n level: NavMainEntity;\n isOpen: boolean;\n onTouchEnd: (e: any) => void;\n onKeyDown: (e: any) => void;\n onClick: (e: any) => void;\n}) => {\n const TagName = props.level.url ? 'a' : 'button';\n\n return (\n <TagName\n class={{\n 'main-link': true,\n 'active': !!props.level.isActiveOverride,\n 'focus': props.isOpen,\n }}\n href={props.level.url}\n title={\n props.level.title?.trim() && props.level.title?.trim() !== props.level.text?.trim()\n ? props.level.title\n : undefined\n }\n tabindex={props.level.url ? undefined : 0}\n aria-haspopup={!props.level.noFlyout + ''}\n aria-expanded={props.level.noFlyout ? null : props.isOpen + ''}\n onTouchEnd={e => props.onTouchEnd(e)}\n onKeyDown={e => props.onKeyDown(e)}\n onClick={e => props.onClick(e)}\n >\n <span>{props.level.text}</span>\n {props.level.isActiveOverride ? (\n <span class=\"visually-hidden\">{translate('Active navigation element')}</span>\n ) : null}\n <svg aria-hidden=\"true\">\n <use href=\"#pi-pointy-arrow-right\" />\n </svg>\n </TagName>\n );\n};\n","@use '@swisspost/design-system-styles/variables/color';\n@use '@swisspost/design-system-styles/placeholders/text';\n@use '@swisspost/design-system-styles/functions';\n@use '../../utils/utils.scss';\n@use '../../utils/mixins.scss';\n\n:host {\n --host-window-height: var(--window-height, 100vh);\n --calculated-header-height: calc(var(--header-height) + 1px);\n\n display: block;\n min-width: 0;\n height: var(--header-height);\n}\n\n:host(.no-animation) {\n * {\n animation: none !important;\n transition: none !important;\n }\n}\n\n.main-navigation,\n.main-container,\n.main-container li,\n.main-link {\n @include mixins.min(lg) {\n height: 100%;\n }\n}\n\n.main-navigation {\n font-size: functions.px-to-rem(18px);\n\n @include mixins.min(lg) {\n font-size: functions.px-to-rem(16px);\n margin: 0 0.75rem;\n }\n\n @include mixins.min(xl) {\n font-size: functions.px-to-rem(18px);\n }\n\n @include mixins.min(xxl) {\n font-size: functions.px-to-rem(20px);\n }\n\n @include mixins.max(lg) {\n position: absolute;\n top: var(--calculated-header-height);\n left: 0;\n background: white;\n height: calc(var(--host-window-height) - var(--calculated-header-height));\n width: 100%;\n margin: 0;\n overflow: hidden scroll;\n -webkit-overflow-scrolling: touch;\n overscroll-behavior: contain;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n z-index: -1;\n visibility: hidden;\n transform: translateY(-100%);\n transition: transform 0.35s, visibility 0.35s;\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n\n &.open {\n transform: translateY(0);\n visibility: visible;\n }\n }\n}\n\n.main-container {\n @extend %no-list;\n\n display: flex;\n align-items: center;\n justify-content: flex-start;\n\n @include mixins.max(lg) {\n flex-direction: column;\n align-items: stretch;\n justify-content: flex-start;\n padding-top: 2.5rem;\n padding-bottom: 2.5rem;\n\n > li + li {\n border-top: 1px solid color.$gray-10;\n }\n }\n\n @include mixins.min(lg) {\n padding-right: 0;\n padding-left: 0;\n }\n\n > li {\n flex: 0 1 auto;\n min-width: 0;\n }\n}\n\n.main-link {\n @extend %nav-link;\n\n display: flex;\n align-items: center;\n padding-right: 0.75rem;\n padding-left: 0.75rem;\n text-align: left;\n cursor: pointer;\n width: 100%;\n\n @include mixins.min(lg) {\n svg {\n display: none;\n }\n }\n\n @include mixins.max(lg) {\n display: flex;\n justify-content: space-between;\n align-items: center;\n font-weight: 300;\n padding: 0.625rem 0;\n width: 100%;\n text-align: left;\n\n svg {\n width: 1.5rem;\n height: 1.5rem;\n }\n }\n\n span {\n overflow: hidden;\n text-overflow: ellipsis;\n }\n}\n\n.main-link,\n.flyout-link {\n position: relative;\n color: black;\n\n &::after {\n content: '';\n position: absolute;\n bottom: -1px;\n left: 0;\n width: 100%;\n height: 4px;\n background-color: transparent;\n opacity: 0;\n transform: scaleX(0.8);\n transition: opacity 0.25s cubic-bezier(0.4, 0, 0.2, 1),\n transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n }\n\n &:hover,\n &.focus {\n &::after {\n background-color: color.$gray-20;\n opacity: 1;\n transform: scale(1);\n transition: opacity 0.25s cubic-bezier(0.4, 0, 0.2, 1),\n transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n }\n }\n\n &.active {\n font-weight: 700;\n\n &::after {\n background-color: color.$yellow;\n opacity: 1;\n transform: scale(1);\n }\n }\n}\n\n.flyout {\n left: 0;\n width: 100%;\n background: white;\n padding-bottom: 3rem;\n overflow: auto;\n overscroll-behavior: contain;\n visibility: hidden;\n\n @include mixins.min(lg) {\n position: absolute;\n top: 100%;\n max-height: calc(100vh - var(--header-height) - var(--meta-header-height) - 1px);\n z-index: -1;\n box-shadow: 0 0 1px 0 rgb(0 0 0 / 40%);\n transform: translateY(-100%);\n\n &.open {\n box-shadow: 0 0 8px 0 rgb(0 0 0 / 40%);\n transform: translateY(0);\n }\n }\n\n @include mixins.max(lg) {\n position: fixed;\n top: 0;\n height: 100%;\n z-index: 1;\n transform: translateX(100%);\n\n &.open {\n transform: translateX(0);\n }\n }\n\n &.open {\n visibility: visible;\n }\n\n &.animate {\n transition: transform 0.35s, visibility 0.35s, box-shadow 0.35s;\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n }\n}\n\n.flyout-nav {\n @extend %font-curve-small;\n\n display: flex;\n justify-content: space-between;\n min-height: 3.5rem;\n\n // Change box-sizing to content-box to add 1px border width to flyout-nav hight.\n // This ensures flyout-nav has same hight as main-navigation-container.\n box-sizing: content-box;\n}\n\n.flyout-row {\n display: flex;\n gap: 1.5rem;\n\n @include mixins.max(lg) {\n display: grid;\n grid-template-columns: 1fr 1fr;\n }\n\n @include mixins.max(rg) {\n grid-template-columns: 1fr;\n }\n}\n\n.flyout-column {\n flex: 1;\n max-width: 25%;\n\n @include mixins.max(lg) {\n max-width: none;\n }\n\n h3 {\n @extend %font-curve-small;\n margin-top: 0;\n }\n}\n\n.flyout-back-button {\n @include mixins.container-padding();\n\n display: flex;\n align-items: center;\n font-size: functions.px-to-rem(16px);\n font-weight: 400;\n cursor: pointer;\n\n svg {\n width: 1.5rem;\n height: 1.5rem;\n }\n\n @include mixins.min(lg) {\n display: none;\n }\n}\n\n.flyout-close-button {\n @extend %nav-link;\n\n display: flex;\n align-items: center;\n margin-left: auto;\n padding: 0 1.5rem;\n cursor: pointer;\n\n svg {\n width: 1.5rem;\n height: 1.5rem;\n }\n\n @include mixins.max(lg) {\n display: none;\n }\n}\n\n.flyout-linklist {\n @extend %no-list;\n\n li {\n border-top: 1px solid color.$gray-10;\n }\n\n &:first-child > li {\n border-top-color: transparent;\n }\n}\n\n.flyout-link {\n @extend %nav-link;\n\n display: block;\n padding: 0.75rem 0;\n}\n\n.flyout-title {\n @extend %font-curve-bigger-regular;\n\n margin: 2.5rem 0 1.5rem 0;\n\n @include mixins.min(lg) {\n display: none;\n }\n}\n","import { Component, Host, h, State, Method, Event, Element, EventEmitter } from '@stencil/core';\nimport { throttle } from 'throttle-debounce';\nimport { state } from '../../data/store';\nimport {\n DropdownElement,\n DropdownEvent,\n HasDropdown,\n IsFocusable,\n NavMainEntity,\n} from '../../models/header.model';\nimport { userPrefersReducedMotion } from '../../services/ui.service';\nimport { translate } from '../../services/language.service';\nimport { SvgSprite } from '../../utils/svg-sprite.component';\nimport { SvgIcon } from '../../utils/svg-icon.component';\nimport { LevelOneAction } from './components/level-one-action.component';\n\n@Component({\n tag: 'post-main-navigation',\n styleUrl: 'post-main-navigation.scss',\n shadow: true,\n})\nexport class PostMainNavigation implements HasDropdown, IsFocusable {\n @State() activeFlyout: string | null;\n @State() mobileMenuOpen: boolean;\n @Event() dropdownToggled: EventEmitter<DropdownEvent>;\n @Event() flyoutToggled: EventEmitter<string | null>;\n @Element() host: DropdownElement;\n private throttledResize: throttle<() => void>;\n private resizeTimer: number | null = null;\n private mouseLeaveTimer: number | null = null;\n private mouseEnterTimer: number | null = null;\n\n connectedCallback() {\n this.throttledResize = throttle(300, () => this.handleResize());\n window.addEventListener('resize', this.throttledResize, { passive: true });\n this.setWindowHeight();\n }\n\n disconnectedCallback() {\n window.removeEventListener('resize', this.throttledResize);\n if (this.mouseEnterTimer !== null) window.clearTimeout(this.mouseEnterTimer);\n if (this.mouseLeaveTimer !== null) window.clearTimeout(this.mouseLeaveTimer);\n }\n\n handleResize() {\n // Suspend all animations and transitions on window resize\n this.host.classList.add('no-animation');\n if (this.resizeTimer !== null) window.clearTimeout(this.resizeTimer);\n this.resizeTimer = window.setTimeout(() => {\n this.host.classList.remove('no-animation');\n }, 300);\n\n this.setWindowHeight();\n }\n\n // Update window height var\n setWindowHeight() {\n if (!this.host) {\n return;\n }\n this.host.style.setProperty('--window-height', `${window.innerHeight}px`);\n\n // Safari might or might not show a blank bar at the bottom where the browser\n // controls should be. This timeout waits for this bar to appear before resetting the available height\n window.setTimeout(() => {\n this.host.style.setProperty('--window-height', `${window.innerHeight}px`);\n }, 100);\n }\n\n openFlyout(id: string) {\n const flyout = this.host.shadowRoot?.getElementById(id);\n\n if (flyout && this.activeFlyout !== '') {\n // Add flyout animation if there's no flyout open\n this.addFlyoutAnimation(flyout, 'expand');\n }\n\n this.activeFlyout = id;\n this.flyoutToggled.emit(id);\n this.setWindowHeight();\n\n if (this.mouseLeaveTimer !== null) {\n window.clearTimeout(this.mouseLeaveTimer);\n this.mouseLeaveTimer = null;\n }\n }\n\n closeFlyout(id?: string, manageFocus = true) {\n if (id === undefined) return;\n const flyout = this.host.shadowRoot?.getElementById(id);\n\n if (flyout) {\n // Add flyout animation for close action\n this.addFlyoutAnimation(flyout, 'collapse', manageFocus);\n }\n\n this.activeFlyout = null;\n this.flyoutToggled.emit();\n }\n\n addFlyoutAnimation(flyout: HTMLElement, direction?: 'expand' | 'collapse', manageFocus = true) {\n // Check if user prefers to see animations or not\n if (!userPrefersReducedMotion()) {\n flyout.classList.add('animate');\n\n // Remove flyout animation after transition ended\n flyout.addEventListener(\n 'transitionend',\n () => {\n if (manageFocus) {\n if (direction === 'expand') {\n flyout.querySelector<HTMLElement>('button.flyout-back-button')?.focus();\n } else if (direction === 'collapse') {\n flyout.parentElement?.querySelector<HTMLElement>('a.main-link')?.focus();\n }\n }\n\n flyout.classList.remove('animate');\n },\n {\n once: true,\n },\n );\n }\n }\n\n isActiveFlyout(id?: string) {\n return id === this.activeFlyout;\n }\n\n handleMouseEnter(level: NavMainEntity) {\n // Cancel opening the flyout if there already is one scheduled to open\n if (this.mouseEnterTimer !== null) {\n window.clearTimeout(this.mouseEnterTimer);\n this.mouseEnterTimer = null;\n }\n\n // Cancel closing if we enter again\n if (this.mouseLeaveTimer && this.activeFlyout === level.id) {\n window.clearTimeout(this.mouseLeaveTimer);\n this.mouseLeaveTimer = null;\n }\n\n if (window.innerWidth >= 1024 && level.flyout.length > 0 && this.activeFlyout !== level.id) {\n // Delay opening the flyout for a moment to give users a chance to move the mouse over the navigation without triggering the flyout\n this.mouseEnterTimer = window.setTimeout(() => {\n this.mouseEnterTimer = null;\n if (level.id !== undefined) this.openFlyout(level.id);\n }, 200);\n }\n }\n\n handleMouseLeave(level: NavMainEntity) {\n // Cancel opening the flyout if a mouseleave event happens before the flyout opened\n if (this.mouseEnterTimer !== null) {\n window.clearTimeout(this.mouseEnterTimer);\n }\n\n // Don't close an open flyout if the mouseleave is from another mainnav entry\n if (this.activeFlyout && this.activeFlyout !== level.id) {\n return;\n }\n\n if (window.innerWidth >= 1024 && level.flyout.length > 0) {\n // Allow the pointer to shortly leave the flyout without closing it. This\n // allows for user mistakes and makes the experience less nervous\n this.mouseLeaveTimer = window.setTimeout(() => {\n this.closeFlyout(level.id, false);\n }, 300);\n }\n }\n\n handleTouchEnd(event: TouchEvent, level: NavMainEntity) {\n if (!this.isActiveFlyout(level.id) && !level.noFlyout) {\n // It's the first touchstart and has a flyout, prevent link activation and open the flyout\n if (event.cancelable) event.preventDefault();\n if (level.id) this.openFlyout(level.id);\n }\n }\n\n handleKeyPress(event: KeyboardEvent, level: NavMainEntity) {\n if (event.key === 'Enter' && !this.isActiveFlyout(level.id) && !level.noFlyout) {\n // It's the first enter keypress and has a flyout, prevent link activation and open the flyout\n event.preventDefault();\n if (level.id) this.openFlyout(level.id);\n }\n }\n\n handleClick(event: MouseEvent, level: NavMainEntity) {\n if (!this.isActiveFlyout(level.id) && !level.noFlyout) {\n // It's the first click, always open the flyout, never the link\n // This is relevant for desktop with active screenreader which\n // translates an enter keypress to a click\n event.preventDefault();\n if (level.id) this.openFlyout(level.id);\n }\n }\n\n /**\n * Toggle the main navigation (only visible on mobile)\n * @param force Force a state\n * @returns Boolean indicating new state\n */\n @Method()\n async toggleDropdown(force?: boolean) {\n this.mobileMenuOpen = force === undefined ? !this.mobileMenuOpen : force;\n this.dropdownToggled.emit({ open: this.mobileMenuOpen, element: this.host });\n\n if (force === false) {\n this.closeFlyout();\n }\n\n this.setWindowHeight();\n\n return this.mobileMenuOpen;\n }\n\n /**\n * Focus the main navigation toggle button\n */\n @Method()\n async setFocus() {\n const firstLink = this.host.shadowRoot?.querySelector<HTMLElement>('.main-link');\n if (firstLink) {\n firstLink.focus();\n }\n }\n\n /**\n * Open a specific flyout\n * @param id Flyout ID\n */\n @Method()\n async setActiveFlyout(id: string | null) {\n this.activeFlyout = id;\n this.flyoutToggled.emit(this.activeFlyout);\n }\n\n render() {\n if (state.localizedConfig?.header === undefined) return;\n const headerConfig = state.localizedConfig.header;\n\n return (\n <Host>\n <SvgSprite />\n <nav\n aria-label={headerConfig.translations.navMainAriaLabel}\n id=\"post-internet-header-main-navigation\"\n class={{ 'main-navigation': true, 'open': this.mobileMenuOpen }}\n role=\"menu\"\n >\n <ul class=\"main-container container\">\n {headerConfig.navMain.map(levelOne => (\n <li\n key={levelOne.text}\n onMouseLeave={() => this.handleMouseLeave(levelOne)}\n onMouseEnter={() => this.handleMouseEnter(levelOne)}\n >\n <LevelOneAction\n level={levelOne}\n isOpen={this.isActiveFlyout(levelOne.id)}\n onTouchEnd={e => this.handleTouchEnd(e, levelOne)}\n onKeyDown={e => this.handleKeyPress(e, levelOne)}\n onClick={e => this.handleClick(e, levelOne)}\n />\n {!levelOne.noFlyout ? renderLevelOneFlyout.bind(this)(levelOne) : null}\n </li>\n ))}\n </ul>\n <slot></slot>\n </nav>\n </Host>\n );\n\n function renderLevelOneFlyout(levelOne: NavMainEntity) {\n return (\n <div id={levelOne.id} class={{ flyout: true, open: this.isActiveFlyout(levelOne.id) }}>\n <div class=\"wide-container\">\n <div class=\"flyout-nav\">\n <button\n class=\"nav-link flyout-back-button\"\n onClick={() => this.closeFlyout(levelOne.id)}\n >\n <SvgIcon name=\"pi-pointy-arrow-right\" classNames=\"mirrored\" />\n <span>{headerConfig.translations.backButtonText}</span>\n </button>\n <button class=\"flyout-close-button\" onClick={() => this.closeFlyout(levelOne.id)}>\n <span class=\"visually-hidden\">\n {levelOne.text}, {headerConfig.translations.mobileNavToggleClose}\n </span>\n <SvgIcon name=\"pi-close\" />\n </button>\n </div>\n <h2 class=\"flyout-title container\">\n <a href={levelOne.url} class=\"nav-link\">\n {levelOne.text}\n </a>\n </h2>\n <div class=\"flyout-row container\">\n {levelOne.flyout.map((flyout, i) => (\n <div key={flyout.title} class=\"flyout-column\">\n {flyout.title ? <h3 id={`${levelOne.id}-column-${i}`}>{flyout.title}</h3> : null}\n <ul\n class=\"flyout-linklist\"\n aria-labelledby={flyout.title ? `${levelOne.id}-column-${i}` : undefined}\n >\n {flyout.linkList.map(link => (\n <li key={link.url}>\n <a\n class={{\n 'flyout-link': true,\n 'active': !!link?.isActiveOverride,\n }}\n href={link.url}\n target={link.target}\n >\n {link.title}\n {link?.isActiveOverride ? (\n <span class=\"visually-hidden\">\n , {translate('Active navigation element')}\n </span>\n ) : null}\n </a>\n </li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n }\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{r as t,c as e,h as i,H as o,g as n}from"./p-8e0a4d18.js";import{d as s,t as r}from"./p-a74b380d.js";import{g as a,p as l,t as d}from"./p-7bed0797.js";import{u as c}from"./p-8bf099a8.js";import{s as h,d as f}from"./p-459c3983.js";import{S as u}from"./p-b762fba9.js";import{S as p}from"./p-11d05acc.js";import{I as g}from"./p-a2f9d462.js";const m=(t,e)=>{if(e===false){return t}let i;t=y(t);if(e==="auto"||e==="exact"){if(w(t)){return v(t)}i=new URL(window.location.href)}else{try{i=new URL(e,document.location.origin)}catch(i){console.warn(`Active Route: ${e} is not a valid URL. Navigation highlighting has been disabled.`);return t}}const o=b(t,i,e);if(o.length===0){return t}const n=o[0];n.main.isActiveOverride=true;if(n.sub)n.sub.isActiveOverride=true;return t};const w=t=>t.filter((t=>t.isActive)).length>0;const v=t=>t.map((t=>Object.assign(Object.assign({},t),{isActiveOverride:t.isActive,flyout:t.flyout.map((t=>Object.assign(Object.assign({},t),{linkList:t.linkList.map((t=>Object.assign(Object.assign({},t),{isActiveOverride:t.isActive})))})))})));const y=t=>t.map((t=>Object.assign(Object.assign({},t),{isActiveOverride:false,flyout:t.flyout.map((t=>Object.assign(Object.assign({},t),{linkList:t.linkList.map((t=>Object.assign(Object.assign({},t),{isActiveOverride:false})))})))})));const b=(t,e,i)=>{let o=false;const n=[];t.filter((t=>!o&&t)).forEach((t=>{try{const s=k(e,new URL(t.url),i);o=x(n,s,{main:t,score:s},o)}catch(t){}t.flyout.forEach((s=>{var r;(r=s.linkList)===null||r===void 0?void 0:r.forEach((s=>{if(s.isActive&&(i==="auto"||i==="exact")){o=true;return}try{const r=new URL(s.url);const a=k(e,r,i);o=x(n,a,{main:t,sub:s,score:a},o)}catch(t){}}))}))}));return n.sort(((t,e)=>e.score-t.score))};function x(t,e,i,o){let n=o;if(e>0){if(e===Infinity)n=true;t.push(i)}return n}const k=(t,e,i)=>{if(!t||!e||t.origin!==e.origin){return 0}const o=t.pathname.toLocaleLowerCase();const n=e.pathname.toLocaleLowerCase();if(o===n){return Infinity}if(t.pathname.length<e.pathname.length){return 0}if(i==="auto"){const i=[t.origin.toLocaleLowerCase(),...o.split("/").filter((t=>!!t))];const s=[e.origin.toLocaleLowerCase(),...n.split("/").filter((t=>!!t))];const r=j(i,s);return Math.min(i.length,s.length)===r?r:0}return 0};const j=(t,e)=>{if(!(t===null||t===void 0?void 0:t.length)||!(e===null||e===void 0?void 0:e.length)){return 0}let i=0;for(;i<Math.min(t.length,e.length);i++){if(t[i]!==e[i]){return 0}}return i};let O=null;let C=null;const F=()=>{const t=document.querySelector("#PPM_HEADER_DATA");if(t===null||t===void 0?void 0:t.textContent){return JSON.parse(t.textContent)}return null};const N=async({projectId:t,environment:e,language:i,cookieKey:o,localStorageKey:n,activeRouteProp:s,localizedCustomConfig:r,osFlyoutOverrides:d})=>{var c,h;const f=F();let u;let p=null;let g;if(f){u=f;g=document.documentElement.lang}else{if(!O){O=I(t,e)}p=await O;g=a(Object.keys(p),i,n,o);if(g===undefined){throw new Error("Internet Header: unable to determine current language")}u=Object.assign({},p[g])}if(r){const t=((c=r===null||r===void 0?void 0:r.header)===null||c===void 0?void 0:c.navMain)?Object.assign(Object.assign({},u.header),{navMain:[...u.header.navMain,...r.header.navMain]}):u.header;u=Object.assign(Object.assign({},u),{header:t})}if(d)u.header.navMain=P(u,d);if(s)u.header.navMain=m(u.header.navMain,s);R((h=u===null||u===void 0?void 0:u.header)===null||h===void 0?void 0:h.navMain);l(g,o,n);return u};const P=(t,e)=>{if(!e)return t.header.navMain;return t.header.navMain.map((t=>{var i,o;if(t.id!=="flyout_os")return t;if(C===null){C=JSON.parse(JSON.stringify(t))}const n=(i=e.text)!==null&&i!==void 0?i:C.text;const s=(o=e.title)!==null&&o!==void 0?o:C.title;if(!C.flyout||C.flyout.length===0||!e.flyout||e.flyout.length===0)return Object.assign(Object.assign({},t),{title:s,text:n});const r=[...C.flyout.map(((t,i)=>{var o;const n=e.flyout[i];const s=(o=n.title)!==null&&o!==void 0?o:t.title;const r=n.linkList?e.flyout[i].linkList:[];return{title:s,linkList:[...t.linkList,...r]}})),...e.flyout.slice(C.flyout.length)];return Object.assign(Object.assign({},t),{text:n,title:s,flyout:r})}))};const I=async(t,e)=>{if(!S(t)){throw new Error(`Internet Header: invalid project id "${t}"`)}if(t==="test"){e="int01"}let i=L(t,e);try{const t=await fetch(i);return await t.json()}catch(t){throw new Error(`Internet Header: fetching config failed. ${t.message}`)}};const L=(t,e)=>{if(t==="test")return"assets/config/test-configuration.json";const i=e.toLowerCase();const o=i==="prod";const n=`https://${o?"www":"int"}.post.ch`;try{return new URL(`${n}/api/headerjs/Json?serviceid=${encodeURIComponent(t)}${!o?"&environment="+i:""}`).toString()}catch(t){throw new Error(`Internet Header: Config URL is invalid.`)}};const S=t=>t!==""&&t.length>0&&/^[a-zA-Z][\w-]*[a-zA-Z0-9]$/.test(t);const z=(t,e)=>{var i;let o;try{o=typeof t==="string"?JSON.parse(t):t}catch(t){throw new Error(`Internet Header: Custom config is invalid. Make sure your custom config contains valid JSON syntax and matches the definition. `)}let n=o[e];if((i=n===null||n===void 0?void 0:n.header)===null||i===void 0?void 0:i.navMain)R(n.header.navMain);return n};const R=t=>{t.forEach((t=>{t.id=t.id==="flyout_os"?t.id:c("main-nav-")}))};const A="@swisspost/internet-header";const K="1.9.0";const W="The header for client facing applications.";const E="Swiss Post <oss@post.ch>";const M="Apache-2.0";const T={type:"git",url:"https://github.com/swisspost/design-system.git"};const $="https://next.design-system.post.ch";const D={url:"https://github.com/swisspost/design-system/issues"};const H="loader/index.cjs.js";const J="loader/index.js";const U="loader/index.es2017.js";const _="loader/index.es2017.js";const B="loader/index.d.ts";const q="dist/collection/collection-manifest.json";const X="loader/cdn.js";const Z={access:"public"};const G=["dist/","loader/"];const V={dev:"stencil build --serve --watch --docs-readme",start:"stencil build --watch --docs-readme",build:"stencil build --docs-readme",clean:"rimraf www dist loader",test:"npm run unit",unit:"jest","unit:watch":"jest --watch",e2e:"cypress run","e2e:watch":"cypress open",lint:"eslint src/**/*{.ts,.tsx}","lint:fix":"eslint src/**/*{.ts,.tsx} --fix",generate:"stencil generate"};const Q={"@stencil/core":"3.4.2","@stencil/store":"2.0.9","@swisspost/design-system-styles":"workspace:6.3.0","body-scroll-lock":"4.0.0-beta.0","iframe-resizer":"4.3.6",jquery:"3.7.0",tabbable:"6.2.0","throttle-debounce":"5.0.0","url-polyfill":"1.1.12"};const Y={"@babel/core":"7.22.10","@percy/cli":"1.26.3","@percy/cypress":"3.1.2","@stencil/eslint-plugin":"0.4.0","@stencil/sass":"3.0.5","@types/iframe-resizer":"3.5.9","@types/jest":"27.5.2","@types/jquery":"3.5.16","@types/node":"18.17.5","@types/throttle-debounce":"5.0.0","babel-loader":"9.1.3",bootstrap:"5.3.1",cypress:"12.17.3","cypress-each":"1.13.3","cypress-storybook":"0.5.1","eslint-plugin-react":"7.33.1",globby:"13.2.2",jest:"27.5.1",rimraf:"5.0.1","rollup-plugin-node-polyfills":"0.2.1","rollup-plugin-scss":"4.0.0","rollup-plugin-visualizer":"5.9.2",sass:"1.65.1","start-server-and-test":"2.0.0","ts-jest":"27.1.5",typescript:"4.9.5"};const tt={name:A,version:K,description:W,author:E,license:M,repository:T,homepage:$,bugs:D,main:H,module:J,es2015:U,es2017:_,"jsnext:main":"loader/index.es2017.js",types:B,collection:q,"collection:main":"dist/collection/index.js",unpkg:X,publishConfig:Z,files:G,scripts:V,dependencies:Q,devDependencies:Y};const et=(t,e)=>{const i=()=>{const i=h.stickyness==="full";let o=1;const n=e.clientHeight-1;const s=i?0:window.scrollY;if(t.clientHeight>0){o=Math.max((n-Math.max(s,0))/(n-t.clientHeight),1)}e.style.setProperty("--logo-scale",o.toString())};const o=s(150,i);const n=new IntersectionObserver((t=>{t.forEach((t=>{if(t.isIntersecting&&t.intersectionRatio>0){window.addEventListener("scroll",i,{passive:true});window.addEventListener("resize",o);window.requestAnimationFrame(i)}else{window.removeEventListener("scroll",i);window.removeEventListener("resize",o);window.requestAnimationFrame(i)}}))}),{threshold:[0,.001]});n.observe(t);return i};const it='@font-face{font-display:swap;font-family:"Frutiger Neue For Post";font-weight:700;src:url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-Bold.woff2") format("woff2"), url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-Bold.woff") format("woff")}@font-face{font-display:swap;font-family:"Frutiger Neue For Post";font-weight:700;font-style:italic;src:url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-BdIt.woff2") format("woff2"), url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-BdIt.woff") format("woff")}@font-face{font-display:swap;font-family:"Frutiger Neue For Post";font-weight:400;src:url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-Rg.woff2") format("woff2"), url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-Rg.woff") format("woff")}@font-face{font-display:swap;font-family:"Frutiger Neue For Post";font-weight:400;font-style:italic;src:url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-It.woff2") format("woff2"), url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-It.woff") format("woff")}@font-face{font-display:swap;font-family:"Frutiger Neue For Post";font-weight:300;src:url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-Lt.woff2") format("woff2"), url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-Lt.woff") format("woff")}@font-face{font-display:swap;font-family:"Frutiger Neue For Post";font-weight:300;font-style:italic;src:url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-LtIt.woff2") format("woff2"), url("https://fonts.post.ch/frutigerneueforpost/v2/FrutigerNeueforPostW05-LtIt.woff") format("woff")}.visually-hidden{position:absolute;width:1px;height:1px;border:0;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0)}.btn-blank{background-color:transparent;border:none;border-radius:0;padding:0}.nav-link{outline:none;outline-offset:2px;text-decoration:none;color:rgba(0, 0, 0, 0.8);-webkit-transition:color 200ms;transition:color 200ms;background-color:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;margin:0;cursor:pointer;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:0.5rem}.nav-link:is(:focus-visible,:focus-within,.pretend-focus){outline:2px solid var(--post-contrast-color)}.nav-link:hover,.nav-link:focus{color:black}.nav-link:focus-visible{z-index:1;position:relative}.nav-link>svg{width:1.4em;height:1.4em;-ms-flex-negative:0;flex-shrink:0}.nav-link>span{-ms-flex-negative:1;flex-shrink:1}.no-list{list-style:none;padding-left:0;margin-top:0;margin-bottom:0}*,:host,*::before,*::after{-webkit-box-sizing:border-box;box-sizing:border-box}:host{font-family:"Frutiger Neue For Post", system-ui, sans-serif}button{font:inherit;padding:0}a,button{border-radius:4px;outline:none;outline-offset:2px;}a:is(:focus-visible,:focus-within,.pretend-focus),button:is(:focus-visible,:focus-within,.pretend-focus){outline:2px solid var(--post-contrast-color);border-radius:4px}img,svg{max-width:100%;max-height:100%}@media (forced-colors: active){svg{color:white}}.box>*:first-child{margin-top:0}.box>*:last-child{margin-bottom:0}.mirrored{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.bold{font-weight:700}.light{font-weight:300}.d-flex{display:-ms-flexbox;display:flex}.d-inline-flex{display:-ms-inline-flexbox;display:inline-flex}.align-items-center{-ms-flex-align:center;align-items:center}@media (min-width: 1441px){.wide-container{margin:0 auto;max-width:1440px}}@media (max-width: 599.98px){.container{padding-right:16px;padding-left:16px}}@media (min-width: 600px) and (max-width: 1023.98px){.container{padding-right:32px;padding-left:32px}}@media (min-width: 1024px){.container{padding-right:40px;padding-left:40px}}@media (max-width: -0.02px){.hidden-xs{display:none}}@media (max-width: 399.98px){.hidden-sm{display:none}}@media (max-width: 599.98px){.hidden-rg{display:none}}@media (max-width: 779.98px){.hidden-md{display:none}}@media (max-width: 1023.98px){.hidden-lg{display:none}}@media (max-width: 1279.98px){.hidden-xl{display:none}}@media (max-width: 1440.98px){.hidden-xxl{display:none}}:host{--logo-scale:1}@media (max-width: 1023.98px){:host{--logo-scale:1 !important}}post-logo{height:var(--header-height);-webkit-transform-origin:bottom left;transform-origin:bottom left;-webkit-transform:scale(var(--logo-scale));transform:scale(var(--logo-scale))}post-main-navigation{margin-left:calc(var(--header-height) * var(--logo-scale) - var(--header-height))}:host{display:block;position:relative;font-size:1rem;font-weight:300;z-index:var(--header-z-index, 10);--header-height:3.5rem;--meta-header-height:0px;--language-dropdown-margin-top:0px}@media (min-width: 1024px){:host{--meta-header-height:3rem;--header-height:4rem}}@media (min-width: 1280px){:host{--header-height:4.5rem}}:host([meta=false]){--meta-header-height:0px;--language-dropdown-margin-top:1px}@supports ((position: -webkit-sticky) or (position: sticky)){:host(:not(.stickyness-none)){position:-webkit-sticky;position:sticky}:host(.stickyness-full){top:0}:host(.stickyness-main){top:calc(var(--meta-header-height, 0px) * -1)}:host(.stickyness-minimal){top:calc((var(--header-height, 0px) + var(--meta-header-height, 0px) + 1px) * -1);-webkit-transition:top 200ms ease-in;transition:top 200ms ease-in}:host(.stickyness-minimal.scrolling-up),:host(.stickyness-minimal.dropdown-open){top:calc(var(--meta-header-height, 0px) * -1);-webkit-transition:top 200ms ease-out;transition:top 200ms ease-out}}.post-internet-header{border-bottom:1px solid hsl(0, 0%, 90%);background-color:white}.main-navigation-container{display:-ms-flexbox;display:flex}.main-navigation-container>.main-navigation-controls{-ms-flex:0 0 auto;flex:0 0 auto}.main-navigation{display:-ms-flexbox;display:flex}.sub-navigation-container{position:absolute;top:100%;left:0;width:100%;display:-ms-flexbox;display:flex;background:white;visibility:hidden}.main-navigation-item:hover .sub-navigation-container{visibility:visible}.main-navigation-controls{display:-ms-flexbox;display:flex;margin-left:auto}@media (max-width: 1023.98px){.main-navigation-controls{font-weight:400}}@media (min-width: 1024px){.main-navigation-controls{font-size:1.0625rem}}.main-navigation-controls>*{border-left:1px solid hsl(0, 0%, 90%)}.menu-button{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:0 calc(1rem - 1px);font-weight:300;cursor:pointer;border-left:1px solid hsl(0, 0%, 90%);-ms-flex-order:1;order:1;}@media (min-width: 1024px){.menu-button{display:none}}@media (min-width: 600px) and (max-width: 1023.98px){.menu-button .visually-hidden{position:static;width:auto;height:auto;margin:auto;overflow:visible;clip:auto;visibility:visible;margin-right:0.5rem}}.menu-button svg{width:1.5rem;height:1.5rem}.full-width .wide-container{max-width:none}';const ot=class{async getCurrentLanguage(){var t;return(t=h.currentLanguage)!==null&&t!==void 0?t:"de"}constructor(i){t(this,i);this.headerLoaded=e(this,"headerLoaded",7);this.lastScrollTop=window.scrollY||document.documentElement.scrollTop;this.lastWindowWidth=window.innerWidth;this.handleClickOutsideBound=this.handleClickOutside.bind(this);this.project=undefined;this.stickyness="minimal";this.language=undefined;this.meta=true;this.login=true;this.search=true;this.skiplinks=true;this.configProxy=undefined;this.environment="prod";this.languageSwitchOverrides=undefined;this.customConfig=undefined;this.languageCookieKey=undefined;this.languageLocalStorageKey="swisspost-internet-header-language";this.activeRoute="auto";this.osFlyoutOverrides=undefined;this.fullWidth=false;this.activeFlyout=null;this.activeDropdownElement=null;if(this.project===undefined||this.project===""||!S(this.project)){throw new Error(`Internet Header project key is "${this.project}". Please provide a valid project key.`)}}connectedCallback(){this.throttledScroll=r(300,(()=>this.handleScrollEvent()));this.debouncedResize=s(200,(()=>this.handleResize()));window.addEventListener("scroll",this.throttledScroll,{passive:true});window.addEventListener("resize",this.debouncedResize,{passive:true})}disconnectedCallback(){window.removeEventListener("scroll",this.throttledScroll);window.removeEventListener("resize",this.debouncedResize);f()}async componentWillLoad(){try{h.projectId=this.project;h.stickyness=this.stickyness;h.environment=this.environment.toLocaleLowerCase();if(this.language!==undefined)h.currentLanguage=this.language;h.languageSwitchOverrides=typeof this.languageSwitchOverrides==="string"?JSON.parse(this.languageSwitchOverrides):this.languageSwitchOverrides;h.osFlyoutOverrides=typeof this.osFlyoutOverrides==="string"?JSON.parse(this.osFlyoutOverrides):this.osFlyoutOverrides;if(this.customConfig!==undefined&&h.currentLanguage!==null){h.localizedCustomConfig=z(this.customConfig,h.currentLanguage)}h.localizedConfig=await N({projectId:this.project,environment:h.environment,language:this.language,cookieKey:this.languageCookieKey,localStorageKey:this.languageLocalStorageKey,activeRouteProp:this.activeRoute,localizedCustomConfig:h.localizedCustomConfig,osFlyoutOverrides:h.osFlyoutOverrides})}catch(t){console.error(t)}}componentDidLoad(){window.requestAnimationFrame((()=>{this.handleResize();this.headerLoaded.emit();this.host.classList.add("header-loaded");if(this.meta&&this.metaNav){this.updateLogoAnimation=et(this.metaNav,this.host)}}));if(this.stickyness==="full")console.warn('Internet Header: The stickyness="full" option is deprecated.')}async handleLanguageChange(t){h.currentLanguage=t;h.localizedConfig=await N({projectId:this.project,environment:this.environment,language:t,cookieKey:this.languageCookieKey,localStorageKey:this.languageLocalStorageKey,activeRouteProp:this.activeRoute,localizedCustomConfig:h.localizedCustomConfig,osFlyoutOverrides:h.osFlyoutOverrides});if(this.customConfig)h.localizedCustomConfig=z(this.customConfig,t)}handleAvailableLanguagesChage(t){h.languageSwitchOverrides=typeof t==="string"?JSON.parse(t):t}async handleOsFlyoutOverrides(t){h.osFlyoutOverrides=typeof t==="string"?JSON.parse(t):t;h.localizedConfig=await N({projectId:this.project,environment:this.environment,language:this.language,cookieKey:this.languageCookieKey,localStorageKey:this.languageLocalStorageKey,activeRouteProp:this.activeRoute,localizedCustomConfig:h.localizedCustomConfig,osFlyoutOverrides:h.osFlyoutOverrides})}async handleActiveRouteChange(t){h.localizedConfig=await N({projectId:this.project,environment:this.environment,language:this.language,cookieKey:this.languageCookieKey,localStorageKey:this.languageLocalStorageKey,activeRouteProp:t,localizedCustomConfig:h.localizedCustomConfig,osFlyoutOverrides:h.osFlyoutOverrides})}async handleCustomConfigChange(t){if(this.language===undefined)return;const e=z(t,this.language);h.localizedCustomConfig=e;h.localizedConfig=await N({projectId:this.project,environment:this.environment,language:this.language,cookieKey:this.languageCookieKey,localStorageKey:this.languageLocalStorageKey,activeRouteProp:this.activeRoute,localizedCustomConfig:e,osFlyoutOverrides:h.osFlyoutOverrides})}handleSearchChange(t){h.search=t}handleLoginChange(t){h.login=t}handleMetaChange(t){h.meta=t}handleLanguageChangeEvent(t){this.handleLanguageChange(t.detail)}handleStickynessChange(t){h.stickyness=t;this.updateLogoAnimation()}handleClickOutside(t){if(this.activeDropdownElement&&!t.composedPath().includes(this.activeDropdownElement)){this.activeDropdownElement.toggleDropdown(false)}}handleKeyUp(t){if(t.key==="Escape"){if(this.activeDropdownElement){this.activeDropdownElement.toggleDropdown(false)}if(this.activeFlyout!==null&&this.mainNav){this.mainNav.toggleDropdown(false)}}}handleScrollEvent(){const t=window.scrollY||document.documentElement.scrollTop;if(this.stickyness==="minimal"){this.host.classList.toggle("scrolling-up",t<=this.lastScrollTop)}this.lastScrollTop=t<=0?0:t}handleResize(){var t;if(this.isMainNavOpen()&&this.lastWindowWidth<1024&&window.innerWidth>=1024){(t=this.activeDropdownElement)===null||t===void 0?void 0:t.toggleDropdown(false)}this.lastWindowWidth=window.innerWidth}handleDropdownToggled(t){if(!t.detail.open&&this.activeDropdownElement!==t.detail.element){return}if(t.detail.open===true){if(this.activeDropdownElement){this.activeDropdownElement.toggleDropdown(false)}this.activeDropdownElement=t.detail.element;if(window.innerWidth>=1024){window.setTimeout((()=>{window.addEventListener("click",this.handleClickOutsideBound)}),10)}if(this.activeFlyout!==null&&this.mainNav){this.mainNav.setActiveFlyout(null)}}else{this.activeDropdownElement=null;window.removeEventListener("click",this.handleClickOutsideBound)}}handleFlyoutToggled(t){this.activeFlyout=t.detail;if(this.activeDropdownElement&&t.detail&&!this.isMainNavOpen()){this.activeDropdownElement.toggleDropdown(false)}}toggleMobileDropdown(){var t;(t=this.mainNav)===null||t===void 0?void 0:t.toggleDropdown()}isMainNavOpen(){return this.activeDropdownElement&&this.activeDropdownElement.tagName==="POST-MAIN-NAVIGATION"}render(){var t,e,n;if(!((t=h.localizedConfig)===null||t===void 0?void 0:t.header)){console.error(new Error("Internet Header: Config cannot be loaded"));return}const s=h.localizedConfig;const r=this.meta&&s.header.navMeta!==undefined&&((e=s.header.navMeta)===null||e===void 0?void 0:e.filter((t=>!t.isHomeLink)).length)>0;const a=((n=this.login)!==null&&n!==void 0?n:!s.header.isLoginWidgetHidden)&&s.header.loginWidgetOptions;const l=s.header.navLang.length>1;return i(o,{class:`stickyness-${this.stickyness} ${this.activeDropdownElement||this.activeFlyout?"dropdown-open":""}`,"data-version":tt.version,onKeyup:t=>this.handleKeyUp(t)},i("header",{class:`post-internet-header${this.fullWidth?" full-width":""}`},i(u,null),i("h1",{class:"visually-hidden"},d("Navigate on post.ch")),i(g,{condition:this.skiplinks===true},i("post-skiplinks",null)),i(g,{condition:r===true},i("post-meta-navigation",{orientation:"horizontal",class:"hidden-lg","full-width":this.fullWidth,ref:t=>this.metaNav=t},i(g,{condition:l===true},i("post-language-switch",{id:"post-language-switch-desktop",mode:"dropdown",onDropdownToggled:t=>this.handleDropdownToggled(t)})))),i("div",{class:"main-navigation-container wide-container"},i("post-logo",null),i("button",{class:"menu-button nav-link",onClick:()=>this.toggleMobileDropdown(),"aria-haspopup":"menu","aria-controls":"post-internet-header-main-navigation","aria-expanded":this.activeDropdownElement?"true":"false"},i("span",{class:"menu-button-text visually-hidden"},s.header.mobileMenu.text),i(p,{name:this.isMainNavOpen()?"pi-close":"pi-menu"})),i("post-main-navigation",{onDropdownToggled:t=>this.handleDropdownToggled(t),onFlyoutToggled:t=>this.handleFlyoutToggled(t),ref:t=>this.mainNav=t},i(g,{condition:r===true},i("post-meta-navigation",{orientation:"vertical"},i(g,{condition:l===true},i("post-language-switch",{id:"post-language-switch-mobile",mode:"list"}))))),i("div",{class:"main-navigation-controls"},i(g,{condition:this.search!==false},i("post-search",{onDropdownToggled:t=>this.handleDropdownToggled(t)})),i(g,{condition:!!a},i("post-klp-login-widget",null,i("slot",{name:"login-widget"}))),i(g,{condition:r===false&&l===true},i("post-language-switch",{id:"post-language-switch-no-meta",onDropdownToggled:t=>this.handleDropdownToggled(t),mode:"dropdown"})),i("slot",{name:"main"})))))}get host(){return n(this)}static get watchers(){return{language:["handleLanguageChange"],languageSwitchOverrides:["handleAvailableLanguagesChage"],osFlyoutOverrides:["handleOsFlyoutOverrides"],activeRoute:["handleActiveRouteChange"],customConfig:["handleCustomConfigChange"],search:["handleSearchChange"],login:["handleLoginChange"],meta:["handleMetaChange"],stickyness:["handleStickynessChange"]}}};ot.style=it;export{ot as swisspost_internet_header};
2
+ //# sourceMappingURL=p-b33e74a6.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["markActiveRoute","config","activeRouteProp","compareUrl","resetOverrideConfig","hasActivePortalRoute","resetActiveStateToPortalConfig","URL","window","location","href","document","origin","error","console","warn","scoreList","compileScoreList","length","winnerPair","main","isActiveOverride","sub","filter","nav","isActive","map","Object","assign","flyout","linkList","link","hadAnyActiveLink","mainNav","forEach","score","compareRoutes","url","updateScoreList","_a","linklist","sort","a","b","scoreListItem","hadActiveLink","Infinity","push","baseUrl","matchMode","baseUrlPath","pathname","toLocaleLowerCase","compareUrlPath","baseSegments","split","x","compareSegments","getSimilarityScore","Math","min","i","request","osFlyoutCache","getPPMConfig","ppmConfigScript","querySelector","textContent","JSON","parse","getLocalizedConfig","async","projectId","environment","language","cookieKey","localStorageKey","localizedCustomConfig","osFlyoutOverrides","ppmConfig","localizedConfig","lang","documentElement","fetchConfig","getUserLang","keys","undefined","Error","header","navMain","mergeOsFlyoutOverrides","setMainNavigationIds","_b","persistLanguageChoice","id","stringify","mainNavText","text","mainNavTitle","title","mainNavFlyout","col","index","overrides","slice","isValidProjectId","generateConfigUrl","res","fetch","json","message","parsedEnvironment","toLowerCase","isProd","host","encodeURIComponent","toString","test","getLocalizedCustomConfig","customConfig","navMainEntities","navMainEntity","uniqueId","registerLogoAnimationObserver","target","headerRef","handleScroll","fullStickyness","state","stickyness","scale","adjustedHeaderHeight","clientHeight","scrollY","max","style","setProperty","debounced","debounce","observer","IntersectionObserver","entries","entry","isIntersecting","intersectionRatio","addEventListener","passive","requestAnimationFrame","removeEventListener","threshold","observe","postInternetHeaderCss","PostInternetHeader","currentLanguage","constructor","hostRef","this","lastScrollTop","scrollTop","lastWindowWidth","innerWidth","handleClickOutsideBound","handleClickOutside","bind","project","connectedCallback","throttledScroll","throttle","handleScrollEvent","debouncedResize","handleResize","disconnectedCallback","dispose","languageSwitchOverrides","languageCookieKey","languageLocalStorageKey","activeRoute","componentDidLoad","headerLoaded","emit","classList","add","meta","metaNav","updateLogoAnimation","newValue","handleAvailableLanguagesChage","handleSearchChange","search","handleLoginChange","login","handleMetaChange","handleLanguageChangeEvent","event","handleLanguageChange","detail","handleStickynessChange","activeDropdownElement","composedPath","includes","toggleDropdown","handleKeyUp","key","activeFlyout","st","toggle","isMainNavOpen","handleDropdownToggled","open","element","setTimeout","setActiveFlyout","handleFlyoutToggled","toggleMobileDropdown","tagName","render","renderMetaNavigation","navMeta","isHomeLink","renderLogin","_c","isLoginWidgetHidden","loginWidgetOptions","renderLanguageSwitch","navLang","h","Host","class","packageJson","version","onKeyup","e","fullWidth","SvgSprite","translate","If","condition","skiplinks","orientation","ref","el","mode","onDropdownToggled","onClick","mobileMenu","SvgIcon","name","onFlyoutToggled"],"sources":["./src/services/route.service.ts","./src/services/config.service.ts","./src/components/post-internet-header/logo-animation/logo-animation.ts","./src/components/post-internet-header/post-internet-header.scss?tag=swisspost-internet-header&encapsulation=shadow","./src/components/post-internet-header/post-internet-header.tsx"],"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\n .filter(mainNav => !hadAnyActiveLink && mainNav)\n .forEach(mainNav => {\n try {\n const score = compareRoutes(\n compareUrl,\n new URL(mainNav.url),\n activeRouteProp as 'auto' | 'exact',\n );\n\n hadAnyActiveLink = updateScoreList(\n scoreList,\n score,\n { main: mainNav, score },\n hadAnyActiveLink,\n );\n } catch {\n // Not a valid url, continue\n }\n\n // Loop through flyout links 2nd level\n mainNav.flyout.forEach(flyout => {\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\n hadAnyActiveLink = updateScoreList(\n scoreList,\n score,\n { main: mainNav, sub: linklist, score },\n hadAnyActiveLink,\n );\n } catch {\n // Not a valid URL, continue\n }\n });\n });\n });\n\n return scoreList.sort((a, b) => b.score - a.score);\n};\n\n/**\n * Update score list\n */\nfunction updateScoreList(\n scoreList: MainNavScoreList,\n score: number,\n scoreListItem: any,\n hadAnyActiveLink: boolean,\n) {\n let hadActiveLink = hadAnyActiveLink;\n\n if (score > 0) {\n if (score === Infinity) hadActiveLink = true;\n // Push score\n scoreList.push(scoreListItem);\n }\n\n return hadActiveLink;\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 const baseUrlPath = baseUrl.pathname.toLocaleLowerCase();\n const compareUrlPath = compareUrl.pathname.toLocaleLowerCase();\n\n // Exact match, origin and pathname are the same\n if (baseUrlPath === compareUrlPath) {\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 = [\n baseUrl.origin.toLocaleLowerCase(),\n ...baseUrlPath.split('/').filter(x => !!x),\n ];\n const compareSegments = [\n compareUrl.origin.toLocaleLowerCase(),\n ...compareUrlPath.split('/').filter(x => !!x),\n ];\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","import {\n Environment,\n IPortalConfig,\n ILocalizedConfig,\n ICustomConfig,\n ILocalizedCustomConfig,\n LocalizedConfigParameters,\n} from '../models/general.model';\nimport { NavMainEntity } from '../models/header.model';\nimport { getUserLang, persistLanguageChoice } from './language.service';\nimport { uniqueId } from '../utils/utils';\nimport { markActiveRoute } from './route.service';\n\n// Prevent double requests\nlet request: Promise<IPortalConfig> | null = null;\n\n// Cache the original os flyout to use it for updates\nlet osFlyoutCache: NavMainEntity | null = null;\n\nconst getPPMConfig = (): ILocalizedConfig | null => {\n const ppmConfigScript = document.querySelector('#PPM_HEADER_DATA');\n\n if (ppmConfigScript?.textContent) {\n return JSON.parse(ppmConfigScript.textContent);\n }\n\n return null;\n};\n\n/**\n * Get a localized config object\n *\n * @param projectId String identifying the project\n * @param language [optional] Preferred language\n * @returns Localized config object\n */\nexport const getLocalizedConfig = async ({\n projectId,\n environment,\n language,\n cookieKey,\n localStorageKey,\n activeRouteProp,\n localizedCustomConfig,\n osFlyoutOverrides,\n}: LocalizedConfigParameters): Promise<ILocalizedConfig> => {\n const ppmConfig = getPPMConfig();\n let localizedConfig: ILocalizedConfig;\n let config: IPortalConfig | null = null;\n let lang: string | undefined;\n\n if (ppmConfig) {\n localizedConfig = ppmConfig;\n lang = document.documentElement.lang;\n } else {\n if (!request) {\n request = fetchConfig(projectId, environment);\n }\n\n config = await request;\n lang = getUserLang(Object.keys(config), language, localStorageKey, cookieKey);\n\n if (lang === undefined) {\n throw new Error('Internet Header: unable to determine current language');\n }\n\n // Clone config for more predictable state updates\n localizedConfig = { ...config[lang] };\n }\n\n // Merge custom config with portal config\n if (localizedCustomConfig) {\n const header = localizedCustomConfig?.header?.navMain\n ? {\n ...localizedConfig.header,\n navMain: [...localizedConfig.header.navMain, ...localizedCustomConfig.header.navMain],\n }\n : localizedConfig.header;\n localizedConfig = {\n ...localizedConfig,\n header,\n };\n }\n\n // Add entries to flyout_os\n if (osFlyoutOverrides)\n localizedConfig.header.navMain = mergeOsFlyoutOverrides(localizedConfig, osFlyoutOverrides);\n\n // Mark active route\n if (activeRouteProp)\n localizedConfig.header.navMain = markActiveRoute(\n localizedConfig.header.navMain,\n activeRouteProp,\n );\n\n setMainNavigationIds(localizedConfig?.header?.navMain);\n\n // Set the new language choice\n persistLanguageChoice(lang, cookieKey, localStorageKey);\n\n return localizedConfig;\n};\n\n/**\n * Merge portal config with custom os flyout overrides\n * @param config Localized config\n * @param osFlyoutOverrides Overrides for the flyout\n * @returns Merged localized config\n */\nexport const mergeOsFlyoutOverrides = (\n config: ILocalizedConfig,\n osFlyoutOverrides: NavMainEntity,\n): NavMainEntity[] => {\n if (!osFlyoutOverrides) return config.header.navMain;\n\n return config.header.navMain.map(mainNav => {\n if (mainNav.id !== 'flyout_os') return mainNav;\n\n if (osFlyoutCache === null) {\n osFlyoutCache = JSON.parse(JSON.stringify(mainNav)) as NavMainEntity;\n }\n\n const mainNavText = osFlyoutOverrides.text ?? osFlyoutCache.text;\n const mainNavTitle = osFlyoutOverrides.title ?? osFlyoutCache.title;\n\n if (\n !osFlyoutCache.flyout ||\n osFlyoutCache.flyout.length === 0 ||\n !osFlyoutOverrides.flyout ||\n osFlyoutOverrides.flyout.length === 0\n )\n return {\n ...mainNav,\n title: mainNavTitle,\n text: mainNavText,\n };\n\n // Add entries for os flyout columns without overriding existing config\n const mainNavFlyout = [\n ...osFlyoutCache.flyout.map((col, index) => {\n const overrides = osFlyoutOverrides.flyout[index];\n const title = overrides.title ?? col.title;\n\n const linkList = overrides.linkList ? osFlyoutOverrides.flyout[index].linkList : [];\n\n return {\n title,\n linkList: [...col.linkList, ...linkList],\n };\n }),\n ...osFlyoutOverrides.flyout.slice(osFlyoutCache.flyout.length),\n ];\n\n return {\n ...mainNav,\n text: mainNavText,\n title: mainNavTitle,\n flyout: mainNavFlyout,\n } as NavMainEntity;\n });\n};\n\n/**\n * Fetch the general config based on project id\n *\n * @returns Promise for Post Portal general config\n */\nexport const fetchConfig = async (\n projectId: string,\n environment: Environment,\n): Promise<IPortalConfig> => {\n // Check if project id is sanitized\n if (!isValidProjectId(projectId)) {\n throw new Error(`Internet Header: invalid project id \"${projectId}\"`);\n }\n\n if (projectId === 'test') {\n environment = 'int01';\n }\n\n let url = generateConfigUrl(projectId, environment);\n\n // Get the config if cache is invalid\n try {\n const res = await fetch(url);\n return (await res.json()) as IPortalConfig;\n } catch (error) {\n throw new Error(`Internet Header: fetching config failed. ${error.message}`);\n }\n};\n\n/**\n * Generate an URL with all necessary query params to get the configuration.\n * Project id \"test\" will return a test configuration\n * @param projectId string\n * @param environment int01, int02 or prod\n * @returns URL pointing to the project config\n */\nexport const generateConfigUrl = (projectId: string, environment: Environment): string => {\n if (projectId === 'test') return 'assets/config/test-configuration.json';\n\n const parsedEnvironment = environment.toLowerCase();\n const isProd = parsedEnvironment === 'prod';\n const host = `https://${isProd ? 'www' : 'int'}.post.ch`;\n try {\n // Use URL to validate the generated URL\n return new URL(\n `${host}/api/headerjs/Json?serviceid=${encodeURIComponent(projectId)}${\n !isProd ? '&environment=' + parsedEnvironment : ''\n }`,\n ).toString();\n } catch (error) {\n throw new Error(`Internet Header: Config URL is invalid.`);\n }\n};\n\n/**\n * Check if project id contains only URL safe characters\n *\n * @param projectId Project Id string\n * @returns The valid project id\n */\nexport const isValidProjectId = (projectId: string): boolean => {\n return projectId !== '' && projectId.length > 0 && /^[a-zA-Z][\\w-]*[a-zA-Z0-9]$/.test(projectId);\n};\n\n/**\n * Get the localized config object from a custom config\n *\n * @param config String or json object of the custom config\n * @param language Specific language\n * @returns Localized custom config object\n */\nexport const getLocalizedCustomConfig = (\n config: string | ICustomConfig,\n language: string,\n): ILocalizedCustomConfig | undefined => {\n let customConfig: ICustomConfig;\n try {\n customConfig = typeof config === 'string' ? JSON.parse(config) : config;\n } catch (error) {\n throw new Error(\n `Internet Header: Custom config is invalid. Make sure your custom config contains valid JSON syntax and matches the definition. `,\n );\n }\n let localizedCustomConfig: ILocalizedCustomConfig | undefined = customConfig[language];\n if (localizedCustomConfig?.header?.navMain)\n setMainNavigationIds(localizedCustomConfig.header.navMain);\n return localizedCustomConfig;\n};\n\n/**\n * Check if mobile header styles are applied or not\n * @returns True if browser is smaller than 1024px\n */\nexport const isMobile = () => window.innerWidth < 1024;\n\n/**\n * Set unique ID's on main navigation entities but conserve flyout_os to be able to\n * identify the online-service flyout, which can be configured by osFlyoutOverrides\n */\nexport const setMainNavigationIds = (navMainEntities: NavMainEntity[]): void => {\n navMainEntities.forEach(navMainEntity => {\n navMainEntity.id = navMainEntity.id === 'flyout_os' ? navMainEntity.id : uniqueId('main-nav-');\n });\n};\n","import { debounce } from 'throttle-debounce';\nimport { state } from '../../../data/store';\n\nexport const registerLogoAnimationObserver = (\n target: HTMLElement,\n headerRef: HTMLSwisspostInternetHeaderElement,\n) => {\n /**\n * Set intersection ratio as CSS custom property\n */\n const handleScroll = () => {\n const fullStickyness = state.stickyness === 'full';\n let scale = 1;\n // Minus 1px border at the bottom that the logo is not covering\n const adjustedHeaderHeight = headerRef.clientHeight - 1;\n const scrollY = fullStickyness ? 0 : window.scrollY;\n\n // If meta navigation is not visible (mobile, not configured), scale should just be 1\n if (target.clientHeight > 0) {\n scale = Math.max(\n (adjustedHeaderHeight - Math.max(scrollY, 0)) /\n (adjustedHeaderHeight - target.clientHeight),\n 1,\n );\n }\n headerRef.style.setProperty('--logo-scale', scale.toString());\n };\n\n const debounced = debounce(150, handleScroll);\n\n /**\n * Observe the meta navigation in order to not track scroll events throughout the whole page.\n * This ensures that the scroll listener is only active while the meta navigation is visible.\n */\n const observer = new IntersectionObserver(\n entries => {\n entries.forEach(entry => {\n if (entry.isIntersecting && entry.intersectionRatio > 0) {\n window.addEventListener('scroll', handleScroll, { passive: true });\n window.addEventListener('resize', debounced);\n\n // Ensure callback is called at least once in case main thread is too busy while scrolling up\n window.requestAnimationFrame(handleScroll);\n } else {\n window.removeEventListener('scroll', handleScroll);\n window.removeEventListener('resize', debounced);\n window.requestAnimationFrame(handleScroll);\n }\n });\n },\n {\n // Fires when element leaves viewport (0) and when it just about enters it (0.001)\n threshold: [0, 0.001],\n },\n );\n observer.observe(target);\n\n return handleScroll;\n};\n","@use '@swisspost/design-system-styles/variables/color';\n@use '../../utils/utils.scss';\n@use '../../utils/mixins.scss';\n@use './logo-animation/logo-animation.scss';\n\n:host {\n display: block;\n position: relative;\n font-size: 1rem;\n font-weight: 300;\n z-index: var(--header-z-index, 10);\n\n --header-height: 3.5rem; // 56px\n --meta-header-height: 0px; // Not visible on mobile\n --language-dropdown-margin-top: 0px;\n\n @include mixins.min(lg) {\n --meta-header-height: 3rem; // 48px\n --header-height: 4rem; // 64px\n }\n\n @include mixins.min(xl) {\n --header-height: 4.5rem; // 72px\n }\n}\n\n// Set height to 0 if meta is never visible\n:host([meta='false']) {\n --meta-header-height: 0px;\n // Compensation for header border-bottom, when language dropdown is displayed within main navigation controls\n --language-dropdown-margin-top: 1px;\n}\n\n// Support different kinds of stickyness modes\n// Works only in combination with setting header heights dynamically\n@supports (position: sticky) {\n // If stickyness is none, simply apply no styles, all others are sticky\n :host(:not(.stickyness-none)) {\n position: sticky;\n }\n\n // Everything is always sticky\n :host(.stickyness-full) {\n top: 0;\n }\n\n // Only main nav is sticky\n :host(.stickyness-main) {\n top: calc(var(--meta-header-height, 0px) * -1);\n }\n\n // Hide everything\n :host(.stickyness-minimal) {\n top: calc((var(--header-height, 0px) + var(--meta-header-height, 0px) + 1px) * -1);\n transition: top 200ms ease-in;\n }\n\n // Show main when scrolling up or any of the menus are open\n :host(.stickyness-minimal.scrolling-up),\n :host(.stickyness-minimal.dropdown-open) {\n top: calc(var(--meta-header-height, 0px) * -1);\n transition: top 200ms ease-out;\n }\n}\n\n.post-internet-header {\n border-bottom: 1px solid color.$gray-10;\n background-color: white;\n}\n\n.main-navigation-container {\n display: flex;\n\n & > .main-navigation-controls {\n flex: 0 0 auto;\n }\n}\n\n.main-navigation {\n display: flex;\n}\n\n.sub-navigation-container {\n position: absolute;\n top: 100%;\n left: 0;\n width: 100%;\n display: flex;\n background: white;\n visibility: hidden;\n}\n\n.main-navigation-item:hover .sub-navigation-container {\n visibility: visible;\n}\n\n.main-navigation-controls {\n display: flex;\n margin-left: auto;\n\n @include mixins.max(lg) {\n font-weight: 400;\n }\n\n @include mixins.min(lg) {\n font-size: 1.0625rem;\n }\n\n & > * {\n border-left: 1px solid color.$gray-10;\n }\n}\n\n.menu-button {\n display: flex;\n align-items: center;\n padding: 0 calc(1rem - 1px);\n font-weight: 300;\n cursor: pointer;\n border-left: 1px solid color.$gray-10;\n order: 1; /* Display on the far right because of tab order */\n\n @include mixins.min(lg) {\n display: none;\n }\n\n .visually-hidden {\n @include mixins.between(rg, lg) {\n @include mixins.reset-visually-hidden();\n\n margin-right: 0.5rem;\n }\n }\n\n svg {\n width: 1.5rem;\n height: 1.5rem;\n }\n}\n\n.full-width {\n .wide-container {\n max-width: none;\n }\n}\n","import {\n Component,\n Host,\n Element,\n h,\n State,\n Prop,\n Watch,\n Listen,\n EventEmitter,\n Event,\n Method,\n} from '@stencil/core';\nimport { debounce, throttle } from 'throttle-debounce';\nimport {\n getLocalizedConfig,\n getLocalizedCustomConfig,\n isValidProjectId,\n} from '../../services/config.service';\nimport { state, dispose } from '../../data/store';\nimport { DropdownElement, DropdownEvent, NavMainEntity } from '../../models/header.model';\nimport { SvgSprite } from '../../utils/svg-sprite.component';\nimport { SvgIcon } from '../../utils/svg-icon.component';\nimport { StickynessOptions } from '../../models/implementor.model';\nimport { ActiveRouteProp, Environment, ICustomConfig } from '../../models/general.model';\nimport { IAvailableLanguage } from '../../models/language.model';\nimport { translate } from '../../services/language.service';\nimport { If } from '../../utils/if.component';\nimport packageJson from '../../../package.json';\nimport { registerLogoAnimationObserver } from './logo-animation/logo-animation';\n\n@Component({\n tag: 'swisspost-internet-header',\n styleUrl: 'post-internet-header.scss',\n shadow: true,\n})\nexport class PostInternetHeader {\n /**\n * Your project id, previously passed as query string parameter serviceId.\n */\n @Prop() project: string;\n\n /**\n * Sticky behaviour of the header.\n */\n @Prop() stickyness: StickynessOptions = 'minimal';\n\n /**\n * Initial language to be used. Overrides automatic language detection.\n */\n @Prop() language?: string;\n\n /**\n * Toggle the meta navigation.\n */\n @Prop() meta: boolean = true;\n\n /**\n * Toggle the login link (when logged out) or the user widget (when logged in).\n */\n @Prop() login: boolean = true;\n\n /**\n * Toggle the search button.\n */\n @Prop() search: boolean = true;\n\n /**\n * Toggle skiplinks. They help keyboard users to quickly jump to important sections of the page.\n */\n @Prop() skiplinks: boolean = true;\n\n /**\n * DEPRECATED!: Define a proxy URL for the config fetch request. Will be removed in the next major version\n */\n @Prop() configProxy?: string;\n\n /**\n * Target environment. Choose 'int01' for local testing.\n */\n @Prop() environment: Environment = 'prod';\n\n /**\n * Override the language switch links with custom URLs. Helpful when your application contains sub-pages and you\n * would like to stay on subpages when the user changes language.\n */\n @Prop() languageSwitchOverrides?: string | IAvailableLanguage[];\n\n /**\n * Customize the header config loaded from the post portal.\n */\n @Prop() customConfig?: string | ICustomConfig;\n\n /**\n * The header uses this cookie to set the language. Disables automatic language detection.\n */\n @Prop() languageCookieKey?: string;\n\n /**\n * The header uses this local storage key to set the language. Disables automatic language selection.\n */\n @Prop() languageLocalStorageKey?: string = 'swisspost-internet-header-language';\n\n /**\n * Set the currently activated route. If there is a link matching this URL in the header, it will be highlighted.\n * Will also highlight partly matching URLs. When set to auto, will use current location.href for comparison.\n */\n @Prop() activeRoute?: 'auto' | false | string = 'auto';\n\n /**\n * Online Services only: Add custom links to the special online service navigation entry\n */\n @Prop() osFlyoutOverrides?: string | NavMainEntity;\n\n /**\n * Displays the header at full width for full-screen applications\n */\n @Prop() fullWidth?: boolean = false;\n\n /**\n * Fires when the header has been rendered to the page.\n */\n @Event() headerLoaded: EventEmitter<void>;\n\n @State() activeFlyout: string | null = null;\n @State() activeDropdownElement: DropdownElement | null = null;\n @Element() host: HTMLSwisspostInternetHeaderElement;\n\n /**\n * Get the currently set language as a two letter string (\"de\", \"fr\" \"it\" or \"en\")\n * @returns string\n */\n @Method()\n async getCurrentLanguage(): Promise<'de' | 'fr' | 'it' | 'en' | string> {\n return state.currentLanguage ?? 'de';\n }\n\n private mainNav?: HTMLPostMainNavigationElement;\n private metaNav?: HTMLPostMetaNavigationElement;\n private lastScrollTop = window.scrollY || document.documentElement.scrollTop;\n private throttledScroll: throttle<() => void>;\n private debouncedResize: debounce<() => void>;\n private lastWindowWidth: number = window.innerWidth;\n private updateLogoAnimation: () => void;\n\n constructor() {\n if (this.project === undefined || this.project === '' || !isValidProjectId(this.project)) {\n throw new Error(\n `Internet Header project key is \"${this.project}\". Please provide a valid project key.`,\n );\n }\n }\n\n connectedCallback() {\n this.throttledScroll = throttle(300, () => this.handleScrollEvent());\n this.debouncedResize = debounce(200, () => this.handleResize());\n window.addEventListener('scroll', this.throttledScroll, { passive: true });\n window.addEventListener('resize', this.debouncedResize, { passive: true });\n }\n\n disconnectedCallback() {\n window.removeEventListener('scroll', this.throttledScroll);\n window.removeEventListener('resize', this.debouncedResize);\n\n // Reset the store to its original state\n dispose();\n }\n\n async componentWillLoad() {\n // Wait for the config to arrive, then render the header\n try {\n state.projectId = this.project;\n state.stickyness = this.stickyness;\n state.environment = this.environment.toLocaleLowerCase() as Environment;\n if (this.language !== undefined) state.currentLanguage = this.language;\n state.languageSwitchOverrides =\n typeof this.languageSwitchOverrides === 'string'\n ? JSON.parse(this.languageSwitchOverrides)\n : this.languageSwitchOverrides;\n state.osFlyoutOverrides =\n typeof this.osFlyoutOverrides === 'string'\n ? JSON.parse(this.osFlyoutOverrides)\n : this.osFlyoutOverrides;\n\n if (this.customConfig !== undefined && state.currentLanguage !== null) {\n state.localizedCustomConfig = getLocalizedCustomConfig(\n this.customConfig,\n state.currentLanguage,\n );\n }\n\n state.localizedConfig = await getLocalizedConfig({\n projectId: this.project,\n environment: state.environment,\n language: this.language,\n cookieKey: this.languageCookieKey,\n localStorageKey: this.languageLocalStorageKey,\n activeRouteProp: this.activeRoute,\n localizedCustomConfig: state.localizedCustomConfig,\n osFlyoutOverrides: state.osFlyoutOverrides,\n });\n } catch (error) {\n console.error(error);\n }\n }\n\n componentDidLoad() {\n window.requestAnimationFrame(() => {\n this.handleResize();\n this.headerLoaded.emit();\n this.host.classList.add('header-loaded');\n if (this.meta && this.metaNav) {\n this.updateLogoAnimation = registerLogoAnimationObserver(this.metaNav, this.host);\n }\n });\n\n if (this.stickyness === 'full')\n console.warn('Internet Header: The stickyness=\"full\" option is deprecated.');\n }\n\n @Watch('language')\n async handleLanguageChange(newValue: string) {\n state.currentLanguage = newValue;\n state.localizedConfig = await getLocalizedConfig({\n projectId: this.project,\n environment: this.environment,\n language: newValue,\n cookieKey: this.languageCookieKey,\n localStorageKey: this.languageLocalStorageKey,\n activeRouteProp: this.activeRoute,\n localizedCustomConfig: state.localizedCustomConfig,\n osFlyoutOverrides: state.osFlyoutOverrides,\n });\n if (this.customConfig)\n state.localizedCustomConfig = getLocalizedCustomConfig(this.customConfig, newValue);\n }\n\n @Watch('languageSwitchOverrides')\n handleAvailableLanguagesChage(newValue: string | IAvailableLanguage[]) {\n state.languageSwitchOverrides = typeof newValue === 'string' ? JSON.parse(newValue) : newValue;\n }\n\n @Watch('osFlyoutOverrides')\n async handleOsFlyoutOverrides(newValue: string | NavMainEntity) {\n state.osFlyoutOverrides = typeof newValue === 'string' ? JSON.parse(newValue) : newValue;\n state.localizedConfig = await getLocalizedConfig({\n projectId: this.project,\n environment: this.environment,\n language: this.language,\n cookieKey: this.languageCookieKey,\n localStorageKey: this.languageLocalStorageKey,\n activeRouteProp: this.activeRoute,\n localizedCustomConfig: state.localizedCustomConfig,\n osFlyoutOverrides: state.osFlyoutOverrides,\n });\n }\n\n @Watch('activeRoute')\n async handleActiveRouteChange(newValue: string | ActiveRouteProp) {\n state.localizedConfig = await getLocalizedConfig({\n projectId: this.project,\n environment: this.environment,\n language: this.language,\n cookieKey: this.languageCookieKey,\n localStorageKey: this.languageLocalStorageKey,\n activeRouteProp: newValue,\n localizedCustomConfig: state.localizedCustomConfig,\n osFlyoutOverrides: state.osFlyoutOverrides,\n });\n }\n\n @Watch('customConfig')\n async handleCustomConfigChange(newValue: string | ICustomConfig) {\n if (this.language === undefined) return;\n const localizedCustomConfig = getLocalizedCustomConfig(newValue, this.language);\n state.localizedCustomConfig = localizedCustomConfig;\n state.localizedConfig = await getLocalizedConfig({\n projectId: this.project,\n environment: this.environment,\n language: this.language,\n cookieKey: this.languageCookieKey,\n localStorageKey: this.languageLocalStorageKey,\n activeRouteProp: this.activeRoute,\n localizedCustomConfig: localizedCustomConfig,\n osFlyoutOverrides: state.osFlyoutOverrides,\n });\n }\n\n @Watch('search')\n handleSearchChange(newValue: boolean) {\n state.search = newValue;\n }\n\n @Watch('login')\n handleLoginChange(newValue: boolean) {\n state.login = newValue;\n }\n\n @Watch('meta')\n handleMetaChange(newValue: boolean) {\n state.meta = newValue;\n }\n\n @Listen('languageChanged')\n handleLanguageChangeEvent(event: CustomEvent<string>) {\n this.handleLanguageChange(event.detail);\n }\n\n @Watch('stickyness')\n handleStickynessChange(newValue: StickynessOptions) {\n state.stickyness = newValue;\n this.updateLogoAnimation();\n }\n\n private handleClickOutsideBound = this.handleClickOutside.bind(this);\n\n private handleClickOutside(event: Event) {\n // Close active dropdown element on click outside of it\n if (this.activeDropdownElement && !event.composedPath().includes(this.activeDropdownElement)) {\n this.activeDropdownElement.toggleDropdown(false);\n }\n }\n\n private handleKeyUp(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n if (this.activeDropdownElement) {\n this.activeDropdownElement.toggleDropdown(false);\n }\n if (this.activeFlyout !== null && this.mainNav) {\n this.mainNav.toggleDropdown(false);\n }\n }\n }\n\n private handleScrollEvent() {\n // Credits: \"https://github.com/qeremy/so/blob/master/so.dom.js#L426\"\n const st = window.scrollY || document.documentElement.scrollTop;\n\n // Toggle class without re-rendering the component if stickyness is minimal\n // the other stickyness modes do not need the class\n if (this.stickyness === 'minimal') {\n this.host.classList.toggle('scrolling-up', st <= this.lastScrollTop);\n }\n\n // For Mobile or negative scrolling\n this.lastScrollTop = st <= 0 ? 0 : st;\n }\n\n private handleResize() {\n // Close main navigation dropdown if size changed to bigger than 1024px (search dropdown will be kept open)\n if (this.isMainNavOpen() && this.lastWindowWidth < 1024 && window.innerWidth >= 1024) {\n this.activeDropdownElement?.toggleDropdown(false);\n }\n\n this.lastWindowWidth = window.innerWidth;\n }\n\n /**\n * Close open dropdown menus if another is being opened\n *\n * @param event Dropdown toggled event\n * @returns void\n */\n private handleDropdownToggled(event: CustomEvent<DropdownEvent>) {\n if (!event.detail.open && this.activeDropdownElement !== event.detail.element) {\n // Some dropdown got closed programmatically (possibly by this function). To prevent\n // a circle or an outdated state, we'll not handle this event\n return;\n }\n\n if (event.detail.open === true) {\n if (this.activeDropdownElement) {\n this.activeDropdownElement.toggleDropdown(false);\n }\n\n this.activeDropdownElement = event.detail.element;\n\n if (window.innerWidth >= 1024) {\n // Add event listener to close active dropdown element on click outsite of it\n // Also adds 10ms delay in case of an external interaction:\n // Some button on the page calls toggleDropdown() -> dropdown opens\n // Click event bubbles to the window, this.handleClickOutsideBound closes dropdown again\n window.setTimeout(() => {\n window.addEventListener('click', this.handleClickOutsideBound);\n }, 10);\n }\n\n if (this.activeFlyout !== null && this.mainNav) {\n this.mainNav.setActiveFlyout(null);\n }\n } else {\n this.activeDropdownElement = null;\n\n // Remove event listener as it is not needed if no dropdown element is active\n window.removeEventListener('click', this.handleClickOutsideBound);\n }\n }\n\n /**\n * Close open dropdowns if the flyout is being opened\n * @param event Flyout toggle event\n */\n private handleFlyoutToggled(event: CustomEvent<string | null>) {\n this.activeFlyout = event.detail;\n\n if (this.activeDropdownElement && event.detail && !this.isMainNavOpen()) {\n this.activeDropdownElement.toggleDropdown(false);\n }\n }\n\n private toggleMobileDropdown() {\n this.mainNav?.toggleDropdown();\n }\n\n private isMainNavOpen() {\n return (\n this.activeDropdownElement && this.activeDropdownElement.tagName === 'POST-MAIN-NAVIGATION'\n );\n }\n\n render() {\n if (!state.localizedConfig?.header) {\n console.error(new Error('Internet Header: Config cannot be loaded'));\n return;\n }\n\n const config = state.localizedConfig;\n const renderMetaNavigation =\n this.meta &&\n config.header.navMeta !== undefined &&\n config.header.navMeta?.filter(meta => !meta.isHomeLink).length > 0;\n const renderLogin =\n (this.login ?? !config.header.isLoginWidgetHidden) && config.header.loginWidgetOptions;\n const renderLanguageSwitch = config.header.navLang.length > 1;\n\n return (\n <Host\n class={`stickyness-${this.stickyness} ${\n this.activeDropdownElement || this.activeFlyout ? 'dropdown-open' : ''\n }`}\n data-version={packageJson.version}\n onKeyup={(e: KeyboardEvent) => this.handleKeyUp(e)}\n >\n <header class={`post-internet-header${this.fullWidth ? ' full-width' : ''}`}>\n <SvgSprite />\n <h1 class=\"visually-hidden\">{translate('Navigate on post.ch')}</h1>\n <If condition={this.skiplinks === true}>\n <post-skiplinks></post-skiplinks>\n </If>\n <If condition={renderMetaNavigation === true}>\n <post-meta-navigation\n orientation=\"horizontal\"\n class=\"hidden-lg\"\n full-width={this.fullWidth}\n ref={el => (this.metaNav = el)}\n >\n <If condition={renderLanguageSwitch === true}>\n <post-language-switch\n id=\"post-language-switch-desktop\"\n mode=\"dropdown\"\n onDropdownToggled={e => this.handleDropdownToggled(e)}\n ></post-language-switch>\n </If>\n </post-meta-navigation>\n </If>\n <div class=\"main-navigation-container wide-container\">\n <post-logo></post-logo>\n <button\n class=\"menu-button nav-link\"\n onClick={() => this.toggleMobileDropdown()}\n aria-haspopup=\"menu\"\n aria-controls=\"post-internet-header-main-navigation\"\n aria-expanded={this.activeDropdownElement ? 'true' : 'false'}\n >\n <span class=\"menu-button-text visually-hidden\">{config.header.mobileMenu.text}</span>\n <SvgIcon name={this.isMainNavOpen() ? 'pi-close' : 'pi-menu'}></SvgIcon>\n </button>\n <post-main-navigation\n onDropdownToggled={e => this.handleDropdownToggled(e)}\n onFlyoutToggled={e => this.handleFlyoutToggled(e)}\n ref={el => (this.mainNav = el)}\n >\n <If condition={renderMetaNavigation === true}>\n <post-meta-navigation orientation=\"vertical\">\n <If condition={renderLanguageSwitch === true}>\n <post-language-switch\n id=\"post-language-switch-mobile\"\n mode=\"list\"\n ></post-language-switch>\n </If>\n </post-meta-navigation>\n </If>\n </post-main-navigation>\n <div class=\"main-navigation-controls\">\n <If condition={this.search !== false}>\n <post-search onDropdownToggled={e => this.handleDropdownToggled(e)}></post-search>\n </If>\n <If condition={!!renderLogin}>\n <post-klp-login-widget>\n <slot name=\"login-widget\"></slot>\n </post-klp-login-widget>\n </If>\n <If condition={renderMetaNavigation === false && renderLanguageSwitch === true}>\n <post-language-switch\n id=\"post-language-switch-no-meta\"\n onDropdownToggled={e => this.handleDropdownToggled(e)}\n mode=\"dropdown\"\n ></post-language-switch>\n </If>\n <slot name=\"main\"></slot>\n </div>\n </div>\n </header>\n </Host>\n );\n }\n}\n"],"mappings":"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"}