@swisspost/internet-header 1.13.1 → 1.13.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/if.component-31542061.js +12 -0
- package/dist/cjs/{if.component-2cd3c1ff.js.map → if.component-31542061.js.map} +1 -1
- package/dist/cjs/{index-4bd0adf1.js → index-8cbf8194.js} +141 -81
- package/dist/cjs/index-8cbf8194.js.map +1 -0
- package/dist/cjs/index.cjs.js +18 -18
- package/dist/cjs/{klp-widget.controller-8baf3b8a.js → klp-widget.controller-7fbe23c3.js} +11 -11
- package/dist/cjs/{klp-widget.controller-8baf3b8a.js.map → klp-widget.controller-7fbe23c3.js.map} +1 -1
- package/dist/cjs/language.service-11e7d8c1.js +182 -0
- package/dist/cjs/language.service-11e7d8c1.js.map +1 -0
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/{esm/post-internet-breadcrumbs-f268030c.js → cjs/post-internet-breadcrumbs-f5e20904.js} +278 -276
- package/dist/cjs/post-internet-breadcrumbs-f5e20904.js.map +1 -0
- package/dist/cjs/post-internet-footer-d222e56d.js +161 -0
- package/dist/cjs/post-internet-footer-d222e56d.js.map +1 -0
- package/dist/cjs/post-internet-header-befc7a3f.js +847 -0
- package/dist/cjs/post-internet-header-befc7a3f.js.map +1 -0
- package/dist/cjs/post-klp-login-widget-01eee964.js +63 -0
- package/dist/cjs/{post-klp-login-widget-5380708a.js.map → post-klp-login-widget-01eee964.js.map} +1 -1
- package/dist/cjs/post-klp-login-widget.cjs.entry.js +5 -5
- package/dist/cjs/{post-language-switch-422af4d0.js → post-language-switch-59e1e832.js} +88 -88
- package/dist/cjs/post-language-switch-59e1e832.js.map +1 -0
- package/dist/cjs/post-language-switch.cjs.entry.js +7 -7
- package/dist/cjs/{post-logo-5867ad55.js → post-logo-6d127981.js} +14 -14
- package/dist/cjs/{post-logo-5867ad55.js.map → post-logo-6d127981.js.map} +1 -1
- package/dist/cjs/post-logo.cjs.entry.js +3 -3
- package/dist/cjs/post-main-navigation-d34e9799.js +240 -0
- package/dist/cjs/post-main-navigation-d34e9799.js.map +1 -0
- package/dist/cjs/post-main-navigation.cjs.entry.js +7 -7
- package/dist/cjs/{post-meta-navigation-0b73779f.js → post-meta-navigation-ac31cee4.js} +15 -15
- package/dist/cjs/{post-meta-navigation-0b73779f.js.map → post-meta-navigation-ac31cee4.js.map} +1 -1
- package/dist/cjs/post-meta-navigation.cjs.entry.js +3 -3
- package/dist/cjs/{post-search-7eb0a7a2.js → post-search-ac307fd7.js} +438 -438
- package/dist/cjs/post-search-ac307fd7.js.map +1 -0
- package/dist/cjs/post-search.cjs.entry.js +8 -8
- package/dist/cjs/post-skiplinks-74f15d34.js +52 -0
- package/dist/cjs/{post-skiplinks-3db1d214.js.map → post-skiplinks-74f15d34.js.map} +1 -1
- package/dist/cjs/post-skiplinks.cjs.entry.js +5 -5
- package/dist/cjs/{store-77668e50.js → store-dffccc44.js} +10 -10
- package/dist/cjs/store-dffccc44.js.map +1 -0
- package/dist/cjs/{svg-icon.component-5965f301.js → svg-icon.component-65508d78.js} +3 -3
- package/dist/cjs/{svg-icon.component-5965f301.js.map → svg-icon.component-65508d78.js.map} +1 -1
- package/dist/cjs/svg-sprite.component-dc109568.js +51 -0
- package/dist/cjs/{svg-sprite.component-68369645.js.map → svg-sprite.component-dc109568.js.map} +1 -1
- package/dist/cjs/swisspost-internet-breadcrumbs.cjs.entry.js +7 -7
- package/dist/cjs/swisspost-internet-footer.cjs.entry.js +5 -5
- package/dist/cjs/swisspost-internet-header.cjs.entry.js +8 -8
- package/dist/cjs/swisspost-internet-header.cjs.js +3 -3
- package/dist/cjs/swisspost-internet-header.cjs.js.map +1 -1
- package/dist/cjs/{ui.service-488151be.js → ui.service-7334148b.js} +5 -5
- package/dist/cjs/{ui.service-488151be.js.map → ui.service-7334148b.js.map} +1 -1
- package/dist/cjs/{utils-717975e0.js → utils-0a793763.js} +7 -7
- package/dist/cjs/{utils-717975e0.js.map → utils-0a793763.js.map} +1 -1
- package/dist/collection/assets/i18n/translations.js +65 -65
- package/dist/collection/assets/i18n/translations.js.map +1 -1
- package/dist/collection/collection-manifest.json +2 -2
- package/dist/collection/components/post-internet-breadcrumbs/components/breadcrumb-list.component.js +4 -4
- package/dist/collection/components/post-internet-breadcrumbs/components/breadcrumb-list.component.js.map +1 -1
- package/dist/collection/components/post-internet-breadcrumbs/components/focus-trap.component.js +28 -28
- package/dist/collection/components/post-internet-breadcrumbs/components/focus-trap.component.js.map +1 -1
- package/dist/collection/components/post-internet-breadcrumbs/components/middle-dropdown.component.js +1 -1
- package/dist/collection/components/post-internet-breadcrumbs/components/middle-dropdown.component.js.map +1 -1
- package/dist/collection/components/post-internet-breadcrumbs/components/middle-links.component.js +1 -1
- package/dist/collection/components/post-internet-breadcrumbs/components/middle-links.component.js.map +1 -1
- package/dist/collection/components/post-internet-breadcrumbs/components/overlay.component.js.map +1 -1
- package/dist/collection/components/post-internet-breadcrumbs/post-internet-breadcrumbs.css +1 -1
- package/dist/collection/components/post-internet-breadcrumbs/post-internet-breadcrumbs.js +288 -290
- package/dist/collection/components/post-internet-breadcrumbs/post-internet-breadcrumbs.js.map +1 -1
- package/dist/collection/components/post-internet-footer/components/post-footer-block-address.component.js +7 -7
- package/dist/collection/components/post-internet-footer/components/post-footer-block-address.component.js.map +1 -1
- package/dist/collection/components/post-internet-footer/components/post-footer-block-contact.component.js +16 -16
- package/dist/collection/components/post-internet-footer/components/post-footer-block-contact.component.js.map +1 -1
- package/dist/collection/components/post-internet-footer/components/post-footer-block-custom.component.js +2 -2
- package/dist/collection/components/post-internet-footer/components/post-footer-block-custom.component.js.map +1 -1
- package/dist/collection/components/post-internet-footer/components/post-footer-block-list.component.js +2 -2
- package/dist/collection/components/post-internet-footer/components/post-footer-block-list.component.js.map +1 -1
- package/dist/collection/components/post-internet-footer/components/post-footer-block-socials.component.js +1 -1
- package/dist/collection/components/post-internet-footer/components/post-footer-block-socials.component.js.map +1 -1
- package/dist/collection/components/post-internet-footer/post-internet-footer.css +1 -1
- package/dist/collection/components/post-internet-footer/post-internet-footer.js +82 -82
- package/dist/collection/components/post-internet-footer/post-internet-footer.js.map +1 -1
- package/dist/collection/components/post-internet-header/logo-animation/logo-animation.js +42 -42
- package/dist/collection/components/post-internet-header/logo-animation/logo-animation.js.map +1 -1
- package/dist/collection/components/post-internet-header/post-internet-header.css +1 -1
- package/dist/collection/components/post-internet-header/post-internet-header.js +707 -701
- package/dist/collection/components/post-internet-header/post-internet-header.js.map +1 -1
- package/dist/collection/components/post-klp-login-widget/klp-widget.controller.js +10 -10
- package/dist/collection/components/post-klp-login-widget/klp-widget.controller.js.map +1 -1
- package/dist/collection/components/post-klp-login-widget/post-klp-login-widget.css +1 -1
- package/dist/collection/components/post-klp-login-widget/post-klp-login-widget.js +99 -99
- package/dist/collection/components/post-klp-login-widget/post-klp-login-widget.js.map +1 -1
- package/dist/collection/components/post-language-switch/components/post-language-switch-list.js +10 -10
- package/dist/collection/components/post-language-switch/components/post-language-switch-list.js.map +1 -1
- package/dist/collection/components/post-language-switch/post-language-switch.js +169 -171
- package/dist/collection/components/post-language-switch/post-language-switch.js.map +1 -1
- package/dist/collection/components/post-logo/post-logo.js +20 -20
- package/dist/collection/components/post-logo/post-logo.js.map +1 -1
- package/dist/collection/components/post-main-navigation/components/level-one-action.component.js +9 -9
- package/dist/collection/components/post-main-navigation/components/level-one-action.component.js.map +1 -1
- package/dist/collection/components/post-main-navigation/post-main-navigation.css +1 -1
- package/dist/collection/components/post-main-navigation/post-main-navigation.js +313 -317
- package/dist/collection/components/post-main-navigation/post-main-navigation.js.map +1 -1
- package/dist/collection/components/post-meta-navigation/post-meta-navigation.js +62 -62
- package/dist/collection/components/post-meta-navigation/post-meta-navigation.js.map +1 -1
- package/dist/collection/components/post-search/post-search.js +367 -369
- package/dist/collection/components/post-search/post-search.js.map +1 -1
- package/dist/collection/components/post-skiplinks/post-skiplinks.js +44 -44
- package/dist/collection/components/post-skiplinks/post-skiplinks.js.map +1 -1
- package/dist/collection/data/store.js +8 -8
- package/dist/collection/data/store.js.map +1 -1
- package/dist/collection/models/geocode.model.js +6 -6
- package/dist/collection/models/geocode.model.js.map +1 -1
- package/dist/collection/services/config.service.js +116 -116
- package/dist/collection/services/config.service.js.map +1 -1
- package/dist/collection/services/language.service.js +66 -66
- package/dist/collection/services/language.service.js.map +1 -1
- package/dist/collection/services/route.service.js +105 -105
- package/dist/collection/services/route.service.js.map +1 -1
- package/dist/collection/services/search/coveo.service.js +28 -28
- package/dist/collection/services/search/coveo.service.js.map +1 -1
- package/dist/collection/services/search/coveo.settings.js +30 -30
- package/dist/collection/services/search/coveo.settings.js.map +1 -1
- package/dist/collection/services/search/parcel.service.js +29 -29
- package/dist/collection/services/search/parcel.service.js.map +1 -1
- package/dist/collection/services/search/places.service.js +44 -44
- package/dist/collection/services/search/places.service.js.map +1 -1
- package/dist/collection/services/search/places.settings.js +10 -10
- package/dist/collection/services/search/places.settings.js.map +1 -1
- package/dist/collection/services/search/search-utilities.js +3 -3
- package/dist/collection/services/search/search-utilities.js.map +1 -1
- package/dist/collection/services/search/search.service.js +13 -13
- package/dist/collection/services/search/search.service.js.map +1 -1
- package/dist/collection/services/ui.service.js +4 -4
- package/dist/collection/services/ui.service.js.map +1 -1
- package/dist/collection/utils/highlighted.component.js +7 -7
- package/dist/collection/utils/highlighted.component.js.map +1 -1
- package/dist/collection/utils/if.component.js +4 -4
- package/dist/collection/utils/if.component.js.map +1 -1
- package/dist/collection/utils/scrollparent.js +18 -15
- package/dist/collection/utils/scrollparent.js.map +1 -1
- package/dist/collection/utils/svg-icon.component.js.map +1 -1
- package/dist/collection/utils/svg-sprite.component.js.map +1 -1
- package/dist/collection/utils/utils.js +6 -6
- package/dist/collection/utils/utils.js.map +1 -1
- package/dist/components/index.js +18 -18
- package/dist/components/klp-widget.controller.js +10 -10
- package/dist/components/klp-widget.controller.js.map +1 -1
- package/dist/components/language.service.js +131 -131
- package/dist/components/language.service.js.map +1 -1
- package/dist/components/post-klp-login-widget.d.ts +2 -2
- package/dist/components/post-klp-login-widget2.js +61 -61
- package/dist/components/post-klp-login-widget2.js.map +1 -1
- package/dist/components/post-language-switch.d.ts +2 -2
- package/dist/components/post-language-switch2.js +99 -99
- package/dist/components/post-language-switch2.js.map +1 -1
- package/dist/components/post-logo.d.ts +2 -2
- package/dist/components/post-logo2.js +25 -25
- package/dist/components/post-logo2.js.map +1 -1
- package/dist/components/post-main-navigation.d.ts +2 -2
- package/dist/components/post-main-navigation2.js +221 -221
- package/dist/components/post-main-navigation2.js.map +1 -1
- package/dist/components/post-meta-navigation.d.ts +2 -2
- package/dist/components/post-meta-navigation2.js +29 -29
- package/dist/components/post-meta-navigation2.js.map +1 -1
- package/dist/components/post-search.d.ts +2 -2
- package/dist/components/post-search2.js +455 -455
- package/dist/components/post-search2.js.map +1 -1
- package/dist/components/post-skiplinks.d.ts +2 -2
- package/dist/components/post-skiplinks2.js +46 -46
- package/dist/components/post-skiplinks2.js.map +1 -1
- package/dist/components/store.js +8 -8
- package/dist/components/store.js.map +1 -1
- package/dist/components/svg-icon.component.js +1 -1
- package/dist/components/svg-icon.component.js.map +1 -1
- package/dist/components/svg-sprite.component.js +42 -42
- package/dist/components/svg-sprite.component.js.map +1 -1
- package/dist/components/swisspost-internet-breadcrumbs.d.ts +2 -2
- package/dist/components/swisspost-internet-breadcrumbs.js +286 -286
- package/dist/components/swisspost-internet-breadcrumbs.js.map +1 -1
- package/dist/components/swisspost-internet-footer.d.ts +2 -2
- package/dist/components/swisspost-internet-footer.js +138 -138
- package/dist/components/swisspost-internet-footer.js.map +1 -1
- package/dist/components/swisspost-internet-header.d.ts +2 -2
- package/dist/components/swisspost-internet-header.js +687 -667
- package/dist/components/swisspost-internet-header.js.map +1 -1
- package/dist/components/ui.service.js +4 -4
- package/dist/components/ui.service.js.map +1 -1
- package/dist/components/utils.js +6 -6
- package/dist/components/utils.js.map +1 -1
- package/dist/docs.d.ts +1 -21
- package/dist/docs.json +53 -43
- package/dist/esm/if.component-d88d9e48.js +10 -0
- package/dist/esm/{if.component-3a779aca.js.map → if.component-d88d9e48.js.map} +1 -1
- package/dist/esm/{index-2b83f5e9.js → index-54145c02.js} +141 -81
- package/dist/esm/index-54145c02.js.map +1 -0
- package/dist/esm/index.js +18 -18
- package/dist/esm/{klp-widget.controller-668f7e8d.js → klp-widget.controller-549d5132.js} +11 -11
- package/dist/esm/{klp-widget.controller-668f7e8d.js.map → klp-widget.controller-549d5132.js.map} +1 -1
- package/dist/esm/language.service-1bd090a7.js +178 -0
- package/dist/esm/language.service-1bd090a7.js.map +1 -0
- package/dist/esm/loader.js +3 -3
- package/dist/{cjs/post-internet-breadcrumbs-e3ee842c.js → esm/post-internet-breadcrumbs-16b4d1eb.js} +276 -278
- package/dist/esm/post-internet-breadcrumbs-16b4d1eb.js.map +1 -0
- package/dist/esm/post-internet-footer-211748e4.js +159 -0
- package/dist/esm/post-internet-footer-211748e4.js.map +1 -0
- package/dist/esm/post-internet-header-91c9a423.js +845 -0
- package/dist/esm/post-internet-header-91c9a423.js.map +1 -0
- package/dist/esm/post-klp-login-widget-cac28bb1.js +61 -0
- package/dist/esm/{post-klp-login-widget-57a4fdb5.js.map → post-klp-login-widget-cac28bb1.js.map} +1 -1
- package/dist/esm/post-klp-login-widget.entry.js +5 -5
- package/dist/esm/{post-language-switch-997ee4f9.js → post-language-switch-7df96469.js} +88 -88
- package/dist/esm/post-language-switch-7df96469.js.map +1 -0
- package/dist/esm/post-language-switch.entry.js +7 -7
- package/dist/esm/{post-logo-cde3c44d.js → post-logo-050acfc4.js} +14 -14
- package/dist/esm/{post-logo-cde3c44d.js.map → post-logo-050acfc4.js.map} +1 -1
- package/dist/esm/post-logo.entry.js +3 -3
- package/dist/esm/post-main-navigation-1735be3c.js +238 -0
- package/dist/esm/post-main-navigation-1735be3c.js.map +1 -0
- package/dist/esm/post-main-navigation.entry.js +7 -7
- package/dist/esm/{post-meta-navigation-09e9bdc8.js → post-meta-navigation-ece1e9de.js} +15 -15
- package/dist/esm/{post-meta-navigation-09e9bdc8.js.map → post-meta-navigation-ece1e9de.js.map} +1 -1
- package/dist/esm/post-meta-navigation.entry.js +3 -3
- package/dist/esm/{post-search-a7f2e856.js → post-search-efd16c09.js} +438 -438
- package/dist/esm/post-search-efd16c09.js.map +1 -0
- package/dist/esm/post-search.entry.js +8 -8
- package/dist/esm/post-skiplinks-c6b5addd.js +50 -0
- package/dist/esm/{post-skiplinks-b3c32a77.js.map → post-skiplinks-c6b5addd.js.map} +1 -1
- package/dist/esm/post-skiplinks.entry.js +5 -5
- package/dist/esm/{store-80b19c12.js → store-c0bc1c5b.js} +10 -10
- package/dist/esm/store-c0bc1c5b.js.map +1 -0
- package/dist/esm/svg-icon.component-fe96fac6.js +8 -0
- package/dist/esm/{svg-icon.component-7295f7cc.js.map → svg-icon.component-fe96fac6.js.map} +1 -1
- package/dist/esm/svg-sprite.component-4874b2fb.js +49 -0
- package/dist/esm/{svg-sprite.component-cfc05f90.js.map → svg-sprite.component-4874b2fb.js.map} +1 -1
- package/dist/esm/swisspost-internet-breadcrumbs.entry.js +7 -7
- package/dist/esm/swisspost-internet-footer.entry.js +5 -5
- package/dist/esm/swisspost-internet-header.entry.js +8 -8
- package/dist/esm/swisspost-internet-header.js +4 -4
- package/dist/esm/swisspost-internet-header.js.map +1 -1
- package/dist/esm/{ui.service-a71cf490.js → ui.service-22f2c593.js} +5 -5
- package/dist/esm/{ui.service-a71cf490.js.map → ui.service-22f2c593.js.map} +1 -1
- package/dist/esm/{utils-3a8ff48f.js → utils-c8805f81.js} +7 -7
- package/dist/esm/{utils-3a8ff48f.js.map → utils-c8805f81.js.map} +1 -1
- package/dist/esm-es5/bodyScrollLock.esm-afcc00e3.js.map +1 -1
- package/dist/esm-es5/{if.component-3a779aca.js → if.component-d88d9e48.js} +1 -1
- package/dist/esm-es5/index-54145c02.js +2 -0
- package/dist/esm-es5/index-54145c02.js.map +1 -0
- package/dist/esm-es5/index-d2256e06.js.map +1 -1
- package/dist/esm-es5/index.js +1 -1
- package/dist/esm-es5/{klp-widget.controller-668f7e8d.js → klp-widget.controller-549d5132.js} +10 -10
- package/dist/{swisspost-internet-header/p-5f246e59.system.js.map → esm-es5/klp-widget.controller-549d5132.js.map} +1 -1
- package/dist/esm-es5/{language.service-501b09a8.js → language.service-1bd090a7.js} +2 -2
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/loader.js.map +1 -1
- package/dist/esm-es5/post-internet-breadcrumbs-16b4d1eb.js +7 -0
- package/dist/{swisspost-internet-header/p-bd893111.system.js.map → esm-es5/post-internet-breadcrumbs-16b4d1eb.js.map} +1 -1
- package/dist/esm-es5/{post-internet-footer-3a501420.js → post-internet-footer-211748e4.js} +2 -2
- package/dist/esm-es5/{post-internet-footer-3a501420.js.map → post-internet-footer-211748e4.js.map} +1 -1
- package/dist/esm-es5/post-internet-header-91c9a423.js +2 -0
- package/dist/esm-es5/post-internet-header-91c9a423.js.map +1 -0
- package/dist/esm-es5/post-klp-login-widget-cac28bb1.js +2 -0
- package/dist/esm-es5/{post-klp-login-widget-57a4fdb5.js.map → post-klp-login-widget-cac28bb1.js.map} +1 -1
- package/dist/esm-es5/post-klp-login-widget.entry.js +1 -1
- package/dist/esm-es5/{post-language-switch-997ee4f9.js → post-language-switch-7df96469.js} +2 -2
- package/dist/esm-es5/post-language-switch.entry.js +1 -1
- package/dist/esm-es5/{post-logo-cde3c44d.js → post-logo-050acfc4.js} +2 -2
- package/dist/esm-es5/post-logo.entry.js +1 -1
- package/dist/esm-es5/post-main-navigation-1735be3c.js +2 -0
- package/dist/esm-es5/post-main-navigation-1735be3c.js.map +1 -0
- package/dist/esm-es5/post-main-navigation.entry.js +1 -1
- package/dist/esm-es5/{post-meta-navigation-09e9bdc8.js → post-meta-navigation-ece1e9de.js} +2 -2
- package/dist/esm-es5/post-meta-navigation.entry.js +1 -1
- package/dist/esm-es5/{post-search-a7f2e856.js → post-search-efd16c09.js} +2 -2
- package/dist/esm-es5/post-search.entry.js +1 -1
- package/dist/esm-es5/{post-skiplinks-b3c32a77.js → post-skiplinks-c6b5addd.js} +2 -2
- package/dist/esm-es5/post-skiplinks.entry.js +1 -1
- package/dist/esm-es5/{store-80b19c12.js → store-c0bc1c5b.js} +2 -2
- package/dist/esm-es5/store-c0bc1c5b.js.map +1 -0
- package/dist/esm-es5/svg-icon.component-fe96fac6.js +2 -0
- package/dist/esm-es5/{svg-sprite.component-cfc05f90.js → svg-sprite.component-4874b2fb.js} +2 -2
- package/dist/esm-es5/swisspost-internet-breadcrumbs.entry.js +1 -1
- package/dist/esm-es5/swisspost-internet-footer.entry.js +1 -1
- package/dist/esm-es5/swisspost-internet-header.entry.js +1 -1
- package/dist/esm-es5/swisspost-internet-header.js +1 -1
- package/dist/esm-es5/swisspost-internet-header.js.map +1 -1
- package/dist/esm-es5/{ui.service-a71cf490.js → ui.service-22f2c593.js} +1 -1
- package/dist/esm-es5/{utils-3a8ff48f.js → utils-c8805f81.js} +1 -1
- package/dist/swisspost-internet-header/index.esm.js +1 -1
- package/dist/swisspost-internet-header/{p-96618f42.system.js → p-0338115d.system.js} +2 -2
- package/dist/swisspost-internet-header/{p-7ab3cbcb.js → p-0589b170.js} +2 -2
- package/dist/swisspost-internet-header/{p-788cf356.js → p-0606dca1.js} +2 -2
- package/dist/swisspost-internet-header/{p-788cf356.js.map → p-0606dca1.js.map} +1 -1
- package/dist/swisspost-internet-header/{p-986a52bc.system.js → p-06f51515.system.js} +1 -1
- package/dist/swisspost-internet-header/p-07313f1b.system.entry.js +2 -0
- package/dist/swisspost-internet-header/{p-16676174.system.js → p-11d02764.system.js} +2 -2
- package/dist/swisspost-internet-header/p-1244a33a.entry.js +2 -0
- package/dist/swisspost-internet-header/p-14b0f654.js +3 -0
- package/dist/swisspost-internet-header/p-14b0f654.js.map +1 -0
- package/dist/swisspost-internet-header/p-1c722d02.system.entry.js +2 -0
- package/dist/swisspost-internet-header/p-1cb8fe46.entry.js +2 -0
- package/dist/swisspost-internet-header/{p-f2a43ce2.system.js → p-1fd8561a.system.js} +1 -1
- package/dist/swisspost-internet-header/{p-7eaa5689.js → p-2a8d5787.js} +1 -1
- package/dist/swisspost-internet-header/p-2eb28b7c.js +2 -0
- package/dist/swisspost-internet-header/p-2eb28b7c.js.map +1 -0
- package/dist/swisspost-internet-header/p-2f221bb5.system.js +2 -0
- package/dist/swisspost-internet-header/p-2f221bb5.system.js.map +1 -0
- package/dist/swisspost-internet-header/p-3759e0aa.entry.js +2 -0
- package/dist/swisspost-internet-header/p-3985d762.js +7 -0
- package/dist/swisspost-internet-header/{p-f6a2a74f.js.map → p-3985d762.js.map} +1 -1
- package/dist/swisspost-internet-header/p-3bcc322e.system.js +2 -0
- package/dist/swisspost-internet-header/p-3bcc322e.system.js.map +1 -0
- package/dist/swisspost-internet-header/p-3e62c7a9.js +2 -0
- package/dist/swisspost-internet-header/p-3e62c7a9.js.map +1 -0
- package/dist/swisspost-internet-header/p-434dbf16.system.js +7 -0
- package/dist/{esm-es5/post-internet-breadcrumbs-f268030c.js.map → swisspost-internet-header/p-434dbf16.system.js.map} +1 -1
- package/dist/swisspost-internet-header/p-4380032a.entry.js +2 -0
- package/dist/swisspost-internet-header/{p-78e8a405.js → p-4bc05e68.js} +2 -2
- package/dist/swisspost-internet-header/p-5498ca7c.entry.js +2 -0
- package/dist/swisspost-internet-header/{p-a7de7323.system.js → p-5a69c918.system.js} +2 -2
- package/dist/swisspost-internet-header/p-5ac16bdd.system.entry.js +2 -0
- package/dist/swisspost-internet-header/{p-624d732c.js → p-5c2bb553.js} +2 -2
- package/dist/swisspost-internet-header/p-5c2bb553.js.map +1 -0
- package/dist/swisspost-internet-header/p-6d60866a.system.entry.js +2 -0
- package/dist/swisspost-internet-header/p-7505c3e1.system.entry.js +2 -0
- package/dist/swisspost-internet-header/{p-3a7f9457.js → p-7d188581.js} +2 -2
- package/dist/swisspost-internet-header/{p-cf06f703.js → p-840aa5c6.js} +1 -1
- package/dist/swisspost-internet-header/p-87756f7c.system.js +2 -0
- package/dist/swisspost-internet-header/{p-d294420b.system.js.map → p-87756f7c.system.js.map} +1 -1
- package/dist/swisspost-internet-header/{p-dc8296bd.js → p-8a65e8d6.js} +2 -2
- package/dist/swisspost-internet-header/{p-40806042.system.js → p-8b9d7320.system.js} +2 -2
- package/dist/swisspost-internet-header/p-8df32cb8.system.js +2 -0
- package/dist/swisspost-internet-header/p-943d2956.system.entry.js +2 -0
- package/dist/swisspost-internet-header/p-948d3e8f.entry.js +2 -0
- package/dist/swisspost-internet-header/p-979ae0e8.js +2 -0
- package/dist/swisspost-internet-header/{p-236420dc.js.map → p-979ae0e8.js.map} +1 -1
- package/dist/swisspost-internet-header/{p-69d380ec.system.js → p-9b1e0d60.system.js} +2 -2
- package/dist/swisspost-internet-header/{p-69d380ec.system.js.map → p-9b1e0d60.system.js.map} +1 -1
- package/dist/swisspost-internet-header/p-9b4d5e90.system.js.map +1 -1
- package/dist/swisspost-internet-header/p-a08ee9d3.entry.js +2 -0
- package/dist/swisspost-internet-header/{p-3339310e.js → p-a39139a9.js} +1 -1
- package/dist/swisspost-internet-header/p-a4d04c0b.system.entry.js +2 -0
- package/dist/swisspost-internet-header/{p-5f246e59.system.js → p-a7bc91ca.system.js} +10 -10
- package/dist/{esm-es5/klp-widget.controller-668f7e8d.js.map → swisspost-internet-header/p-a7bc91ca.system.js.map} +1 -1
- package/dist/swisspost-internet-header/{p-9af33755.system.js → p-a9f840df.system.js} +2 -2
- package/dist/swisspost-internet-header/p-a9f840df.system.js.map +1 -0
- package/dist/swisspost-internet-header/p-b3014611.system.js.map +1 -1
- package/dist/swisspost-internet-header/p-b8c6f6a6.system.entry.js +2 -0
- package/dist/swisspost-internet-header/{p-46f2c38c.js → p-bc60a641.js} +2 -2
- package/dist/swisspost-internet-header/{p-0096509c.js → p-bfbb5fc7.js} +2 -2
- package/dist/swisspost-internet-header/p-c466f253.entry.js +2 -0
- package/dist/swisspost-internet-header/{p-70df9137.js → p-c7f451bd.js} +2 -2
- package/dist/swisspost-internet-header/p-c7fba36e.system.entry.js +2 -0
- package/dist/swisspost-internet-header/p-c8153649.js +2 -0
- package/dist/swisspost-internet-header/{p-ad9a417b.system.js → p-c895eccc.system.js} +2 -2
- package/dist/swisspost-internet-header/p-d6ab4ef3.entry.js +2 -0
- package/dist/swisspost-internet-header/{p-0e776d6e.system.js → p-d7e221af.system.js} +1 -1
- package/dist/swisspost-internet-header/p-da7b8486.system.entry.js +2 -0
- package/dist/swisspost-internet-header/{p-bbfd407b.js → p-dc2f1d20.js} +1 -1
- package/dist/swisspost-internet-header/{p-ee5e0cc6.system.js → p-dd800ff2.system.js} +2 -2
- package/dist/swisspost-internet-header/{p-34fe9d92.system.js → p-e2985a86.system.js} +2 -2
- package/dist/swisspost-internet-header/{p-18e9ce89.system.js → p-e5acc124.system.js} +2 -2
- package/dist/swisspost-internet-header/p-e7bd7ab7.system.js +2 -0
- package/dist/swisspost-internet-header/p-e7bd7ab7.system.js.map +1 -0
- package/dist/swisspost-internet-header/p-fe4736f9.system.js +3 -0
- package/dist/swisspost-internet-header/p-fe4736f9.system.js.map +1 -0
- package/dist/swisspost-internet-header/p-ff36437b.entry.js +2 -0
- package/dist/swisspost-internet-header/swisspost-internet-header.css +1 -1
- package/dist/swisspost-internet-header/swisspost-internet-header.esm.js +1 -1
- package/dist/swisspost-internet-header/swisspost-internet-header.esm.js.map +1 -1
- package/dist/swisspost-internet-header/swisspost-internet-header.js +15 -15
- package/dist/types/assets/i18n/translations.d.ts +65 -65
- package/dist/types/components/post-internet-breadcrumbs/components/breadcrumb-list.component.d.ts +6 -6
- package/dist/types/components/post-internet-breadcrumbs/components/focus-trap.component.d.ts +1 -1
- package/dist/types/components/post-internet-breadcrumbs/components/middle-dropdown.component.d.ts +4 -4
- package/dist/types/components/post-internet-breadcrumbs/components/middle-links.component.d.ts +3 -3
- package/dist/types/components/post-internet-breadcrumbs/components/overlay.component.d.ts +6 -6
- package/dist/types/components/post-internet-breadcrumbs/post-internet-breadcrumbs.d.ts +51 -51
- package/dist/types/components/post-internet-footer/components/post-footer-block-address.component.d.ts +2 -2
- package/dist/types/components/post-internet-footer/components/post-footer-block-contact.component.d.ts +3 -3
- package/dist/types/components/post-internet-footer/components/post-footer-block-custom.component.d.ts +1 -1
- package/dist/types/components/post-internet-footer/components/post-footer-block-list.component.d.ts +2 -2
- package/dist/types/components/post-internet-footer/components/post-footer-block-socials.component.d.ts +2 -2
- package/dist/types/components/post-internet-footer/post-internet-footer.d.ts +11 -11
- package/dist/types/components/post-internet-header/post-internet-header.d.ts +127 -125
- package/dist/types/components/post-klp-login-widget/post-klp-login-widget.d.ts +11 -11
- package/dist/types/components/post-language-switch/components/post-language-switch-list.d.ts +3 -3
- package/dist/types/components/post-language-switch/post-language-switch.d.ts +23 -23
- package/dist/types/components/post-logo/post-logo.d.ts +2 -2
- package/dist/types/components/post-main-navigation/components/level-one-action.component.d.ts +5 -5
- package/dist/types/components/post-main-navigation/post-main-navigation.d.ts +38 -38
- package/dist/types/components/post-meta-navigation/post-meta-navigation.d.ts +3 -3
- package/dist/types/components/post-search/post-search.d.ts +65 -65
- package/dist/types/components/post-skiplinks/post-skiplinks.d.ts +7 -7
- package/dist/types/data/store.d.ts +11 -11
- package/dist/types/models/breadcrumbs.model.d.ts +25 -25
- package/dist/types/models/coveo.model.d.ts +14 -14
- package/dist/types/models/footer.model.d.ts +35 -35
- package/dist/types/models/general.model.d.ts +36 -36
- package/dist/types/models/geocode.model.d.ts +42 -42
- package/dist/types/models/header.model.d.ts +123 -123
- package/dist/types/models/implementor.model.d.ts +5 -5
- package/dist/types/models/language.model.d.ts +4 -4
- package/dist/types/models/track-and-trace.model.d.ts +22 -22
- package/dist/types/services/language.service.d.ts +65 -65
- package/dist/types/services/search/parcel.service.d.ts +1 -1
- package/dist/types/stencil-public-runtime.d.ts +8 -0
- package/dist/types/utils/highlighted.component.d.ts +2 -2
- package/dist/types/utils/if.component.d.ts +1 -1
- package/dist/types/utils/svg-icon.component.d.ts +2 -2
- package/package.json +24 -14
- package/readme.md +1 -1
- package/dist/cjs/if.component-2cd3c1ff.js +0 -12
- package/dist/cjs/index-4bd0adf1.js.map +0 -1
- package/dist/cjs/language.service-dbe2a435.js +0 -182
- package/dist/cjs/language.service-dbe2a435.js.map +0 -1
- package/dist/cjs/post-internet-breadcrumbs-e3ee842c.js.map +0 -1
- package/dist/cjs/post-internet-footer-16117586.js +0 -161
- package/dist/cjs/post-internet-footer-16117586.js.map +0 -1
- package/dist/cjs/post-internet-header-08840fbe.js +0 -828
- package/dist/cjs/post-internet-header-08840fbe.js.map +0 -1
- package/dist/cjs/post-klp-login-widget-5380708a.js +0 -63
- package/dist/cjs/post-language-switch-422af4d0.js.map +0 -1
- package/dist/cjs/post-main-navigation-2c9e953e.js +0 -240
- package/dist/cjs/post-main-navigation-2c9e953e.js.map +0 -1
- package/dist/cjs/post-search-7eb0a7a2.js.map +0 -1
- package/dist/cjs/post-skiplinks-3db1d214.js +0 -52
- package/dist/cjs/store-77668e50.js.map +0 -1
- package/dist/cjs/svg-sprite.component-68369645.js +0 -51
- package/dist/esm/if.component-3a779aca.js +0 -10
- package/dist/esm/index-2b83f5e9.js.map +0 -1
- package/dist/esm/language.service-501b09a8.js +0 -178
- package/dist/esm/language.service-501b09a8.js.map +0 -1
- package/dist/esm/post-internet-breadcrumbs-f268030c.js.map +0 -1
- package/dist/esm/post-internet-footer-3a501420.js +0 -159
- package/dist/esm/post-internet-footer-3a501420.js.map +0 -1
- package/dist/esm/post-internet-header-36aaba35.js +0 -826
- package/dist/esm/post-internet-header-36aaba35.js.map +0 -1
- package/dist/esm/post-klp-login-widget-57a4fdb5.js +0 -61
- package/dist/esm/post-language-switch-997ee4f9.js.map +0 -1
- package/dist/esm/post-main-navigation-77520c14.js +0 -238
- package/dist/esm/post-main-navigation-77520c14.js.map +0 -1
- package/dist/esm/post-search-a7f2e856.js.map +0 -1
- package/dist/esm/post-skiplinks-b3c32a77.js +0 -50
- package/dist/esm/store-80b19c12.js.map +0 -1
- package/dist/esm/svg-icon.component-7295f7cc.js +0 -8
- package/dist/esm/svg-sprite.component-cfc05f90.js +0 -49
- package/dist/esm-es5/index-2b83f5e9.js +0 -2
- package/dist/esm-es5/index-2b83f5e9.js.map +0 -1
- package/dist/esm-es5/post-internet-breadcrumbs-f268030c.js +0 -7
- package/dist/esm-es5/post-internet-header-36aaba35.js +0 -2
- package/dist/esm-es5/post-internet-header-36aaba35.js.map +0 -1
- package/dist/esm-es5/post-klp-login-widget-57a4fdb5.js +0 -2
- package/dist/esm-es5/post-main-navigation-77520c14.js +0 -2
- package/dist/esm-es5/post-main-navigation-77520c14.js.map +0 -1
- package/dist/esm-es5/store-80b19c12.js.map +0 -1
- package/dist/esm-es5/svg-icon.component-7295f7cc.js +0 -2
- package/dist/swisspost-internet-header/p-094eab7e.system.entry.js +0 -2
- package/dist/swisspost-internet-header/p-0f1f2469.system.js +0 -2
- package/dist/swisspost-internet-header/p-0f1f2469.system.js.map +0 -1
- package/dist/swisspost-internet-header/p-1a6d00a4.system.entry.js +0 -2
- package/dist/swisspost-internet-header/p-1bdc4b7b.js +0 -2
- package/dist/swisspost-internet-header/p-1bdc4b7b.js.map +0 -1
- package/dist/swisspost-internet-header/p-2340f9f1.entry.js +0 -2
- package/dist/swisspost-internet-header/p-236420dc.js +0 -2
- package/dist/swisspost-internet-header/p-2470951e.js +0 -2
- package/dist/swisspost-internet-header/p-2c612086.entry.js +0 -2
- package/dist/swisspost-internet-header/p-2eb179a7.entry.js +0 -2
- package/dist/swisspost-internet-header/p-3672587a.entry.js +0 -2
- package/dist/swisspost-internet-header/p-3bdf4efd.entry.js +0 -2
- package/dist/swisspost-internet-header/p-4248f499.system.entry.js +0 -2
- package/dist/swisspost-internet-header/p-5adcdd91.system.js +0 -2
- package/dist/swisspost-internet-header/p-5adcdd91.system.js.map +0 -1
- package/dist/swisspost-internet-header/p-606bd3f1.entry.js +0 -2
- package/dist/swisspost-internet-header/p-619bb76e.system.entry.js +0 -2
- package/dist/swisspost-internet-header/p-624d732c.js.map +0 -1
- package/dist/swisspost-internet-header/p-65ce36ba.entry.js +0 -2
- package/dist/swisspost-internet-header/p-669ed0d2.entry.js +0 -2
- package/dist/swisspost-internet-header/p-6e3b3c7a.system.js +0 -2
- package/dist/swisspost-internet-header/p-837fe525.system.entry.js +0 -2
- package/dist/swisspost-internet-header/p-83de3104.system.entry.js +0 -2
- package/dist/swisspost-internet-header/p-8ceafc83.js +0 -2
- package/dist/swisspost-internet-header/p-8ceafc83.js.map +0 -1
- package/dist/swisspost-internet-header/p-9af33755.system.js.map +0 -1
- package/dist/swisspost-internet-header/p-9c385f74.system.js +0 -3
- package/dist/swisspost-internet-header/p-9c385f74.system.js.map +0 -1
- package/dist/swisspost-internet-header/p-a0f5c014.system.entry.js +0 -2
- package/dist/swisspost-internet-header/p-a290e3e2.system.entry.js +0 -2
- package/dist/swisspost-internet-header/p-a5eda6dc.entry.js +0 -2
- package/dist/swisspost-internet-header/p-bd893111.system.js +0 -7
- package/dist/swisspost-internet-header/p-c0705313.system.entry.js +0 -2
- package/dist/swisspost-internet-header/p-c6bf4781.system.entry.js +0 -2
- package/dist/swisspost-internet-header/p-d294420b.system.js +0 -2
- package/dist/swisspost-internet-header/p-e2e1c5d4.js +0 -3
- package/dist/swisspost-internet-header/p-e2e1c5d4.js.map +0 -1
- package/dist/swisspost-internet-header/p-e81673c2.entry.js +0 -2
- package/dist/swisspost-internet-header/p-ea99866e.system.js +0 -2
- package/dist/swisspost-internet-header/p-ea99866e.system.js.map +0 -1
- package/dist/swisspost-internet-header/p-f6a2a74f.js +0 -7
- /package/dist/esm-es5/{if.component-3a779aca.js.map → if.component-d88d9e48.js.map} +0 -0
- /package/dist/esm-es5/{language.service-501b09a8.js.map → language.service-1bd090a7.js.map} +0 -0
- /package/dist/esm-es5/{post-language-switch-997ee4f9.js.map → post-language-switch-7df96469.js.map} +0 -0
- /package/dist/esm-es5/{post-logo-cde3c44d.js.map → post-logo-050acfc4.js.map} +0 -0
- /package/dist/esm-es5/{post-meta-navigation-09e9bdc8.js.map → post-meta-navigation-ece1e9de.js.map} +0 -0
- /package/dist/esm-es5/{post-search-a7f2e856.js.map → post-search-efd16c09.js.map} +0 -0
- /package/dist/esm-es5/{post-skiplinks-b3c32a77.js.map → post-skiplinks-c6b5addd.js.map} +0 -0
- /package/dist/esm-es5/{svg-icon.component-7295f7cc.js.map → svg-icon.component-fe96fac6.js.map} +0 -0
- /package/dist/esm-es5/{svg-sprite.component-cfc05f90.js.map → svg-sprite.component-4874b2fb.js.map} +0 -0
- /package/dist/esm-es5/{ui.service-a71cf490.js.map → ui.service-22f2c593.js.map} +0 -0
- /package/dist/esm-es5/{utils-3a8ff48f.js.map → utils-c8805f81.js.map} +0 -0
- /package/dist/swisspost-internet-header/{p-96618f42.system.js.map → p-0338115d.system.js.map} +0 -0
- /package/dist/swisspost-internet-header/{p-7ab3cbcb.js.map → p-0589b170.js.map} +0 -0
- /package/dist/swisspost-internet-header/{p-986a52bc.system.js.map → p-06f51515.system.js.map} +0 -0
- /package/dist/swisspost-internet-header/{p-094eab7e.system.entry.js.map → p-07313f1b.system.entry.js.map} +0 -0
- /package/dist/swisspost-internet-header/{p-16676174.system.js.map → p-11d02764.system.js.map} +0 -0
- /package/dist/swisspost-internet-header/{p-1a6d00a4.system.entry.js.map → p-1244a33a.entry.js.map} +0 -0
- /package/dist/swisspost-internet-header/{p-2340f9f1.entry.js.map → p-1c722d02.system.entry.js.map} +0 -0
- /package/dist/swisspost-internet-header/{p-2c612086.entry.js.map → p-1cb8fe46.entry.js.map} +0 -0
- /package/dist/swisspost-internet-header/{p-f2a43ce2.system.js.map → p-1fd8561a.system.js.map} +0 -0
- /package/dist/swisspost-internet-header/{p-7eaa5689.js.map → p-2a8d5787.js.map} +0 -0
- /package/dist/swisspost-internet-header/{p-2eb179a7.entry.js.map → p-3759e0aa.entry.js.map} +0 -0
- /package/dist/swisspost-internet-header/{p-3672587a.entry.js.map → p-4380032a.entry.js.map} +0 -0
- /package/dist/swisspost-internet-header/{p-78e8a405.js.map → p-4bc05e68.js.map} +0 -0
- /package/dist/swisspost-internet-header/{p-3bdf4efd.entry.js.map → p-5498ca7c.entry.js.map} +0 -0
- /package/dist/swisspost-internet-header/{p-a7de7323.system.js.map → p-5a69c918.system.js.map} +0 -0
- /package/dist/swisspost-internet-header/{p-4248f499.system.entry.js.map → p-5ac16bdd.system.entry.js.map} +0 -0
- /package/dist/swisspost-internet-header/{p-606bd3f1.entry.js.map → p-6d60866a.system.entry.js.map} +0 -0
- /package/dist/swisspost-internet-header/{p-619bb76e.system.entry.js.map → p-7505c3e1.system.entry.js.map} +0 -0
- /package/dist/swisspost-internet-header/{p-3a7f9457.js.map → p-7d188581.js.map} +0 -0
- /package/dist/swisspost-internet-header/{p-cf06f703.js.map → p-840aa5c6.js.map} +0 -0
- /package/dist/swisspost-internet-header/{p-dc8296bd.js.map → p-8a65e8d6.js.map} +0 -0
- /package/dist/swisspost-internet-header/{p-40806042.system.js.map → p-8b9d7320.system.js.map} +0 -0
- /package/dist/swisspost-internet-header/{p-65ce36ba.entry.js.map → p-8df32cb8.system.js.map} +0 -0
- /package/dist/swisspost-internet-header/{p-669ed0d2.entry.js.map → p-943d2956.system.entry.js.map} +0 -0
- /package/dist/swisspost-internet-header/{p-6e3b3c7a.system.js.map → p-948d3e8f.entry.js.map} +0 -0
- /package/dist/swisspost-internet-header/{p-837fe525.system.entry.js.map → p-a08ee9d3.entry.js.map} +0 -0
- /package/dist/swisspost-internet-header/{p-3339310e.js.map → p-a39139a9.js.map} +0 -0
- /package/dist/swisspost-internet-header/{p-83de3104.system.entry.js.map → p-a4d04c0b.system.entry.js.map} +0 -0
- /package/dist/swisspost-internet-header/{p-a0f5c014.system.entry.js.map → p-b8c6f6a6.system.entry.js.map} +0 -0
- /package/dist/swisspost-internet-header/{p-46f2c38c.js.map → p-bc60a641.js.map} +0 -0
- /package/dist/swisspost-internet-header/{p-0096509c.js.map → p-bfbb5fc7.js.map} +0 -0
- /package/dist/swisspost-internet-header/{p-a290e3e2.system.entry.js.map → p-c466f253.entry.js.map} +0 -0
- /package/dist/swisspost-internet-header/{p-70df9137.js.map → p-c7f451bd.js.map} +0 -0
- /package/dist/swisspost-internet-header/{p-a5eda6dc.entry.js.map → p-c7fba36e.system.entry.js.map} +0 -0
- /package/dist/swisspost-internet-header/{p-2470951e.js.map → p-c8153649.js.map} +0 -0
- /package/dist/swisspost-internet-header/{p-ad9a417b.system.js.map → p-c895eccc.system.js.map} +0 -0
- /package/dist/swisspost-internet-header/{p-c0705313.system.entry.js.map → p-d6ab4ef3.entry.js.map} +0 -0
- /package/dist/swisspost-internet-header/{p-0e776d6e.system.js.map → p-d7e221af.system.js.map} +0 -0
- /package/dist/swisspost-internet-header/{p-c6bf4781.system.entry.js.map → p-da7b8486.system.entry.js.map} +0 -0
- /package/dist/swisspost-internet-header/{p-bbfd407b.js.map → p-dc2f1d20.js.map} +0 -0
- /package/dist/swisspost-internet-header/{p-ee5e0cc6.system.js.map → p-dd800ff2.system.js.map} +0 -0
- /package/dist/swisspost-internet-header/{p-34fe9d92.system.js.map → p-e2985a86.system.js.map} +0 -0
- /package/dist/swisspost-internet-header/{p-18e9ce89.system.js.map → p-e5acc124.system.js.map} +0 -0
- /package/dist/swisspost-internet-header/{p-e81673c2.entry.js.map → p-ff36437b.entry.js.map} +0 -0
|
@@ -5,39 +5,39 @@
|
|
|
5
5
|
* @returns Modified Main Navigation Config
|
|
6
6
|
*/
|
|
7
7
|
export const markActiveRoute = (config, activeRouteProp) => {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
// Set compare URL and check if activeRouteProp is valid
|
|
13
|
-
let compareUrl;
|
|
14
|
-
config = resetOverrideConfig(config);
|
|
15
|
-
if (activeRouteProp === 'auto' || activeRouteProp === 'exact') {
|
|
16
|
-
// Check if an active route is already configured, set override to that and return
|
|
17
|
-
if (hasActivePortalRoute(config)) {
|
|
18
|
-
return resetActiveStateToPortalConfig(config);
|
|
8
|
+
// Don't highlight any route
|
|
9
|
+
if (activeRouteProp === false) {
|
|
10
|
+
return config;
|
|
19
11
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
12
|
+
// Set compare URL and check if activeRouteProp is valid
|
|
13
|
+
let compareUrl;
|
|
14
|
+
config = resetOverrideConfig(config);
|
|
15
|
+
if (activeRouteProp === 'auto' || activeRouteProp === 'exact') {
|
|
16
|
+
// Check if an active route is already configured, set override to that and return
|
|
17
|
+
if (hasActivePortalRoute(config)) {
|
|
18
|
+
return resetActiveStateToPortalConfig(config);
|
|
19
|
+
}
|
|
20
|
+
compareUrl = new URL(window.location.href);
|
|
25
21
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
22
|
+
else {
|
|
23
|
+
try {
|
|
24
|
+
compareUrl = new URL(activeRouteProp, document.location.origin);
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
console.warn(`Active Route: ${activeRouteProp} is not a valid URL. Navigation highlighting has been disabled.`);
|
|
28
|
+
return config;
|
|
29
|
+
}
|
|
29
30
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
const scoreList = compileScoreList(config, compareUrl, activeRouteProp);
|
|
32
|
+
if (scoreList.length === 0) {
|
|
33
|
+
// No match found or already active links defined
|
|
34
|
+
return config;
|
|
35
|
+
}
|
|
36
|
+
const winnerPair = scoreList[0];
|
|
37
|
+
winnerPair.main.isActiveOverride = true;
|
|
38
|
+
if (winnerPair.sub)
|
|
39
|
+
winnerPair.sub.isActiveOverride = true;
|
|
34
40
|
return config;
|
|
35
|
-
}
|
|
36
|
-
const winnerPair = scoreList[0];
|
|
37
|
-
winnerPair.main.isActiveOverride = true;
|
|
38
|
-
if (winnerPair.sub)
|
|
39
|
-
winnerPair.sub.isActiveOverride = true;
|
|
40
|
-
return config;
|
|
41
41
|
};
|
|
42
42
|
/**
|
|
43
43
|
* Check if the portal config set any active route
|
|
@@ -45,13 +45,13 @@ export const markActiveRoute = (config, activeRouteProp) => {
|
|
|
45
45
|
* @returns True if portal set any route as active
|
|
46
46
|
*/
|
|
47
47
|
export const hasActivePortalRoute = (config) => {
|
|
48
|
-
|
|
48
|
+
return config.filter(nav => nav.isActive).length > 0;
|
|
49
49
|
};
|
|
50
50
|
export const resetActiveStateToPortalConfig = (config) => {
|
|
51
|
-
|
|
51
|
+
return config.map(nav => (Object.assign(Object.assign({}, nav), { isActiveOverride: nav.isActive, flyout: nav.flyout.map(flyout => (Object.assign(Object.assign({}, flyout), { linkList: flyout.linkList.map(link => (Object.assign(Object.assign({}, link), { isActiveOverride: link.isActive }))) }))) })));
|
|
52
52
|
};
|
|
53
53
|
const resetOverrideConfig = (config) => {
|
|
54
|
-
|
|
54
|
+
return config.map(nav => (Object.assign(Object.assign({}, nav), { isActiveOverride: false, flyout: nav.flyout.map(flyout => (Object.assign(Object.assign({}, flyout), { linkList: flyout.linkList.map(link => (Object.assign(Object.assign({}, link), { isActiveOverride: false }))) }))) })));
|
|
55
55
|
};
|
|
56
56
|
/**
|
|
57
57
|
* Compile a list of scores based on the map mode, sorted in descending order
|
|
@@ -61,53 +61,53 @@ const resetOverrideConfig = (config) => {
|
|
|
61
61
|
* @returns A list of scored URLs if any matched
|
|
62
62
|
*/
|
|
63
63
|
export const compileScoreList = (config, compareUrl, activeRouteProp) => {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
try {
|
|
71
|
-
const score = compareRoutes(compareUrl, new URL(mainNav.url), activeRouteProp);
|
|
72
|
-
hadAnyActiveLink = updateScoreList(scoreList, score, { main: mainNav, score }, hadAnyActiveLink);
|
|
73
|
-
}
|
|
74
|
-
catch (_a) {
|
|
75
|
-
// Not a valid url, continue
|
|
76
|
-
}
|
|
77
|
-
// Loop through flyout links 2nd level
|
|
78
|
-
mainNav.flyout.forEach(flyout => {
|
|
79
|
-
var _a;
|
|
80
|
-
(_a = flyout.linkList) === null || _a === void 0 ? void 0 : _a.forEach(linklist => {
|
|
81
|
-
// Don't override if any link is already active
|
|
82
|
-
if (linklist.isActive && (activeRouteProp === 'auto' || activeRouteProp === 'exact')) {
|
|
83
|
-
hadAnyActiveLink = true;
|
|
84
|
-
return;
|
|
85
|
-
}
|
|
64
|
+
// Flag to check if the Portal set any active links or if there are any exact matches
|
|
65
|
+
let hadAnyActiveLink = false;
|
|
66
|
+
const scoreList = [];
|
|
67
|
+
config
|
|
68
|
+
.filter(mainNav => !hadAnyActiveLink && mainNav)
|
|
69
|
+
.forEach(mainNav => {
|
|
86
70
|
try {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
hadAnyActiveLink = updateScoreList(scoreList, score, { main: mainNav, sub: linklist, score }, hadAnyActiveLink);
|
|
71
|
+
const score = compareRoutes(compareUrl, new URL(mainNav.url), activeRouteProp);
|
|
72
|
+
hadAnyActiveLink = updateScoreList(scoreList, score, { main: mainNav, score }, hadAnyActiveLink);
|
|
90
73
|
}
|
|
91
74
|
catch (_a) {
|
|
92
|
-
|
|
75
|
+
// Not a valid url, continue
|
|
93
76
|
}
|
|
94
|
-
|
|
77
|
+
// Loop through flyout links 2nd level
|
|
78
|
+
mainNav.flyout.forEach(flyout => {
|
|
79
|
+
var _a;
|
|
80
|
+
(_a = flyout.linkList) === null || _a === void 0 ? void 0 : _a.forEach(linklist => {
|
|
81
|
+
// Don't override if any link is already active
|
|
82
|
+
if (linklist.isActive && (activeRouteProp === 'auto' || activeRouteProp === 'exact')) {
|
|
83
|
+
hadAnyActiveLink = true;
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
try {
|
|
87
|
+
const url = new URL(linklist.url);
|
|
88
|
+
const score = compareRoutes(compareUrl, url, activeRouteProp);
|
|
89
|
+
hadAnyActiveLink = updateScoreList(scoreList, score, { main: mainNav, sub: linklist, score }, hadAnyActiveLink);
|
|
90
|
+
}
|
|
91
|
+
catch (_a) {
|
|
92
|
+
// Not a valid URL, continue
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
});
|
|
95
96
|
});
|
|
96
|
-
|
|
97
|
-
return scoreList.sort((a, b) => b.score - a.score);
|
|
97
|
+
return scoreList.sort((a, b) => b.score - a.score);
|
|
98
98
|
};
|
|
99
99
|
/**
|
|
100
100
|
* Update score list
|
|
101
101
|
*/
|
|
102
102
|
function updateScoreList(scoreList, score, scoreListItem, hadAnyActiveLink) {
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
103
|
+
let hadActiveLink = hadAnyActiveLink;
|
|
104
|
+
if (score > 0) {
|
|
105
|
+
if (score === Infinity)
|
|
106
|
+
hadActiveLink = true;
|
|
107
|
+
// Push score
|
|
108
|
+
scoreList.push(scoreListItem);
|
|
109
|
+
}
|
|
110
|
+
return hadActiveLink;
|
|
111
111
|
}
|
|
112
112
|
/**
|
|
113
113
|
* Compare two URLs for similarity based on a match mode
|
|
@@ -117,34 +117,34 @@ function updateScoreList(scoreList, score, scoreListItem, hadAnyActiveLink) {
|
|
|
117
117
|
* @returns Score
|
|
118
118
|
*/
|
|
119
119
|
export const compareRoutes = (baseUrl, compareUrl, matchMode) => {
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
120
|
+
// One url is not defined or they don't share the same orign
|
|
121
|
+
if (baseUrl === null || compareUrl === null || baseUrl.origin !== compareUrl.origin) {
|
|
122
|
+
return 0;
|
|
123
|
+
}
|
|
124
|
+
const baseUrlPath = baseUrl.pathname.toLocaleLowerCase();
|
|
125
|
+
const compareUrlPath = compareUrl.pathname.toLocaleLowerCase();
|
|
126
|
+
// Exact match, origin and pathname are the same
|
|
127
|
+
if (baseUrlPath === compareUrlPath) {
|
|
128
|
+
return Infinity;
|
|
129
|
+
}
|
|
130
|
+
// The basepath is longer than the comparison, a match is impossible
|
|
131
|
+
if (baseUrl.pathname.length < compareUrl.pathname.length) {
|
|
132
|
+
return 0;
|
|
133
|
+
}
|
|
134
|
+
if (matchMode === 'auto') {
|
|
135
|
+
const baseSegments = [
|
|
136
|
+
baseUrl.origin.toLocaleLowerCase(),
|
|
137
|
+
...baseUrlPath.split('/').filter(x => x !== null && x !== ''),
|
|
138
|
+
];
|
|
139
|
+
const compareSegments = [
|
|
140
|
+
compareUrl.origin.toLocaleLowerCase(),
|
|
141
|
+
...compareUrlPath.split('/').filter(x => x !== null && x !== ''),
|
|
142
|
+
];
|
|
143
|
+
const score = getSimilarityScore(baseSegments, compareSegments);
|
|
144
|
+
// If only some segments match, but not the whole smaller array, it's not a match
|
|
145
|
+
return Math.min(baseSegments.length, compareSegments.length) === score ? score : 0;
|
|
146
|
+
}
|
|
132
147
|
return 0;
|
|
133
|
-
}
|
|
134
|
-
if (matchMode === 'auto') {
|
|
135
|
-
const baseSegments = [
|
|
136
|
-
baseUrl.origin.toLocaleLowerCase(),
|
|
137
|
-
...baseUrlPath.split('/').filter(x => x !== null && x !== ''),
|
|
138
|
-
];
|
|
139
|
-
const compareSegments = [
|
|
140
|
-
compareUrl.origin.toLocaleLowerCase(),
|
|
141
|
-
...compareUrlPath.split('/').filter(x => x !== null && x !== ''),
|
|
142
|
-
];
|
|
143
|
-
const score = getSimilarityScore(baseSegments, compareSegments);
|
|
144
|
-
// If only some segments match, but not the whole smaller array, it's not a match
|
|
145
|
-
return Math.min(baseSegments.length, compareSegments.length) === score ? score : 0;
|
|
146
|
-
}
|
|
147
|
-
return 0;
|
|
148
148
|
};
|
|
149
149
|
/**
|
|
150
150
|
* Check how many items in an array match
|
|
@@ -153,15 +153,15 @@ export const compareRoutes = (baseUrl, compareUrl, matchMode) => {
|
|
|
153
153
|
* @returns Score
|
|
154
154
|
*/
|
|
155
155
|
export const getSimilarityScore = (a, b) => {
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
156
|
+
if (a == null || b == null || a.length === 0 || b.length === 0) {
|
|
157
|
+
return 0;
|
|
158
|
+
}
|
|
159
|
+
let i = 0;
|
|
160
|
+
for (; i < Math.min(a.length, b.length); i++) {
|
|
161
|
+
if (a[i] !== b[i]) {
|
|
162
|
+
return 0;
|
|
163
|
+
}
|
|
163
164
|
}
|
|
164
|
-
|
|
165
|
-
return i;
|
|
165
|
+
return i;
|
|
166
166
|
};
|
|
167
167
|
//# sourceMappingURL=route.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.service.js","sourceRoot":"","sources":["../../../src/services/route.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { ActiveRouteProp } from '../models/general.model';\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 === null || compareUrl === null || 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 !== null && x !== ''),\n ];\n const compareSegments = [\n compareUrl.origin.toLocaleLowerCase(),\n ...compareUrlPath.split('/').filter(x => x !== null && 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 == null || b == null || a.length === 0 || b.length === 0) {\n return 0;\n }\n\n let i = 0;\n for (; i < Math.min(a.length, b.length); i++) {\n if (a[i] !== b[i]) {\n return 0;\n }\n }\n\n return i;\n};\n"]}
|
|
1
|
+
{"version":3,"file":"route.service.js","sourceRoot":"","sources":["../../../src/services/route.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { ActiveRouteProp } from '../models/general.model';\nimport { NavMainEntity, MainNavScoreList } from '../models/header.model';\n\n/**\n * Activate the current route based on the config and the match mode\n * @param config Main Navigation Config\n * @param activeRouteProp Match mode\n * @returns Modified Main Navigation Config\n */\nexport const markActiveRoute = (\n config: NavMainEntity[],\n activeRouteProp: ActiveRouteProp,\n): NavMainEntity[] => {\n // Don't highlight any route\n if (activeRouteProp === false) {\n return config;\n }\n\n // Set compare URL and check if activeRouteProp is valid\n let compareUrl: URL;\n config = resetOverrideConfig(config);\n\n if (activeRouteProp === 'auto' || activeRouteProp === 'exact') {\n // Check if an active route is already configured, set override to that and return\n if (hasActivePortalRoute(config)) {\n return resetActiveStateToPortalConfig(config);\n }\n\n compareUrl = new URL(window.location.href);\n } else {\n try {\n compareUrl = new URL(activeRouteProp, document.location.origin);\n } catch (error) {\n console.warn(\n `Active Route: ${activeRouteProp} is not a valid URL. Navigation highlighting has been disabled.`,\n );\n return config;\n }\n }\n\n const scoreList = compileScoreList(config, compareUrl, activeRouteProp);\n\n if (scoreList.length === 0) {\n // No match found or already active links defined\n return config;\n }\n\n const winnerPair = scoreList[0];\n winnerPair.main.isActiveOverride = true;\n if (winnerPair.sub) winnerPair.sub.isActiveOverride = true;\n\n return config;\n};\n\n/**\n * Check if the portal config set any active route\n * @param config Main navigation config\n * @returns True if portal set any route as active\n */\nexport const hasActivePortalRoute = (config: NavMainEntity[]): boolean => {\n return config.filter(nav => nav.isActive).length > 0;\n};\n\nexport const resetActiveStateToPortalConfig = (config: NavMainEntity[]): NavMainEntity[] => {\n return config.map(nav => ({\n ...nav,\n isActiveOverride: nav.isActive,\n flyout: nav.flyout.map(flyout => ({\n ...flyout,\n linkList: flyout.linkList.map(link => ({ ...link, isActiveOverride: link.isActive })),\n })),\n }));\n};\n\nconst resetOverrideConfig = (config: NavMainEntity[]): NavMainEntity[] => {\n return config.map(nav => ({\n ...nav,\n isActiveOverride: false,\n flyout: nav.flyout.map(flyout => ({\n ...flyout,\n linkList: flyout.linkList.map(link => ({ ...link, isActiveOverride: false })),\n })),\n }));\n};\n\n/**\n * Compile a list of scores based on the map mode, sorted in descending order\n * @param config Main Nav Config\n * @param compareUrl Current Browser URL or a custom URL\n * @param activeRouteProp Match mode\n * @returns A list of scored URLs if any matched\n */\nexport const compileScoreList = (\n config: NavMainEntity[],\n compareUrl: URL,\n activeRouteProp: ActiveRouteProp,\n): MainNavScoreList => {\n // Flag to check if the Portal set any active links or if there are any exact matches\n let hadAnyActiveLink = false;\n const scoreList: MainNavScoreList = [];\n\n config\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 === null || compareUrl === null || 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 !== null && x !== ''),\n ];\n const compareSegments = [\n compareUrl.origin.toLocaleLowerCase(),\n ...compareUrlPath.split('/').filter(x => x !== null && 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 == null || b == null || a.length === 0 || b.length === 0) {\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"]}
|
|
@@ -10,34 +10,34 @@ let suggestionsController;
|
|
|
10
10
|
* @returns
|
|
11
11
|
*/
|
|
12
12
|
export const getCoveoSuggestions = async (query) => {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
13
|
+
var _a, _b, _c, _d;
|
|
14
|
+
if (((_b = (_a = state.localizedConfig) === null || _a === void 0 ? void 0 : _a.header) === null || _b === void 0 ? void 0 : _b.search) === undefined ||
|
|
15
|
+
((_d = (_c = state.localizedConfig) === null || _c === void 0 ? void 0 : _c.header) === null || _d === void 0 ? void 0 : _d.search.isCustomSuggestionHidden) === true)
|
|
16
|
+
return [];
|
|
17
|
+
const config = state.localizedConfig.header.search;
|
|
18
|
+
const { token, organisation } = coveo.environment[state.environment];
|
|
19
|
+
const url = `${coveo.url}?q=${query}&locale=${state.currentLanguage}&searchHub=${config.searchHubName}&pipeline=${config.searchPipelineName}&organizationId=${organisation}`;
|
|
20
|
+
if (suggestionsController)
|
|
21
|
+
suggestionsController.abort();
|
|
22
|
+
suggestionsController = new AbortController();
|
|
23
|
+
return new Promise((resolve, reject) => {
|
|
24
|
+
fetch(url, {
|
|
25
|
+
signal: suggestionsController.signal,
|
|
26
|
+
method: 'GET',
|
|
27
|
+
headers: {
|
|
28
|
+
Authorization: `Bearer ${token}`,
|
|
29
|
+
},
|
|
30
|
+
})
|
|
31
|
+
.then(response => response.json())
|
|
32
|
+
.then((coveoJSON) => {
|
|
33
|
+
resolve(coveoJSON.completions.map(completion => (Object.assign(Object.assign({}, completion), { redirectUrl: getSearchPageUrl(completion.expression) }))));
|
|
34
|
+
})
|
|
35
|
+
.catch(error => {
|
|
36
|
+
if (error.name !== 'AbortError') {
|
|
37
|
+
console.error(`Fetching coveo suggestions failed, ${error}\nDid you add "*.coveo.com" to your connect-src content security policy and tried turning off your adblocker?`);
|
|
38
|
+
reject(error);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
40
41
|
});
|
|
41
|
-
});
|
|
42
42
|
};
|
|
43
43
|
//# sourceMappingURL=coveo.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coveo.service.js","sourceRoot":"","sources":["../../../../src/services/search/coveo.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,IAAI,qBAAsC,CAAC;AAE3C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EAAE,KAAa,EAA8B,EAAE;;
|
|
1
|
+
{"version":3,"file":"coveo.service.js","sourceRoot":"","sources":["../../../../src/services/search/coveo.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,IAAI,qBAAsC,CAAC;AAE3C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EAAE,KAAa,EAA8B,EAAE;;IACrF,IACE,CAAA,MAAA,MAAA,KAAK,CAAC,eAAe,0CAAE,MAAM,0CAAE,MAAM,MAAK,SAAS;QACnD,CAAA,MAAA,MAAA,KAAK,CAAC,eAAe,0CAAE,MAAM,0CAAE,MAAM,CAAC,wBAAwB,MAAK,IAAI;QAEvE,OAAO,EAAE,CAAC;IACZ,MAAM,MAAM,GAAG,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC;IACnD,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACrE,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG,MAAM,KAAK,WAAW,KAAK,CAAC,eAAe,cAAc,MAAM,CAAC,aAAa,aAAa,MAAM,CAAC,kBAAkB,mBAAmB,YAAY,EAAE,CAAC;IAE7K,IAAI,qBAAqB;QAAE,qBAAqB,CAAC,KAAK,EAAE,CAAC;IACzD,qBAAqB,GAAG,IAAI,eAAe,EAAE,CAAC;IAE9C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,KAAK,CAAC,GAAG,EAAE;YACT,MAAM,EAAE,qBAAqB,CAAC,MAAM;YACpC,MAAM,EAAE,KAAK;YACb,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,KAAK,EAAE;aACjC;SACF,CAAC;aACC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;aACjC,IAAI,CAAC,CAAC,SAAwB,EAAE,EAAE;YACjC,OAAO,CACL,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,iCACnC,UAAU,KACb,WAAW,EAAE,gBAAgB,CAAC,UAAU,CAAC,UAAU,CAAC,IACpD,CAAC,CACJ,CAAC;QACJ,CAAC,CAAC;aACD,KAAK,CAAC,KAAK,CAAC,EAAE;YACb,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAChC,OAAO,CAAC,KAAK,CACX,sCAAsC,KAAK,+GAA+G,CAC3J,CAAC;gBACF,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC;QACH,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACL,CAAC,CAAC","sourcesContent":["import { state } from '../../data/store';\nimport { CoveoCompletion, CoveoResponse } from '../../models/coveo.model';\nimport { coveo } from './coveo.settings';\nimport { getSearchPageUrl } from './search.service';\n\nlet suggestionsController: AbortController;\n\n/**\n * Get suggestions from coveo\n * https://docs.coveo.com/en/1459/build-a-search-ui/get-query-suggestions#context-object\n *\n * @param query Search term\n * @returns\n */\nexport const getCoveoSuggestions = async (query: string): Promise<CoveoCompletion[]> => {\n if (\n state.localizedConfig?.header?.search === undefined ||\n state.localizedConfig?.header?.search.isCustomSuggestionHidden === true\n )\n return [];\n const config = state.localizedConfig.header.search;\n const { token, organisation } = coveo.environment[state.environment];\n const url = `${coveo.url}?q=${query}&locale=${state.currentLanguage}&searchHub=${config.searchHubName}&pipeline=${config.searchPipelineName}&organizationId=${organisation}`;\n\n if (suggestionsController) suggestionsController.abort();\n suggestionsController = new AbortController();\n\n return new Promise((resolve, reject) => {\n fetch(url, {\n signal: suggestionsController.signal,\n method: 'GET',\n headers: {\n Authorization: `Bearer ${token}`,\n },\n })\n .then(response => response.json())\n .then((coveoJSON: CoveoResponse) => {\n resolve(\n coveoJSON.completions.map(completion => ({\n ...completion,\n redirectUrl: getSearchPageUrl(completion.expression),\n })),\n );\n })\n .catch(error => {\n if (error.name !== 'AbortError') {\n console.error(\n `Fetching coveo suggestions failed, ${error}\\nDid you add \"*.coveo.com\" to your connect-src content security policy and tried turning off your adblocker?`,\n );\n reject(error);\n }\n });\n });\n};\n"]}
|
|
@@ -1,35 +1,35 @@
|
|
|
1
1
|
// Coveo constants
|
|
2
2
|
export const coveo = {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
url: 'https://platform-eu.cloud.coveo.com/rest/search/v2/querySuggest',
|
|
4
|
+
environment: {
|
|
5
|
+
prod: {
|
|
6
|
+
organisation: 'postchagprod6ef4sbet',
|
|
7
|
+
token: 'xx5b629890-23b9-4fbe-b601-0e8719186969',
|
|
8
|
+
},
|
|
9
|
+
int01: {
|
|
10
|
+
organisation: 'postchagnonprods5sq57qt',
|
|
11
|
+
token: 'xx7c0e52ab-3de2-4fbd-b9a7-6ca6abd532b4',
|
|
12
|
+
},
|
|
13
|
+
int02: {
|
|
14
|
+
organisation: 'postchagnonprods5sq57qt',
|
|
15
|
+
token: 'xx7c0e52ab-3de2-4fbd-b9a7-6ca6abd532b4',
|
|
16
|
+
},
|
|
17
|
+
dev01: {
|
|
18
|
+
organisation: 'postchagnonprods5sq57qt',
|
|
19
|
+
token: 'xx7c0e52ab-3de2-4fbd-b9a7-6ca6abd532b4',
|
|
20
|
+
},
|
|
21
|
+
dev02: {
|
|
22
|
+
organisation: 'postchagnonprods5sq57qt',
|
|
23
|
+
token: 'xx7c0e52ab-3de2-4fbd-b9a7-6ca6abd532b4',
|
|
24
|
+
},
|
|
25
|
+
devs1: {
|
|
26
|
+
organisation: 'postchagnonprods5sq57qt',
|
|
27
|
+
token: 'xx7c0e52ab-3de2-4fbd-b9a7-6ca6abd532b4',
|
|
28
|
+
},
|
|
29
|
+
test: {
|
|
30
|
+
organisation: 'postchagnonprods5sq57qt',
|
|
31
|
+
token: 'xx7c0e52ab-3de2-4fbd-b9a7-6ca6abd532b4',
|
|
32
|
+
},
|
|
8
33
|
},
|
|
9
|
-
int01: {
|
|
10
|
-
organisation: 'postchagnonprods5sq57qt',
|
|
11
|
-
token: 'xx7c0e52ab-3de2-4fbd-b9a7-6ca6abd532b4',
|
|
12
|
-
},
|
|
13
|
-
int02: {
|
|
14
|
-
organisation: 'postchagnonprods5sq57qt',
|
|
15
|
-
token: 'xx7c0e52ab-3de2-4fbd-b9a7-6ca6abd532b4',
|
|
16
|
-
},
|
|
17
|
-
dev01: {
|
|
18
|
-
organisation: 'postchagnonprods5sq57qt',
|
|
19
|
-
token: 'xx7c0e52ab-3de2-4fbd-b9a7-6ca6abd532b4',
|
|
20
|
-
},
|
|
21
|
-
dev02: {
|
|
22
|
-
organisation: 'postchagnonprods5sq57qt',
|
|
23
|
-
token: 'xx7c0e52ab-3de2-4fbd-b9a7-6ca6abd532b4',
|
|
24
|
-
},
|
|
25
|
-
devs1: {
|
|
26
|
-
organisation: 'postchagnonprods5sq57qt',
|
|
27
|
-
token: 'xx7c0e52ab-3de2-4fbd-b9a7-6ca6abd532b4',
|
|
28
|
-
},
|
|
29
|
-
test: {
|
|
30
|
-
organisation: 'postchagnonprods5sq57qt',
|
|
31
|
-
token: 'xx7c0e52ab-3de2-4fbd-b9a7-6ca6abd532b4',
|
|
32
|
-
},
|
|
33
|
-
},
|
|
34
34
|
};
|
|
35
35
|
//# sourceMappingURL=coveo.settings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coveo.settings.js","sourceRoot":"","sources":["../../../../src/services/search/coveo.settings.ts"],"names":[],"mappings":"AAEA,kBAAkB;AAClB,MAAM,CAAC,MAAM,KAAK,GAAiB;
|
|
1
|
+
{"version":3,"file":"coveo.settings.js","sourceRoot":"","sources":["../../../../src/services/search/coveo.settings.ts"],"names":[],"mappings":"AAEA,kBAAkB;AAClB,MAAM,CAAC,MAAM,KAAK,GAAiB;IACjC,GAAG,EAAE,iEAAiE;IACtE,WAAW,EAAE;QACX,IAAI,EAAE;YACJ,YAAY,EAAE,sBAAsB;YACpC,KAAK,EAAE,wCAAwC;SAChD;QACD,KAAK,EAAE;YACL,YAAY,EAAE,yBAAyB;YACvC,KAAK,EAAE,wCAAwC;SAChD;QACD,KAAK,EAAE;YACL,YAAY,EAAE,yBAAyB;YACvC,KAAK,EAAE,wCAAwC;SAChD;QACD,KAAK,EAAE;YACL,YAAY,EAAE,yBAAyB;YACvC,KAAK,EAAE,wCAAwC;SAChD;QACD,KAAK,EAAE;YACL,YAAY,EAAE,yBAAyB;YACvC,KAAK,EAAE,wCAAwC;SAChD;QACD,KAAK,EAAE;YACL,YAAY,EAAE,yBAAyB;YACvC,KAAK,EAAE,wCAAwC;SAChD;QACD,IAAI,EAAE;YACJ,YAAY,EAAE,yBAAyB;YACvC,KAAK,EAAE,wCAAwC;SAChD;KACF;CACF,CAAC","sourcesContent":["import { CoveoOptions } from '../../models/coveo.model';\n\n// Coveo constants\nexport const coveo: CoveoOptions = {\n url: 'https://platform-eu.cloud.coveo.com/rest/search/v2/querySuggest',\n environment: {\n prod: {\n organisation: 'postchagprod6ef4sbet',\n token: 'xx5b629890-23b9-4fbe-b601-0e8719186969',\n },\n int01: {\n organisation: 'postchagnonprods5sq57qt',\n token: 'xx7c0e52ab-3de2-4fbd-b9a7-6ca6abd532b4',\n },\n int02: {\n organisation: 'postchagnonprods5sq57qt',\n token: 'xx7c0e52ab-3de2-4fbd-b9a7-6ca6abd532b4',\n },\n dev01: {\n organisation: 'postchagnonprods5sq57qt',\n token: 'xx7c0e52ab-3de2-4fbd-b9a7-6ca6abd532b4',\n },\n dev02: {\n organisation: 'postchagnonprods5sq57qt',\n token: 'xx7c0e52ab-3de2-4fbd-b9a7-6ca6abd532b4',\n },\n devs1: {\n organisation: 'postchagnonprods5sq57qt',\n token: 'xx7c0e52ab-3de2-4fbd-b9a7-6ca6abd532b4',\n },\n test: {\n organisation: 'postchagnonprods5sq57qt',\n token: 'xx7c0e52ab-3de2-4fbd-b9a7-6ca6abd532b4',\n },\n },\n};\n"]}
|
|
@@ -3,12 +3,12 @@ let parcelController;
|
|
|
3
3
|
// https://www.post.ch/api/trackandtrace?id=99.00.306600.01004883
|
|
4
4
|
// Track and trace URL
|
|
5
5
|
export const getTrackAndTraceApiUrl = (id) => {
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
const lang = state.currentLanguage;
|
|
7
|
+
return `https://www.post.ch/${lang}/api/trackandtrace?id=${encodeURIComponent(id)}`;
|
|
8
8
|
};
|
|
9
9
|
// Get the redire
|
|
10
10
|
export const getTrackAndTraceRedirectUrl = (query, { packageTrackingRedirectUrl }) => {
|
|
11
|
-
|
|
11
|
+
return packageTrackingRedirectUrl.replace('{trackingNumber}', encodeURIComponent(query));
|
|
12
12
|
};
|
|
13
13
|
/**
|
|
14
14
|
* Check whether a query is a tracking id
|
|
@@ -17,8 +17,8 @@ export const getTrackAndTraceRedirectUrl = (query, { packageTrackingRedirectUrl
|
|
|
17
17
|
* @returns Boolean
|
|
18
18
|
*/
|
|
19
19
|
export const isParcel = async (query, searchConfig) => {
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
const parcelInfo = await getParcelInfo(query, searchConfig);
|
|
21
|
+
return 'sending' in parcelInfo;
|
|
22
22
|
};
|
|
23
23
|
/**
|
|
24
24
|
* Try to get parcel info from a query that is possibly a tracking id.
|
|
@@ -28,27 +28,27 @@ export const isParcel = async (query, searchConfig) => {
|
|
|
28
28
|
* @returns Track and trace info
|
|
29
29
|
*/
|
|
30
30
|
export const getParcelInfo = async (query, { redirectPattern }) => {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
31
|
+
const trackingNrPattern = new RegExp(redirectPattern);
|
|
32
|
+
if (trackingNrPattern.test(query)) {
|
|
33
|
+
const url = getTrackAndTraceApiUrl(query);
|
|
34
|
+
if (parcelController)
|
|
35
|
+
parcelController.abort();
|
|
36
|
+
parcelController = new AbortController();
|
|
37
|
+
return new Promise((resolve, reject) => {
|
|
38
|
+
fetch(url, { signal: parcelController.signal })
|
|
39
|
+
.then(response => response.json())
|
|
40
|
+
.then((trackAndTraceResult) => {
|
|
41
|
+
resolve(Object.assign(Object.assign({}, trackAndTraceResult), { ok: trackAndTraceResult.ok }));
|
|
42
|
+
})
|
|
43
|
+
.catch(error => {
|
|
44
|
+
if (error.name !== 'AbortError') {
|
|
45
|
+
console.error(`Could not check track and trace API due to error: ${error.message}`);
|
|
46
|
+
reject(error);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
return { ok: false, timestamp: new Date().toDateString() };
|
|
52
52
|
};
|
|
53
53
|
/**
|
|
54
54
|
* Get parcel info if query is a parcel or null
|
|
@@ -57,8 +57,8 @@ export const getParcelInfo = async (query, { redirectPattern }) => {
|
|
|
57
57
|
* @returns Parcel info and a redirect url or null if not a parcel
|
|
58
58
|
*/
|
|
59
59
|
export const getParcelSuggestion = async (query, searchConfig) => {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
60
|
+
const parcelInfo = await getParcelInfo(query, searchConfig);
|
|
61
|
+
return parcelInfo.ok
|
|
62
|
+
? Object.assign(Object.assign({}, parcelInfo), { url: getTrackAndTraceRedirectUrl(query, searchConfig) }) : null;
|
|
63
63
|
};
|
|
64
64
|
//# sourceMappingURL=parcel.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parcel.service.js","sourceRoot":"","sources":["../../../../src/services/search/parcel.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAIzC,IAAI,gBAAiC,CAAC;AAEtC,iEAAiE;AAEjE,sBAAsB;AACtB,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,EAAU,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"parcel.service.js","sourceRoot":"","sources":["../../../../src/services/search/parcel.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAIzC,IAAI,gBAAiC,CAAC;AAEtC,iEAAiE;AAEjE,sBAAsB;AACtB,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,EAAU,EAAE,EAAE;IACnD,MAAM,IAAI,GAAG,KAAK,CAAC,eAAe,CAAC;IACnC,OAAO,uBAAuB,IAAI,yBAAyB,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC;AACtF,CAAC,CAAC;AAEF,iBAAiB;AACjB,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,KAAa,EACb,EAAE,0BAA0B,EAAiB,EAC7C,EAAE;IACF,OAAO,0BAA0B,CAAC,OAAO,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3F,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAAE,KAAa,EAAE,YAA2B,EAAoB,EAAE;IAC7F,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IAC5D,OAAO,SAAS,IAAI,UAAU,CAAC;AACjC,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAChC,KAAa,EACb,EAAE,eAAe,EAAiB,EACN,EAAE;IAC9B,MAAM,iBAAiB,GAAG,IAAI,MAAM,CAAC,eAAe,CAAC,CAAC;IAEtD,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAE1C,IAAI,gBAAgB;YAAE,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC/C,gBAAgB,GAAG,IAAI,eAAe,EAAE,CAAC;QAEzC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,gBAAgB,CAAC,MAAM,EAAE,CAAC;iBAC5C,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;iBACjC,IAAI,CAAC,CAAC,mBAAsC,EAAE,EAAE;gBAC/C,OAAO,iCAAM,mBAAmB,KAAE,EAAE,EAAE,mBAAmB,CAAC,EAAE,IAAG,CAAC;YAClE,CAAC,CAAC;iBACD,KAAK,CAAC,KAAK,CAAC,EAAE;gBACb,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBAChC,OAAO,CAAC,KAAK,CAAC,qDAAqD,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;oBACpF,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC;AAC7D,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EACtC,KAAa,EACb,YAA2B,EAC4B,EAAE;IACzD,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IAC5D,OAAO,UAAU,CAAC,EAAE;QAClB,CAAC,iCAAM,UAAU,KAAE,GAAG,EAAE,2BAA2B,CAAC,KAAK,EAAE,YAAY,CAAC,IACxE,CAAC,CAAC,IAAI,CAAC;AACX,CAAC,CAAC","sourcesContent":["import { state } from '../../data/store';\nimport { ISearchConfig } from '../../models/header.model';\nimport { TrackAndTraceInfo } from '../../models/track-and-trace.model';\n\nlet parcelController: AbortController;\n\n// https://www.post.ch/api/trackandtrace?id=99.00.306600.01004883\n\n// Track and trace URL\nexport const getTrackAndTraceApiUrl = (id: string) => {\n const lang = state.currentLanguage;\n return `https://www.post.ch/${lang}/api/trackandtrace?id=${encodeURIComponent(id)}`;\n};\n\n// Get the redire\nexport const getTrackAndTraceRedirectUrl = (\n query: string,\n { packageTrackingRedirectUrl }: ISearchConfig,\n) => {\n return packageTrackingRedirectUrl.replace('{trackingNumber}', encodeURIComponent(query));\n};\n\n/**\n * Check whether a query is a tracking id\n *\n * @param query User query\n * @returns Boolean\n */\nexport const isParcel = async (query: string, searchConfig: ISearchConfig): Promise<boolean> => {\n const parcelInfo = await getParcelInfo(query, searchConfig);\n return 'sending' in parcelInfo;\n};\n\n/**\n * Try to get parcel info from a query that is possibly a tracking id.\n * This is mainly used to check if a search should redirect to track&trace instead of the regular search.\n *\n * @param query User query that is possibly a tracking number\n * @returns Track and trace info\n */\nexport const getParcelInfo = async (\n query: string,\n { redirectPattern }: ISearchConfig,\n): Promise<TrackAndTraceInfo> => {\n const trackingNrPattern = new RegExp(redirectPattern);\n\n if (trackingNrPattern.test(query)) {\n const url = getTrackAndTraceApiUrl(query);\n\n if (parcelController) parcelController.abort();\n parcelController = new AbortController();\n\n return new Promise((resolve, reject) => {\n fetch(url, { signal: parcelController.signal })\n .then(response => response.json())\n .then((trackAndTraceResult: TrackAndTraceInfo) => {\n resolve({ ...trackAndTraceResult, ok: trackAndTraceResult.ok });\n })\n .catch(error => {\n if (error.name !== 'AbortError') {\n console.error(`Could not check track and trace API due to error: ${error.message}`);\n reject(error);\n }\n });\n });\n }\n\n return { ok: false, timestamp: new Date().toDateString() };\n};\n\n/**\n * Get parcel info if query is a parcel or null\n *\n * @param query Parcel id\n * @returns Parcel info and a redirect url or null if not a parcel\n */\nexport const getParcelSuggestion = async (\n query: string,\n searchConfig: ISearchConfig,\n): Promise<(TrackAndTraceInfo & { url: string }) | null> => {\n const parcelInfo = await getParcelInfo(query, searchConfig);\n return parcelInfo.ok\n ? { ...parcelInfo, url: getTrackAndTraceRedirectUrl(query, searchConfig) }\n : null;\n};\n"]}
|