@swisspost/internet-header 1.5.1 → 1.5.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/index-3216e4c8.js +176 -0
- package/dist/cjs/index-3216e4c8.js.map +1 -0
- package/dist/cjs/{index-5751975e.js → index-aff25ac1.js} +8 -1
- package/dist/cjs/index-aff25ac1.js.map +1 -0
- package/dist/cjs/{language.service-7dbf739d.js → language.service-167d5a9c.js} +7 -2
- package/dist/cjs/language.service-167d5a9c.js.map +1 -0
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/loader.cjs.js.map +1 -1
- package/dist/cjs/post-klp-login-widget.cjs.entry.js +3 -3
- package/dist/cjs/post-language-switch.cjs.entry.js +5 -5
- package/dist/cjs/post-logo.cjs.entry.js +3 -3
- package/dist/cjs/post-main-navigation.cjs.entry.js +6 -6
- package/dist/cjs/post-main-navigation.cjs.entry.js.map +1 -1
- package/dist/cjs/post-meta-navigation.cjs.entry.js +2 -2
- package/dist/cjs/post-search.cjs.entry.js +20 -2219
- package/dist/cjs/post-search.cjs.entry.js.map +1 -1
- package/dist/cjs/post-skiplinks.cjs.entry.js +5 -5
- package/dist/cjs/post-skiplinks.cjs.entry.js.map +1 -1
- package/dist/cjs/{store-d0d514fc.js → store-b0284e36.js} +2 -2
- package/dist/cjs/{store-d0d514fc.js.map → store-b0284e36.js.map} +1 -1
- package/dist/cjs/{svg-icon.component-be93f876.js → svg-icon.component-715db679.js} +2 -2
- package/dist/cjs/{svg-icon.component-be93f876.js.map → svg-icon.component-715db679.js.map} +1 -1
- package/dist/cjs/{svg-sprite.component-1bd7a058.js → svg-sprite.component-22680222.js} +2 -2
- package/dist/cjs/{svg-sprite.component-1bd7a058.js.map → svg-sprite.component-22680222.js.map} +1 -1
- package/dist/cjs/swisspost-internet-breadcrumbs.cjs.entry.js +116 -96
- package/dist/cjs/swisspost-internet-breadcrumbs.cjs.entry.js.map +1 -1
- package/dist/cjs/swisspost-internet-footer.cjs.entry.js +3 -3
- package/dist/cjs/swisspost-internet-header.cjs.entry.js +23 -22
- package/dist/cjs/swisspost-internet-header.cjs.entry.js.map +1 -1
- package/dist/cjs/swisspost-internet-header.cjs.js +2 -2
- package/dist/cjs/swisspost-internet-header.cjs.js.map +1 -1
- package/dist/collection/assets/i18n/translations.js +5 -0
- 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/post-internet-breadcrumbs.css +0 -4
- package/dist/collection/components/post-internet-header/post-internet-header.js +1 -1
- package/dist/collection/components/post-main-navigation/post-main-navigation.js +1 -1
- package/dist/collection/components/post-main-navigation/post-main-navigation.js.map +1 -1
- package/dist/collection/components/post-skiplinks/post-skiplinks.js +1 -1
- package/dist/collection/components/post-skiplinks/post-skiplinks.js.map +1 -1
- package/dist/collection/models/general.model.js.map +1 -1
- package/dist/collection/services/config.service.js +6 -4
- package/dist/collection/services/config.service.js.map +1 -1
- package/dist/collection/services/search/coveo.settings.js +12 -0
- package/dist/collection/services/search/coveo.settings.js.map +1 -1
- package/dist/collection/services/search/places.service.js +4 -4
- package/dist/collection/services/search/places.service.js.map +1 -1
- package/dist/collection/services/search/search-utilities.js +0 -13
- package/dist/collection/services/search/search-utilities.js.map +1 -1
- package/dist/components/index2.js +67 -35
- package/dist/components/index2.js.map +1 -1
- package/dist/components/language.service.js +5 -0
- package/dist/components/language.service.js.map +1 -1
- package/dist/components/post-main-navigation2.js +1 -1
- package/dist/components/post-main-navigation2.js.map +1 -1
- package/dist/components/post-search2.js +15 -2214
- package/dist/components/post-search2.js.map +1 -1
- package/dist/components/post-skiplinks2.js +1 -1
- package/dist/components/post-skiplinks2.js.map +1 -1
- package/dist/components/store.js.map +1 -1
- package/dist/components/swisspost-internet-breadcrumbs.js +110 -90
- package/dist/components/swisspost-internet-breadcrumbs.js.map +1 -1
- package/dist/components/swisspost-internet-header.js +17 -16
- package/dist/components/swisspost-internet-header.js.map +1 -1
- package/dist/esm/{index-066666f4.js → index-9351b1b6.js} +8 -1
- package/dist/esm/index-9351b1b6.js.map +1 -0
- package/dist/esm/index-d2256e06.js +173 -0
- package/dist/esm/index-d2256e06.js.map +1 -0
- package/dist/esm/{language.service-023d2711.js → language.service-7aefe1c5.js} +7 -2
- package/dist/esm/language.service-7aefe1c5.js.map +1 -0
- package/dist/esm/loader.js +3 -3
- package/dist/esm/loader.js.map +1 -1
- package/dist/esm/post-klp-login-widget.entry.js +3 -3
- package/dist/esm/post-language-switch.entry.js +5 -5
- package/dist/esm/post-logo.entry.js +3 -3
- package/dist/esm/post-main-navigation.entry.js +6 -6
- package/dist/esm/post-main-navigation.entry.js.map +1 -1
- package/dist/esm/post-meta-navigation.entry.js +2 -2
- package/dist/esm/post-search.entry.js +20 -2219
- package/dist/esm/post-search.entry.js.map +1 -1
- package/dist/esm/post-skiplinks.entry.js +5 -5
- package/dist/esm/post-skiplinks.entry.js.map +1 -1
- package/dist/esm/{store-837c3490.js → store-f9ce3c4f.js} +2 -2
- package/dist/esm/{store-837c3490.js.map → store-f9ce3c4f.js.map} +1 -1
- package/dist/esm/{svg-icon.component-e09b4bf9.js → svg-icon.component-cd0942cc.js} +2 -2
- package/dist/esm/{svg-icon.component-e09b4bf9.js.map → svg-icon.component-cd0942cc.js.map} +1 -1
- package/dist/esm/{svg-sprite.component-cf60303f.js → svg-sprite.component-5ed9c3b8.js} +2 -2
- package/dist/esm/{svg-sprite.component-cf60303f.js.map → svg-sprite.component-5ed9c3b8.js.map} +1 -1
- package/dist/esm/swisspost-internet-breadcrumbs.entry.js +116 -96
- package/dist/esm/swisspost-internet-breadcrumbs.entry.js.map +1 -1
- package/dist/esm/swisspost-internet-footer.entry.js +3 -3
- package/dist/esm/swisspost-internet-header.entry.js +23 -22
- package/dist/esm/swisspost-internet-header.entry.js.map +1 -1
- package/dist/esm/swisspost-internet-header.js +3 -3
- package/dist/esm/swisspost-internet-header.js.map +1 -1
- package/dist/esm-es5/{index-066666f4.js → index-9351b1b6.js} +1 -1
- package/dist/esm-es5/index-9351b1b6.js.map +1 -0
- package/dist/esm-es5/index-d2256e06.js +2 -0
- package/dist/esm-es5/index-d2256e06.js.map +1 -0
- package/dist/esm-es5/language.service-7aefe1c5.js +2 -0
- package/dist/esm-es5/language.service-7aefe1c5.js.map +1 -0
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/loader.js.map +1 -1
- package/dist/esm-es5/post-klp-login-widget.entry.js +1 -1
- package/dist/esm-es5/post-language-switch.entry.js +1 -1
- package/dist/esm-es5/post-logo.entry.js +1 -1
- package/dist/esm-es5/post-main-navigation.entry.js +1 -1
- package/dist/esm-es5/post-main-navigation.entry.js.map +1 -1
- package/dist/esm-es5/post-meta-navigation.entry.js +1 -1
- package/dist/esm-es5/post-search.entry.js +1 -1
- package/dist/esm-es5/post-search.entry.js.map +1 -1
- package/dist/esm-es5/post-skiplinks.entry.js +1 -1
- package/dist/esm-es5/post-skiplinks.entry.js.map +1 -1
- package/dist/esm-es5/{store-837c3490.js → store-f9ce3c4f.js} +2 -2
- package/dist/esm-es5/{store-837c3490.js.map → store-f9ce3c4f.js.map} +1 -1
- package/dist/esm-es5/{svg-icon.component-e09b4bf9.js → svg-icon.component-cd0942cc.js} +2 -2
- package/dist/esm-es5/{svg-icon.component-e09b4bf9.js.map → svg-icon.component-cd0942cc.js.map} +0 -0
- package/dist/esm-es5/{svg-sprite.component-cf60303f.js → svg-sprite.component-5ed9c3b8.js} +2 -2
- package/dist/esm-es5/{svg-sprite.component-cf60303f.js.map → svg-sprite.component-5ed9c3b8.js.map} +0 -0
- package/dist/esm-es5/swisspost-internet-breadcrumbs.entry.js +2 -2
- package/dist/esm-es5/swisspost-internet-breadcrumbs.entry.js.map +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.entry.js.map +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/swisspost-internet-header/{p-38d645ba.system.entry.js → p-01b80755.system.entry.js} +2 -2
- package/dist/swisspost-internet-header/{p-38d645ba.system.entry.js.map → p-01b80755.system.entry.js.map} +0 -0
- package/dist/swisspost-internet-header/{p-7fcba2e7.system.js → p-0342245a.system.js} +2 -2
- package/dist/swisspost-internet-header/{p-7fcba2e7.system.js.map → p-0342245a.system.js.map} +1 -1
- package/dist/swisspost-internet-header/p-0739e499.system.js +2 -0
- package/dist/swisspost-internet-header/p-0739e499.system.js.map +1 -0
- package/dist/swisspost-internet-header/p-3563d113.js +2 -0
- package/dist/swisspost-internet-header/{p-ab1dd269.js.map → p-3563d113.js.map} +0 -0
- package/dist/swisspost-internet-header/p-3a94f838.entry.js +6 -0
- package/dist/swisspost-internet-header/p-3a94f838.entry.js.map +1 -0
- package/dist/swisspost-internet-header/{p-28e6362f.system.entry.js → p-3b6966e6.system.entry.js} +2 -2
- package/dist/swisspost-internet-header/{p-28e6362f.system.entry.js.map → p-3b6966e6.system.entry.js.map} +0 -0
- package/dist/swisspost-internet-header/{p-66144e99.system.entry.js → p-4fe4ae48.system.entry.js} +2 -2
- package/dist/swisspost-internet-header/{p-66144e99.system.entry.js.map → p-4fe4ae48.system.entry.js.map} +0 -0
- package/dist/swisspost-internet-header/p-58008c81.system.entry.js +2 -0
- package/dist/swisspost-internet-header/p-58008c81.system.entry.js.map +1 -0
- package/dist/swisspost-internet-header/p-5c0b352c.system.entry.js +2 -0
- package/dist/swisspost-internet-header/p-5c0b352c.system.entry.js.map +1 -0
- package/dist/swisspost-internet-header/{p-5032057e.js → p-61b09b9b.js} +1 -1
- package/dist/swisspost-internet-header/p-61b09b9b.js.map +1 -0
- package/dist/swisspost-internet-header/{p-322526ef.entry.js → p-633cde46.entry.js} +2 -2
- package/dist/swisspost-internet-header/{p-322526ef.entry.js.map → p-633cde46.entry.js.map} +0 -0
- package/dist/swisspost-internet-header/{p-06649b46.js → p-698793da.js} +2 -2
- package/dist/swisspost-internet-header/{p-06649b46.js.map → p-698793da.js.map} +1 -1
- package/dist/swisspost-internet-header/{p-5d2fac3b.system.entry.js → p-8927c282.system.entry.js} +2 -2
- package/dist/swisspost-internet-header/{p-5d2fac3b.system.entry.js.map → p-8927c282.system.entry.js.map} +0 -0
- package/dist/swisspost-internet-header/{p-ffc59851.system.js → p-89618eab.system.js} +2 -2
- package/dist/swisspost-internet-header/{p-ffc59851.system.js.map → p-89618eab.system.js.map} +0 -0
- package/dist/swisspost-internet-header/{p-0cba8ab4.entry.js → p-91195287.entry.js} +2 -2
- package/dist/swisspost-internet-header/{p-0cba8ab4.entry.js.map → p-91195287.entry.js.map} +0 -0
- package/dist/swisspost-internet-header/{p-26879023.entry.js → p-99f181e3.entry.js} +2 -2
- package/dist/swisspost-internet-header/{p-26879023.entry.js.map → p-99f181e3.entry.js.map} +0 -0
- package/dist/swisspost-internet-header/p-9b4d5e90.system.js +2 -0
- package/dist/swisspost-internet-header/p-9b4d5e90.system.js.map +1 -0
- package/dist/swisspost-internet-header/{p-77d5e07f.entry.js → p-9c1c05bb.entry.js} +2 -2
- package/dist/swisspost-internet-header/{p-77d5e07f.entry.js.map → p-9c1c05bb.entry.js.map} +0 -0
- package/dist/swisspost-internet-header/{p-f7c0cf7b.js → p-9cf200bd.js} +2 -2
- package/dist/swisspost-internet-header/{p-f7c0cf7b.js.map → p-9cf200bd.js.map} +0 -0
- package/dist/swisspost-internet-header/p-a74b380d.js +2 -0
- package/dist/swisspost-internet-header/p-a74b380d.js.map +1 -0
- package/dist/swisspost-internet-header/p-ab97ab9d.entry.js +2 -0
- package/dist/swisspost-internet-header/p-ab97ab9d.entry.js.map +1 -0
- package/dist/swisspost-internet-header/{p-ee119d2e.system.js → p-af58c52f.system.js} +2 -2
- package/dist/swisspost-internet-header/{p-ee119d2e.system.js.map → p-af58c52f.system.js.map} +0 -0
- package/dist/swisspost-internet-header/{p-d33734b5.entry.js → p-b52015b1.entry.js} +2 -2
- package/dist/swisspost-internet-header/{p-d33734b5.entry.js.map → p-b52015b1.entry.js.map} +1 -1
- package/dist/swisspost-internet-header/{p-17a47667.system.js → p-b9569693.system.js} +2 -2
- package/dist/swisspost-internet-header/{p-17a47667.system.js.map → p-b9569693.system.js.map} +1 -1
- package/dist/swisspost-internet-header/{p-1b8f9bc8.system.js → p-bd9d660b.system.js} +1 -1
- package/dist/swisspost-internet-header/p-bd9d660b.system.js.map +1 -0
- package/dist/swisspost-internet-header/p-be9c6d49.entry.js +2 -0
- package/dist/swisspost-internet-header/p-be9c6d49.entry.js.map +1 -0
- package/dist/swisspost-internet-header/{p-db87f3e3.system.entry.js → p-c08318d1.system.entry.js} +2 -2
- package/dist/swisspost-internet-header/{p-db87f3e3.system.entry.js.map → p-c08318d1.system.entry.js.map} +1 -1
- package/dist/swisspost-internet-header/p-c3c4638a.system.entry.js +7 -0
- package/dist/swisspost-internet-header/p-c3c4638a.system.entry.js.map +1 -0
- package/dist/swisspost-internet-header/p-c90a1412.js +2 -0
- package/dist/swisspost-internet-header/p-c90a1412.js.map +1 -0
- package/dist/swisspost-internet-header/{p-e2990968.system.entry.js → p-de22cbfa.system.entry.js} +2 -2
- package/dist/swisspost-internet-header/{p-e2990968.system.entry.js.map → p-de22cbfa.system.entry.js.map} +0 -0
- package/dist/swisspost-internet-header/{p-64cb215a.entry.js → p-e10dce9d.entry.js} +2 -2
- package/dist/swisspost-internet-header/{p-64cb215a.entry.js.map → p-e10dce9d.entry.js.map} +0 -0
- package/dist/swisspost-internet-header/p-e37f959e.system.entry.js +2 -0
- package/dist/swisspost-internet-header/p-e37f959e.system.entry.js.map +1 -0
- package/dist/swisspost-internet-header/p-ebf02fa7.entry.js +2 -0
- package/dist/swisspost-internet-header/p-ebf02fa7.entry.js.map +1 -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 +1 -1
- package/dist/types/assets/i18n/translations.d.ts +5 -0
- package/dist/types/models/general.model.d.ts +2 -2
- package/dist/types/services/language.service.d.ts +5 -0
- package/dist/types/services/search/search-utilities.d.ts +0 -6
- package/package.json +11 -12
- package/dist/cjs/index-5751975e.js.map +0 -1
- package/dist/cjs/index-e7245d60.js +0 -144
- package/dist/cjs/index-e7245d60.js.map +0 -1
- package/dist/cjs/language.service-7dbf739d.js.map +0 -1
- package/dist/esm/index-066666f4.js.map +0 -1
- package/dist/esm/index-a75df186.js +0 -141
- package/dist/esm/index-a75df186.js.map +0 -1
- package/dist/esm/language.service-023d2711.js.map +0 -1
- package/dist/esm-es5/index-066666f4.js.map +0 -1
- package/dist/esm-es5/index-a75df186.js +0 -2
- package/dist/esm-es5/index-a75df186.js.map +0 -1
- package/dist/esm-es5/language.service-023d2711.js +0 -2
- package/dist/esm-es5/language.service-023d2711.js.map +0 -1
- package/dist/swisspost-internet-header/p-0942595f.js +0 -2
- package/dist/swisspost-internet-header/p-0942595f.js.map +0 -1
- package/dist/swisspost-internet-header/p-1b8f9bc8.system.js.map +0 -1
- package/dist/swisspost-internet-header/p-3753a678.system.js +0 -2
- package/dist/swisspost-internet-header/p-3753a678.system.js.map +0 -1
- package/dist/swisspost-internet-header/p-3df823de.system.entry.js +0 -2
- package/dist/swisspost-internet-header/p-3df823de.system.entry.js.map +0 -1
- package/dist/swisspost-internet-header/p-493337e1.system.entry.js +0 -2
- package/dist/swisspost-internet-header/p-493337e1.system.entry.js.map +0 -1
- package/dist/swisspost-internet-header/p-5032057e.js.map +0 -1
- package/dist/swisspost-internet-header/p-62c5cf26.entry.js +0 -2
- package/dist/swisspost-internet-header/p-62c5cf26.entry.js.map +0 -1
- package/dist/swisspost-internet-header/p-69c64c29.js +0 -2
- package/dist/swisspost-internet-header/p-69c64c29.js.map +0 -1
- package/dist/swisspost-internet-header/p-715ebef7.system.entry.js +0 -7
- package/dist/swisspost-internet-header/p-715ebef7.system.entry.js.map +0 -1
- package/dist/swisspost-internet-header/p-7709ed5c.entry.js +0 -2
- package/dist/swisspost-internet-header/p-7709ed5c.entry.js.map +0 -1
- package/dist/swisspost-internet-header/p-ab1dd269.js +0 -2
- package/dist/swisspost-internet-header/p-c8296f63.system.js +0 -2
- package/dist/swisspost-internet-header/p-c8296f63.system.js.map +0 -1
- package/dist/swisspost-internet-header/p-ccb522ba.entry.js +0 -2
- package/dist/swisspost-internet-header/p-ccb522ba.entry.js.map +0 -1
- package/dist/swisspost-internet-header/p-cfa787d7.entry.js +0 -6
- package/dist/swisspost-internet-header/p-cfa787d7.entry.js.map +0 -1
- package/dist/swisspost-internet-header/p-f38f38f4.system.entry.js +0 -2
- package/dist/swisspost-internet-header/p-f38f38f4.system.entry.js.map +0 -1
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
/* eslint-disable no-undefined,no-param-reassign,no-shadow */
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Throttle execution of a function. Especially useful for rate limiting
|
|
5
|
-
* execution of handlers on events like resize and scroll.
|
|
6
|
-
*
|
|
7
|
-
* @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.
|
|
8
|
-
* @param {boolean} [noTrailing] - Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds while the
|
|
9
|
-
* throttled-function is being called. If noTrailing is false or unspecified, callback will be executed one final time
|
|
10
|
-
* after the last throttled-function call. (After the throttled-function has not been called for `delay` milliseconds,
|
|
11
|
-
* the internal counter is reset).
|
|
12
|
-
* @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,
|
|
13
|
-
* to `callback` when the throttled-function is executed.
|
|
14
|
-
* @param {boolean} [debounceMode] - If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is false (at end),
|
|
15
|
-
* schedule `callback` to execute after `delay` ms.
|
|
16
|
-
*
|
|
17
|
-
* @returns {Function} A new, throttled, function.
|
|
18
|
-
*/
|
|
19
|
-
function throttle (delay, noTrailing, callback, debounceMode) {
|
|
20
|
-
/*
|
|
21
|
-
* After wrapper has stopped being called, this timeout ensures that
|
|
22
|
-
* `callback` is executed at the proper times in `throttle` and `end`
|
|
23
|
-
* debounce modes.
|
|
24
|
-
*/
|
|
25
|
-
var timeoutID;
|
|
26
|
-
var cancelled = false; // Keep track of the last time `callback` was executed.
|
|
27
|
-
|
|
28
|
-
var lastExec = 0; // Function to clear existing timeout
|
|
29
|
-
|
|
30
|
-
function clearExistingTimeout() {
|
|
31
|
-
if (timeoutID) {
|
|
32
|
-
clearTimeout(timeoutID);
|
|
33
|
-
}
|
|
34
|
-
} // Function to cancel next exec
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
function cancel() {
|
|
38
|
-
clearExistingTimeout();
|
|
39
|
-
cancelled = true;
|
|
40
|
-
} // `noTrailing` defaults to falsy.
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
if (typeof noTrailing !== 'boolean') {
|
|
44
|
-
debounceMode = callback;
|
|
45
|
-
callback = noTrailing;
|
|
46
|
-
noTrailing = undefined;
|
|
47
|
-
}
|
|
48
|
-
/*
|
|
49
|
-
* The `wrapper` function encapsulates all of the throttling / debouncing
|
|
50
|
-
* functionality and when executed will limit the rate at which `callback`
|
|
51
|
-
* is executed.
|
|
52
|
-
*/
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
function wrapper() {
|
|
56
|
-
for (var _len = arguments.length, arguments_ = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
57
|
-
arguments_[_key] = arguments[_key];
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
var self = this;
|
|
61
|
-
var elapsed = Date.now() - lastExec;
|
|
62
|
-
|
|
63
|
-
if (cancelled) {
|
|
64
|
-
return;
|
|
65
|
-
} // Execute `callback` and update the `lastExec` timestamp.
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
function exec() {
|
|
69
|
-
lastExec = Date.now();
|
|
70
|
-
callback.apply(self, arguments_);
|
|
71
|
-
}
|
|
72
|
-
/*
|
|
73
|
-
* If `debounceMode` is true (at begin) this is used to clear the flag
|
|
74
|
-
* to allow future `callback` executions.
|
|
75
|
-
*/
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
function clear() {
|
|
79
|
-
timeoutID = undefined;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
if (debounceMode && !timeoutID) {
|
|
83
|
-
/*
|
|
84
|
-
* Since `wrapper` is being called for the first time and
|
|
85
|
-
* `debounceMode` is true (at begin), execute `callback`.
|
|
86
|
-
*/
|
|
87
|
-
exec();
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
clearExistingTimeout();
|
|
91
|
-
|
|
92
|
-
if (debounceMode === undefined && elapsed > delay) {
|
|
93
|
-
/*
|
|
94
|
-
* In throttle mode, if `delay` time has been exceeded, execute
|
|
95
|
-
* `callback`.
|
|
96
|
-
*/
|
|
97
|
-
exec();
|
|
98
|
-
} else if (noTrailing !== true) {
|
|
99
|
-
/*
|
|
100
|
-
* In trailing throttle mode, since `delay` time has not been
|
|
101
|
-
* exceeded, schedule `callback` to execute `delay` ms after most
|
|
102
|
-
* recent execution.
|
|
103
|
-
*
|
|
104
|
-
* If `debounceMode` is true (at begin), schedule `clear` to execute
|
|
105
|
-
* after `delay` ms.
|
|
106
|
-
*
|
|
107
|
-
* If `debounceMode` is false (at end), schedule `callback` to
|
|
108
|
-
* execute after `delay` ms.
|
|
109
|
-
*/
|
|
110
|
-
timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
wrapper.cancel = cancel; // Return the wrapper function.
|
|
115
|
-
|
|
116
|
-
return wrapper;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
/* eslint-disable no-undefined */
|
|
120
|
-
/**
|
|
121
|
-
* Debounce execution of a function. Debouncing, unlike throttling,
|
|
122
|
-
* guarantees that a function is only executed a single time, either at the
|
|
123
|
-
* very beginning of a series of calls, or at the very end.
|
|
124
|
-
*
|
|
125
|
-
* @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.
|
|
126
|
-
* @param {boolean} [atBegin] - Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds
|
|
127
|
-
* after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.
|
|
128
|
-
* (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).
|
|
129
|
-
* @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,
|
|
130
|
-
* to `callback` when the debounced-function is executed.
|
|
131
|
-
*
|
|
132
|
-
* @returns {Function} A new, debounced function.
|
|
133
|
-
*/
|
|
134
|
-
|
|
135
|
-
function debounce (delay, atBegin, callback) {
|
|
136
|
-
return callback === undefined ? throttle(delay, atBegin, false) : throttle(delay, callback, atBegin !== false);
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
export { debounce as d, throttle as t };
|
|
140
|
-
|
|
141
|
-
//# sourceMappingURL=index-a75df186.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"file":"index-a75df186.js","mappings":"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","names":[],"sources":["../../node_modules/.pnpm/throttle-debounce@3.0.1/node_modules/throttle-debounce/esm/index.js"],"sourcesContent":["/* eslint-disable no-undefined,no-param-reassign,no-shadow */\n\n/**\n * Throttle execution of a function. Especially useful for rate limiting\n * execution of handlers on events like resize and scroll.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {boolean} [noTrailing] - Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds while the\n * throttled-function is being called. If noTrailing is false or unspecified, callback will be executed one final time\n * after the last throttled-function call. (After the throttled-function has not been called for `delay` milliseconds,\n * the internal counter is reset).\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n * to `callback` when the throttled-function is executed.\n * @param {boolean} [debounceMode] - If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is false (at end),\n * schedule `callback` to execute after `delay` ms.\n *\n * @returns {Function} A new, throttled, function.\n */\nfunction throttle (delay, noTrailing, callback, debounceMode) {\n /*\n * After wrapper has stopped being called, this timeout ensures that\n * `callback` is executed at the proper times in `throttle` and `end`\n * debounce modes.\n */\n var timeoutID;\n var cancelled = false; // Keep track of the last time `callback` was executed.\n\n var lastExec = 0; // Function to clear existing timeout\n\n function clearExistingTimeout() {\n if (timeoutID) {\n clearTimeout(timeoutID);\n }\n } // Function to cancel next exec\n\n\n function cancel() {\n clearExistingTimeout();\n cancelled = true;\n } // `noTrailing` defaults to falsy.\n\n\n if (typeof noTrailing !== 'boolean') {\n debounceMode = callback;\n callback = noTrailing;\n noTrailing = undefined;\n }\n /*\n * The `wrapper` function encapsulates all of the throttling / debouncing\n * functionality and when executed will limit the rate at which `callback`\n * is executed.\n */\n\n\n function wrapper() {\n for (var _len = arguments.length, arguments_ = new Array(_len), _key = 0; _key < _len; _key++) {\n arguments_[_key] = arguments[_key];\n }\n\n var self = this;\n var elapsed = Date.now() - lastExec;\n\n if (cancelled) {\n return;\n } // Execute `callback` and update the `lastExec` timestamp.\n\n\n function exec() {\n lastExec = Date.now();\n callback.apply(self, arguments_);\n }\n /*\n * If `debounceMode` is true (at begin) this is used to clear the flag\n * to allow future `callback` executions.\n */\n\n\n function clear() {\n timeoutID = undefined;\n }\n\n if (debounceMode && !timeoutID) {\n /*\n * Since `wrapper` is being called for the first time and\n * `debounceMode` is true (at begin), execute `callback`.\n */\n exec();\n }\n\n clearExistingTimeout();\n\n if (debounceMode === undefined && elapsed > delay) {\n /*\n * In throttle mode, if `delay` time has been exceeded, execute\n * `callback`.\n */\n exec();\n } else if (noTrailing !== true) {\n /*\n * In trailing throttle mode, since `delay` time has not been\n * exceeded, schedule `callback` to execute `delay` ms after most\n * recent execution.\n *\n * If `debounceMode` is true (at begin), schedule `clear` to execute\n * after `delay` ms.\n *\n * If `debounceMode` is false (at end), schedule `callback` to\n * execute after `delay` ms.\n */\n timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);\n }\n }\n\n wrapper.cancel = cancel; // Return the wrapper function.\n\n return wrapper;\n}\n\n/* eslint-disable no-undefined */\n/**\n * Debounce execution of a function. Debouncing, unlike throttling,\n * guarantees that a function is only executed a single time, either at the\n * very beginning of a series of calls, or at the very end.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {boolean} [atBegin] - Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds\n * after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.\n * (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n * to `callback` when the debounced-function is executed.\n *\n * @returns {Function} A new, debounced function.\n */\n\nfunction debounce (delay, atBegin, callback) {\n return callback === undefined ? throttle(delay, atBegin, false) : throttle(delay, callback, atBegin !== false);\n}\n\nexport { debounce, throttle };\n//# sourceMappingURL=index.js.map\n"],"version":3}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"file":"language.service-023d2711.js","mappings":"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","names":[],"sources":["./src/assets/i18n/translations.ts","./src/services/language.service.ts"],"sourcesContent":["export const translations = {\n 'Close overlay': {\n de: 'Overlay Schliessen',\n fr: 'Fermer la superposition',\n it: 'Chiudi sovrapposizione',\n },\n 'Current language is English': {\n de: 'Die aktuelle Sprache ist Deutsch',\n fr: 'La langue actuelle est le français',\n it: \"La lingua corrente è l'italiano\",\n },\n 'Change language': {\n de: 'Sprache wechseln',\n fr: 'Changer de langue',\n it: 'Cambia lingua',\n },\n 'Go to main content': {\n de: 'Zum Hauptinhalt springen',\n fr: 'Aller au contenu principal',\n it: 'Vai al contenuto principale',\n },\n 'Go to search': {\n de: 'Zur Suche springen',\n fr: 'Aller à la recherche',\n it: 'Vai alla ricerca',\n },\n 'Go to login': {\n de: 'Zum Login springen',\n fr: 'Aller au login',\n it: 'Vai al login',\n },\n 'Open menu': {\n de: 'Menü öffnen',\n fr: 'Ouvrir le menu',\n it: 'Apri il menu',\n },\n};\n","import { translations } from '../assets/i18n/translations';\nimport { state } from '../data/store';\n\nexport const getUserLang = (\n supportedLanguages: string[],\n implementorPreferredLanguage?: string,\n localStorageKey?: string,\n cookieKey?: string,\n) => {\n // If there are no supported languages, well...\n if (supportedLanguages.length === 0) {\n return undefined;\n }\n\n // If there is only one language in the config, use this\n if (supportedLanguages.length === 1) {\n return supportedLanguages[0];\n }\n\n const url = new URL(window.location.href);\n\n /**\n * Build array of possible language definitions in order of importance.\n * At the end is a filter function that will weed out any undefined or null entries.\n */\n let languagesSet: Array<string> = [\n // Check if implementor overrides lang config\n implementorPreferredLanguage,\n\n // Check query string param\n url.searchParams.get('lang'),\n\n // Check url pathname\n url.pathname.split('/').find(segment => supportedLanguages.includes(segment)),\n\n // Check local storage with the key provided\n localStorageKey !== undefined ? window.localStorage.getItem(localStorageKey) : null,\n\n // Check cookies\n getCookie('language'),\n getCookie('lang'),\n cookieKey !== undefined ? getCookie(cookieKey) : null,\n\n // Check document language\n document.documentElement.lang,\n\n // Check browser preferred language\n getPreferredLanguageFromBrowser(supportedLanguages),\n\n // Check the state\n state.currentLanguage,\n ].filter((lang): lang is string => !!lang);\n\n // Check the set of languages to see if it matches\n // any of the supported languages. Return the first\n // supported language if there is none set\n const lang =\n languagesSet.find(language => supportedLanguages.includes(language)) || supportedLanguages[0];\n\n if (!lang || lang.length !== 2) {\n throw new Error(\n `Current language could not be determined from settings or the language provided (${lang}) is not supported by the Header API.`,\n );\n }\n\n return lang;\n};\n\n/**\n * Persist chosen language to local storage\n * @param lang Currently chose language, two char string\n */\nexport const persistLanguageChoice = (\n lang: string,\n cookieKey?: string,\n localStorageKey?: string,\n) => {\n if (localStorageKey !== undefined) {\n window.localStorage.setItem(localStorageKey, lang);\n }\n\n if (cookieKey !== undefined) {\n setCookie(cookieKey, lang);\n }\n\n state.currentLanguage = lang;\n};\n\n/**\n * Read a cookie by name\n * https://stackoverflow.com/questions/5639346/what-is-the-shortest-function-for-reading-a-cookie-by-name-in-javascript?rq=1\n * @param name Cookie name\n * @returns Cookie value or an empty string\n */\nexport const getCookie = (name: string) => {\n return document.cookie.match('(^|;)\\\\s*' + name + '\\\\s*=\\\\s*([^;]+)')?.pop() || '';\n};\n\n/**\n * Write a new cookie\n * https://developer.mozilla.org/en-US/docs/Web/API/document/cookie#A_little_framework.3A_a_complete_cookies_reader.2Fwriter_with_full_unicode_support\n * @param key\n * @param value\n */\nexport const setCookie = (key: string, value: string) => {\n document.cookie = `${encodeURIComponent(key)}=${encodeURIComponent(value)}`;\n};\n\nconst getPreferredLanguageFromBrowser = (supportedLanguages: string[]): string | null => {\n // IE & Chrome\n if (navigator.language) {\n const lang = extractLanguage(navigator.language);\n if (supportedLanguages.indexOf(lang) !== -1) {\n return lang;\n }\n }\n\n // Chrome supports a list of preferred languages: if the preferred is not supported, we go down the list.\n if (navigator.languages) {\n for (const l of navigator.languages) {\n const lang = extractLanguage(l);\n if (supportedLanguages.indexOf(lang) !== -1) {\n return lang;\n }\n }\n }\n\n return null;\n};\n\nconst extractLanguage = (language: string): string => language.substring(0, 2).toLowerCase();\n\n/**\n * Simple translate function for general header UI strings\n *\n * @param key Translation key\n * @param lang Force a language\n * @param translationObject Optionally provide translations\n * @returns Translated string or the key\n */\nexport const translate = (key: string, lang?: string, translationObject = translations) =>\n translationObject[key]?.[lang ?? state.currentLanguage ?? ''] ?? key;\n"],"version":3}
|