@blateral/b.kit 2.8.4 → 3.0.1
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/cjs/Actions-2590a7b9.js +2 -0
- package/cjs/{Actions-c52a14e4.js.map → Actions-2590a7b9.js.map} +1 -1
- package/cjs/Bdot-35350767.js +2 -0
- package/cjs/{Bdot-62c8e349.js.map → Bdot-35350767.js.map} +1 -1
- package/cjs/Button-ddcdefd5.js +2 -0
- package/cjs/Button-ddcdefd5.js.map +1 -0
- package/cjs/ButtonGhost-22501467.js +2 -0
- package/cjs/ButtonGhost-22501467.js.map +1 -0
- package/cjs/ButtonLeft-7e1f216a.js +2 -0
- package/cjs/ButtonLeft-7e1f216a.js.map +1 -0
- package/cjs/Callout-86a61040.js +2 -0
- package/cjs/Callout-86a61040.js.map +1 -0
- package/cjs/Checkbox-d27880f4.js +2 -0
- package/cjs/Checkbox-d27880f4.js.map +1 -0
- package/cjs/Control-40e6d4ed.js +2 -0
- package/cjs/Control-40e6d4ed.js.map +1 -0
- package/cjs/Copy-1b9e33ba.js +2 -0
- package/cjs/Copy-1b9e33ba.js.map +1 -0
- package/cjs/EventBlock-7dde179c.js +2 -0
- package/cjs/EventBlock-7dde179c.js.map +1 -0
- package/cjs/FilterBar-238c2290.js +2 -0
- package/cjs/FilterBar-238c2290.js.map +1 -0
- package/cjs/FilterField-c8dc9450.js +2 -0
- package/cjs/{FilterField-d204feb1.js.map → FilterField-c8dc9450.js.map} +1 -1
- package/cjs/Grid-dab3343f.js +2 -0
- package/cjs/Grid-dab3343f.js.map +1 -0
- package/cjs/Image-14b2cb93.js +2 -0
- package/cjs/Image-14b2cb93.js.map +1 -0
- package/cjs/InfoList-b4f39949.js +2 -0
- package/cjs/InfoList-b4f39949.js.map +1 -0
- package/cjs/LanguageSwitcher-3ee77117.js +2 -0
- package/cjs/{LanguageSwitcher-c6fd04df.js.map → LanguageSwitcher-3ee77117.js.map} +1 -1
- package/cjs/LibThemeProvider-878ed68c.js +2 -0
- package/cjs/{LibThemeProvider-69109901.js.map → LibThemeProvider-878ed68c.js.map} +1 -1
- package/cjs/Link-6e728957.js +2 -0
- package/cjs/Link-6e728957.js.map +1 -0
- package/cjs/MultiselectDropdown-54cd988f.js +2 -0
- package/cjs/MultiselectDropdown-54cd988f.js.map +1 -0
- package/cjs/Navigation-2d3590a0.js +2 -0
- package/cjs/{Navigation-6c5d9dee.js.map → Navigation-2d3590a0.js.map} +1 -1
- package/cjs/PickerAction-ed288096.js +2 -0
- package/cjs/PickerAction-ed288096.js.map +1 -0
- package/cjs/Pointer-b8875387.js +2 -0
- package/cjs/Pointer-b8875387.js.map +1 -0
- package/cjs/Section-89240e41.js +2 -0
- package/cjs/Section-89240e41.js.map +1 -0
- package/cjs/SocialList-f2aca9d8.js +2 -0
- package/cjs/{SocialList-73af56b5.js.map → SocialList-f2aca9d8.js.map} +1 -1
- package/cjs/TableBlock-8f87c278.js +2 -0
- package/cjs/TableBlock-8f87c278.js.map +1 -0
- package/cjs/Tag-430477d0.js +2 -0
- package/cjs/Tag-430477d0.js.map +1 -0
- package/cjs/Textarea-51bea7d0.js +2 -0
- package/cjs/Textarea-51bea7d0.js.map +1 -0
- package/cjs/Textfield-4ff93649.js +2 -0
- package/cjs/Textfield-4ff93649.js.map +1 -0
- package/cjs/VideoBlock-087d79b8.js +2 -0
- package/cjs/{VideoBlock-0cae22f0.js.map → VideoBlock-087d79b8.js.map} +1 -1
- package/cjs/VideoCard-6e2ae7c1.js +2 -0
- package/cjs/VideoCard-6e2ae7c1.js.map +1 -0
- package/cjs/Wrapper-c755d727.js +2 -0
- package/cjs/{Wrapper-bca9463e.js.map → Wrapper-c755d727.js.map} +1 -1
- package/cjs/base.js +1 -1
- package/cjs/blocks.js +1 -1
- package/cjs/buttons.js +1 -1
- package/cjs/concat-8bd71a50.js +2 -0
- package/cjs/{concat-f387d848.js.map → concat-8bd71a50.js.map} +1 -1
- package/cjs/cookies.js +1 -1
- package/cjs/cookies.js.map +1 -1
- package/cjs/fields.js +1 -1
- package/cjs/fields.js.map +1 -1
- package/cjs/footer.js +1 -1
- package/cjs/footer.js.map +1 -1
- package/cjs/formFieldText-fcf0452b.js +2 -0
- package/cjs/formFieldText-fcf0452b.js.map +1 -0
- package/cjs/headers.js +1 -1
- package/cjs/headers.js.map +1 -1
- package/cjs/hooks.js +1 -1
- package/cjs/hooks.js.map +1 -1
- package/cjs/icons.js +1 -1
- package/cjs/index.js +1 -1
- package/cjs/navigation-ec5cddfc.js +2 -0
- package/cjs/{navigation-3f9d4ac4.js.map → navigation-ec5cddfc.js.map} +1 -1
- package/cjs/navigation.js +1 -1
- package/cjs/navigation.js.map +1 -1
- package/cjs/sections.dynamicform.js +1 -1
- package/cjs/sections.dynamicform.js.map +1 -1
- package/cjs/sections.events.js +1 -1
- package/cjs/sections.events.js.map +1 -1
- package/cjs/sections.forms.js +1 -1
- package/cjs/sections.forms.js.map +1 -1
- package/cjs/sections.jobs.js +1 -1
- package/cjs/sections.jobs.js.map +1 -1
- package/cjs/sections.js +1 -1
- package/cjs/sections.js.map +1 -1
- package/cjs/sections.news.js +1 -1
- package/cjs/sections.news.js.map +1 -1
- package/cjs/sections.pois.js +1 -1
- package/cjs/sections.pois.js.map +1 -1
- package/cjs/structuredData-7c33a463.js +2 -0
- package/cjs/structuredData-7c33a463.js.map +1 -0
- package/cjs/styles-271afb02.js +2 -0
- package/cjs/styles-271afb02.js.map +1 -0
- package/cjs/typography.js +1 -1
- package/cjs/{urlParams-7525f638.js → urlParams-c412d937.js} +2 -2
- package/cjs/{urlParams-7525f638.js.map → urlParams-c412d937.js.map} +1 -1
- package/cjs/useCookieConsent-674d004d.js +2 -0
- package/cjs/{useCookieConsent-665d91cf.js.map → useCookieConsent-674d004d.js.map} +1 -1
- package/cjs/useEqualSheetHeight-7eb7f276.js +2 -0
- package/cjs/{useEqualSheetHeight-f1c10ec5.js.map → useEqualSheetHeight-7eb7f276.js.map} +1 -1
- package/cjs/useLazyInput-1481445a.js +2 -0
- package/cjs/{useLazyInput-911b8eda.js.map → useLazyInput-1481445a.js.map} +1 -1
- package/cjs/useLeafletMap-145217ee.js +2 -0
- package/cjs/{useLeafletMap-514304b6.js.map → useLeafletMap-145217ee.js.map} +1 -1
- package/cjs/useMediaQuery-dd367f98.js +2 -0
- package/cjs/{useMediaQuery-619d7203.js.map → useMediaQuery-dd367f98.js.map} +1 -1
- package/esm/{Actions-e29b5e75.js → Actions-6859c932.js} +3 -3
- package/esm/{Actions-e29b5e75.js.map → Actions-6859c932.js.map} +1 -1
- package/esm/{Bdot-5e798e7e.js → Bdot-9e215df7.js} +3 -3
- package/esm/{Bdot-5e798e7e.js.map → Bdot-9e215df7.js.map} +1 -1
- package/esm/Button-1f634865.js +146 -0
- package/esm/Button-1f634865.js.map +1 -0
- package/esm/ButtonGhost-476c3826.js +146 -0
- package/esm/ButtonGhost-476c3826.js.map +1 -0
- package/esm/{Filter-19220970.js → ButtonLeft-a9a132f5.js} +362 -246
- package/esm/ButtonLeft-a9a132f5.js.map +1 -0
- package/esm/{Callout-46f0bef0.js → Callout-6436d270.js} +8 -6
- package/esm/Callout-6436d270.js.map +1 -0
- package/esm/{Checkbox-962fea67.js → Checkbox-e7fc7d28.js} +21 -11
- package/esm/Checkbox-e7fc7d28.js.map +1 -0
- package/esm/Control-84268468.js +44 -0
- package/esm/Control-84268468.js.map +1 -0
- package/esm/{Copy-fd9e25c0.js → Copy-5a18e01f.js} +27 -9
- package/esm/Copy-5a18e01f.js.map +1 -0
- package/esm/{EventBlock-12361860.js → EventBlock-0d010725.js} +62 -27
- package/esm/EventBlock-0d010725.js.map +1 -0
- package/esm/{FilterBar-8c258534.js → FilterBar-d6c1ef40.js} +38 -24
- package/esm/FilterBar-d6c1ef40.js.map +1 -0
- package/esm/{FilterField-8e64b355.js → FilterField-251b4dad.js} +5 -5
- package/esm/{FilterField-8e64b355.js.map → FilterField-251b4dad.js.map} +1 -1
- package/esm/{Grid-7b33e271.js → Grid-cbd5e68c.js} +19 -12
- package/esm/Grid-cbd5e68c.js.map +1 -0
- package/esm/{Image-c67870d4.js → Image-e2018d39.js} +15 -10
- package/esm/Image-e2018d39.js.map +1 -0
- package/esm/{InfoList-d853db58.js → InfoList-1be2ff46.js} +14 -7
- package/esm/InfoList-1be2ff46.js.map +1 -0
- package/esm/{LanguageSwitcher-c9aa594a.js → LanguageSwitcher-19482399.js} +5 -5
- package/esm/{LanguageSwitcher-c9aa594a.js.map → LanguageSwitcher-19482399.js.map} +1 -1
- package/esm/{LibThemeProvider-fb1d35ac.js → LibThemeProvider-48cad3e8.js} +3 -3
- package/esm/{LibThemeProvider-fb1d35ac.js.map → LibThemeProvider-48cad3e8.js.map} +1 -1
- package/esm/{Link-6067a27f.js → Link-d4a291af.js} +15 -8
- package/esm/Link-d4a291af.js.map +1 -0
- package/esm/{MultiselectDropdown-61a5a1a6.js → MultiselectDropdown-20b33522.js} +33 -13
- package/esm/MultiselectDropdown-20b33522.js.map +1 -0
- package/esm/{Navigation-6581bcdf.js → Navigation-d7e14d09.js} +10 -10
- package/esm/{Navigation-6581bcdf.js.map → Navigation-d7e14d09.js.map} +1 -1
- package/esm/PickerAction-704f2992.js +65 -0
- package/esm/PickerAction-704f2992.js.map +1 -0
- package/esm/Pointer-41c10bba.js +144 -0
- package/esm/Pointer-41c10bba.js.map +1 -0
- package/esm/{Section-bd61eb2f.js → Section-ca6daed2.js} +9 -5
- package/esm/Section-ca6daed2.js.map +1 -0
- package/esm/{SocialList-abaf970d.js → SocialList-d5adb772.js} +5 -5
- package/esm/{SocialList-abaf970d.js.map → SocialList-d5adb772.js.map} +1 -1
- package/esm/{TableBlock-a65315ca.js → TableBlock-5aad5dd2.js} +63 -115
- package/esm/TableBlock-5aad5dd2.js.map +1 -0
- package/esm/{Tag-217cd89b.js → Tag-f3f23d9b.js} +9 -13
- package/esm/Tag-f3f23d9b.js.map +1 -0
- package/esm/{Textarea-60503eb7.js → Textarea-af789d6e.js} +341 -252
- package/esm/Textarea-af789d6e.js.map +1 -0
- package/esm/{Textfield-e8f48b5f.js → Textfield-1f1ae077.js} +18 -6
- package/esm/Textfield-1f1ae077.js.map +1 -0
- package/esm/{VideoBlock-3f150172.js → VideoBlock-3c99c5fc.js} +12 -8
- package/esm/VideoBlock-3c99c5fc.js.map +1 -0
- package/esm/{VideoCard-aa60fbe5.js → VideoCard-dc103fce.js} +29 -24
- package/esm/VideoCard-dc103fce.js.map +1 -0
- package/esm/{Wrapper-95108115.js → Wrapper-06db8e79.js} +3 -3
- package/esm/{Wrapper-95108115.js.map → Wrapper-06db8e79.js.map} +1 -1
- package/esm/base.js +6 -6
- package/esm/blocks.js +22 -22
- package/esm/buttons.js +7 -6
- package/esm/buttons.js.map +1 -1
- package/esm/{concat-ab3c66f2.js → concat-b6d6d978.js} +2 -2
- package/esm/concat-b6d6d978.js.map +1 -0
- package/esm/cookies.js +57 -46
- package/esm/cookies.js.map +1 -1
- package/esm/fields.js +56 -123
- package/esm/fields.js.map +1 -1
- package/esm/footer.js +15 -13
- package/esm/footer.js.map +1 -1
- package/esm/{formFieldText-c6fcd370.js → formFieldText-af2106f9.js} +14 -8
- package/esm/formFieldText-af2106f9.js.map +1 -0
- package/esm/headers.js +21 -17
- package/esm/headers.js.map +1 -1
- package/esm/hooks.js +12 -12
- package/esm/icons.js +5 -2
- package/esm/icons.js.map +1 -1
- package/esm/index.js +3 -3
- package/esm/{navigation-5216dbad.js → navigation-d3d2bf2e.js} +2 -2
- package/esm/{navigation-5216dbad.js.map → navigation-d3d2bf2e.js.map} +1 -1
- package/esm/navigation.js +12 -12
- package/esm/sections.dynamicform.js +29 -33
- package/esm/sections.dynamicform.js.map +1 -1
- package/esm/sections.events.js +48 -30
- package/esm/sections.events.js.map +1 -1
- package/esm/sections.forms.js +11 -11
- package/esm/sections.jobs.js +99 -45
- package/esm/sections.jobs.js.map +1 -1
- package/esm/sections.js +537 -259
- package/esm/sections.js.map +1 -1
- package/esm/sections.news.js +155 -81
- package/esm/sections.news.js.map +1 -1
- package/esm/sections.pois.js +39 -34
- package/esm/sections.pois.js.map +1 -1
- package/esm/{structuredData-abf610d8.js → structuredData-73bcbf07.js} +32 -2
- package/esm/structuredData-73bcbf07.js.map +1 -0
- package/esm/{styles-1f1841ef.js → styles-f3ba5bae.js} +3 -2
- package/esm/styles-f3ba5bae.js.map +1 -0
- package/esm/typography.js +6 -6
- package/esm/{urlParams-9cfdaf71.js → urlParams-e7114d3e.js} +2 -2
- package/esm/{urlParams-9cfdaf71.js.map → urlParams-e7114d3e.js.map} +1 -1
- package/esm/{useCookieConsent-6661d419.js → useCookieConsent-4b667d40.js} +2 -2
- package/esm/{useCookieConsent-6661d419.js.map → useCookieConsent-4b667d40.js.map} +1 -1
- package/esm/{useEqualSheetHeight-60ff9de7.js → useEqualSheetHeight-80704864.js} +4 -4
- package/esm/{useEqualSheetHeight-60ff9de7.js.map → useEqualSheetHeight-80704864.js.map} +1 -1
- package/esm/{useLazyInput-0b6932aa.js → useLazyInput-08ee63f4.js} +2 -2
- package/esm/{useLazyInput-0b6932aa.js.map → useLazyInput-08ee63f4.js.map} +1 -1
- package/esm/{useLeafletMap-fa0ab7d4.js → useLeafletMap-f9050715.js} +2 -2
- package/esm/{useLeafletMap-fa0ab7d4.js.map → useLeafletMap-f9050715.js.map} +1 -1
- package/esm/{useMediaQuery-4c1b1fa6.js → useMediaQuery-c9fa1339.js} +3 -3
- package/esm/{useMediaQuery-4c1b1fa6.js.map → useMediaQuery-c9fa1339.js.map} +1 -1
- package/package.json +1 -1
- package/types/buttons.d.ts +1 -0
- package/types/buttons.d.ts.map +1 -1
- package/types/components/base/Grid.d.ts +3 -0
- package/types/components/base/Grid.d.ts.map +1 -1
- package/types/components/base/Section.d.ts +3 -1
- package/types/components/base/Section.d.ts.map +1 -1
- package/types/components/base/icons/ButtonLeft.d.ts +1 -2
- package/types/components/base/icons/ButtonLeft.d.ts.map +1 -1
- package/types/components/base/icons/ButtonRight.d.ts +1 -2
- package/types/components/base/icons/ButtonRight.d.ts.map +1 -1
- package/types/components/base/icons/CircleX.d.ts +10 -0
- package/types/components/base/icons/CircleX.d.ts.map +1 -0
- package/types/components/base/icons/Icons.d.ts +3 -0
- package/types/components/base/icons/Icons.d.ts.map +1 -1
- package/types/components/blocks/Alert.d.ts.map +1 -1
- package/types/components/blocks/CookieConsent.d.ts.map +1 -1
- package/types/components/blocks/EventBlock.d.ts +18 -11
- package/types/components/blocks/EventBlock.d.ts.map +1 -1
- package/types/components/blocks/Feature.d.ts +6 -2
- package/types/components/blocks/Feature.d.ts.map +1 -1
- package/types/components/blocks/Image.d.ts +2 -0
- package/types/components/blocks/Image.d.ts.map +1 -1
- package/types/components/blocks/InfoList.d.ts +5 -1
- package/types/components/blocks/InfoList.d.ts.map +1 -1
- package/types/components/blocks/JobCard.d.ts +4 -0
- package/types/components/blocks/JobCard.d.ts.map +1 -1
- package/types/components/blocks/NavBlock.d.ts.map +1 -1
- package/types/components/blocks/NewsCard.d.ts +20 -9
- package/types/components/blocks/NewsCard.d.ts.map +1 -1
- package/types/components/blocks/POICard.d.ts +7 -1
- package/types/components/blocks/POICard.d.ts.map +1 -1
- package/types/components/blocks/POIFacts.d.ts +1 -0
- package/types/components/blocks/POIFacts.d.ts.map +1 -1
- package/types/components/blocks/PriceTag.d.ts +9 -4
- package/types/components/blocks/PriceTag.d.ts.map +1 -1
- package/types/components/blocks/PromotionCard.d.ts +2 -2
- package/types/components/blocks/PromotionCard.d.ts.map +1 -1
- package/types/components/blocks/TableBlock.d.ts +2 -0
- package/types/components/blocks/TableBlock.d.ts.map +1 -1
- package/types/components/blocks/Tag.d.ts +1 -0
- package/types/components/blocks/Tag.d.ts.map +1 -1
- package/types/components/blocks/Title.d.ts +5 -0
- package/types/components/blocks/Title.d.ts.map +1 -1
- package/types/components/blocks/VideoBlock.d.ts +2 -0
- package/types/components/blocks/VideoBlock.d.ts.map +1 -1
- package/types/components/blocks/VideoCard.d.ts +2 -0
- package/types/components/blocks/VideoCard.d.ts.map +1 -1
- package/types/components/buttons/Button.d.ts +6 -1
- package/types/components/buttons/Button.d.ts.map +1 -1
- package/types/components/buttons/ButtonGhost.d.ts +6 -1
- package/types/components/buttons/ButtonGhost.d.ts.map +1 -1
- package/types/components/buttons/Control.d.ts.map +1 -1
- package/types/components/buttons/PickerAction.d.ts +14 -0
- package/types/components/buttons/PickerAction.d.ts.map +1 -0
- package/types/components/buttons/Pointer.d.ts +6 -2
- package/types/components/buttons/Pointer.d.ts.map +1 -1
- package/types/components/fields/Checkbox.d.ts +0 -1
- package/types/components/fields/Checkbox.d.ts.map +1 -1
- package/types/components/fields/CompactForm.d.ts.map +1 -1
- package/types/components/fields/Datepicker.d.ts +31 -13
- package/types/components/fields/Datepicker.d.ts.map +1 -1
- package/types/components/fields/FileUpload.d.ts.map +1 -1
- package/types/components/fields/FormField.d.ts +4 -1
- package/types/components/fields/FormField.d.ts.map +1 -1
- package/types/components/fields/LocationField.d.ts +1 -0
- package/types/components/fields/LocationField.d.ts.map +1 -1
- package/types/components/fields/MultiselectDropdown.d.ts.map +1 -1
- package/types/components/fields/Radio.d.ts +0 -1
- package/types/components/fields/Radio.d.ts.map +1 -1
- package/types/components/fields/SelectDropdown.d.ts.map +1 -1
- package/types/components/fields/Textarea.d.ts.map +1 -1
- package/types/components/fields/Textfield.d.ts.map +1 -1
- package/types/components/sections/Accordion.d.ts +6 -6
- package/types/components/sections/Accordion.d.ts.map +1 -1
- package/types/components/sections/AlertList.d.ts +10 -6
- package/types/components/sections/AlertList.d.ts.map +1 -1
- package/types/components/sections/CallToAction.d.ts +14 -9
- package/types/components/sections/CallToAction.d.ts.map +1 -1
- package/types/components/sections/CardList.d.ts +19 -14
- package/types/components/sections/CardList.d.ts.map +1 -1
- package/types/components/sections/ComparisonSlider.d.ts.map +1 -1
- package/types/components/sections/CrossPromotion.d.ts +11 -12
- package/types/components/sections/CrossPromotion.d.ts.map +1 -1
- package/types/components/sections/FactGrid.d.ts +4 -0
- package/types/components/sections/FactGrid.d.ts.map +1 -1
- package/types/components/sections/FactList.d.ts +13 -0
- package/types/components/sections/FactList.d.ts.map +1 -1
- package/types/components/sections/FeatureList.d.ts +4 -0
- package/types/components/sections/FeatureList.d.ts.map +1 -1
- package/types/components/sections/Gallery.d.ts +2 -0
- package/types/components/sections/Gallery.d.ts.map +1 -1
- package/types/components/sections/IconList.d.ts +4 -0
- package/types/components/sections/IconList.d.ts.map +1 -1
- package/types/components/sections/IndexList.d.ts +2 -0
- package/types/components/sections/IndexList.d.ts.map +1 -1
- package/types/components/sections/Map.d.ts +11 -24
- package/types/components/sections/Map.d.ts.map +1 -1
- package/types/components/sections/NavList.d.ts +2 -0
- package/types/components/sections/NavList.d.ts.map +1 -1
- package/types/components/sections/NumberList.d.ts +4 -0
- package/types/components/sections/NumberList.d.ts.map +1 -1
- package/types/components/sections/ParallaxBackground.d.ts.map +1 -1
- package/types/components/sections/PriceList.d.ts +18 -0
- package/types/components/sections/PriceList.d.ts.map +1 -1
- package/types/components/sections/PriceTable.d.ts +6 -2
- package/types/components/sections/PriceTable.d.ts.map +1 -1
- package/types/components/sections/Quote.d.ts.map +1 -1
- package/types/components/sections/RawVideo.d.ts +4 -0
- package/types/components/sections/RawVideo.d.ts.map +1 -1
- package/types/components/sections/SocialWall.d.ts +13 -12
- package/types/components/sections/SocialWall.d.ts.map +1 -1
- package/types/components/sections/Table.d.ts +11 -2
- package/types/components/sections/Table.d.ts.map +1 -1
- package/types/components/sections/Teaser.d.ts.map +1 -1
- package/types/components/sections/TeaserWide.d.ts.map +1 -1
- package/types/components/sections/Video.d.ts +2 -0
- package/types/components/sections/Video.d.ts.map +1 -1
- package/types/components/sections/events/EventDetail.d.ts +14 -14
- package/types/components/sections/events/EventDetail.d.ts.map +1 -1
- package/types/components/sections/events/EventList.d.ts +3 -16
- package/types/components/sections/events/EventList.d.ts.map +1 -1
- package/types/components/sections/events/EventOverview.d.ts +3 -15
- package/types/components/sections/events/EventOverview.d.ts.map +1 -1
- package/types/components/sections/form/DynamicForm.d.ts +9 -9
- package/types/components/sections/form/DynamicForm.d.ts.map +1 -1
- package/types/components/sections/form/renderer/datepickerRenderer.d.ts.map +1 -1
- package/types/components/sections/header/HeaderKenBurns.d.ts.map +1 -1
- package/types/components/sections/header/HeaderPoster.d.ts.map +1 -1
- package/types/components/sections/header/HeaderVideo.d.ts.map +1 -1
- package/types/components/sections/jobs/JobArticle.d.ts +4 -0
- package/types/components/sections/jobs/JobArticle.d.ts.map +1 -1
- package/types/components/sections/jobs/JobList.d.ts +8 -0
- package/types/components/sections/jobs/JobList.d.ts.map +1 -1
- package/types/components/sections/news/NewsAuthorCard.d.ts.map +1 -1
- package/types/components/sections/news/NewsFooter.d.ts +3 -16
- package/types/components/sections/news/NewsFooter.d.ts.map +1 -1
- package/types/components/sections/news/NewsImages.d.ts.map +1 -1
- package/types/components/sections/news/NewsIntro.d.ts.map +1 -1
- package/types/components/sections/news/NewsList.d.ts +3 -16
- package/types/components/sections/news/NewsList.d.ts.map +1 -1
- package/types/components/sections/news/NewsOverview.d.ts +3 -15
- package/types/components/sections/news/NewsOverview.d.ts.map +1 -1
- package/types/components/sections/news/NewsTable.d.ts +8 -0
- package/types/components/sections/news/NewsTable.d.ts.map +1 -1
- package/types/components/sections/news/NewsVideo.d.ts +4 -0
- package/types/components/sections/news/NewsVideo.d.ts.map +1 -1
- package/types/components/sections/pois/PointOfInterestOverview.d.ts +13 -12
- package/types/components/sections/pois/PointOfInterestOverview.d.ts.map +1 -1
- package/types/components/typography/Callout.d.ts +1 -0
- package/types/components/typography/Callout.d.ts.map +1 -1
- package/types/components/typography/Copy.d.ts +7 -1
- package/types/components/typography/Copy.d.ts.map +1 -1
- package/types/components/typography/Heading.d.ts +1 -0
- package/types/components/typography/Heading.d.ts.map +1 -1
- package/types/components/typography/Link.d.ts +3 -0
- package/types/components/typography/Link.d.ts.map +1 -1
- package/types/fields.d.ts +0 -1
- package/types/fields.d.ts.map +1 -1
- package/types/utils/structuredData.d.ts +14 -0
- package/types/utils/structuredData.d.ts.map +1 -1
- package/types/utils/styles.d.ts +1 -0
- package/types/utils/styles.d.ts.map +1 -1
- package/cjs/Actions-c52a14e4.js +0 -2
- package/cjs/Bdot-62c8e349.js +0 -2
- package/cjs/Button-1adf99b8.js +0 -2
- package/cjs/Button-1adf99b8.js.map +0 -1
- package/cjs/ButtonGhost-fbab8769.js +0 -2
- package/cjs/ButtonGhost-fbab8769.js.map +0 -1
- package/cjs/Callout-d84ca60b.js +0 -2
- package/cjs/Callout-d84ca60b.js.map +0 -1
- package/cjs/Checkbox-ddc9a87d.js +0 -2
- package/cjs/Checkbox-ddc9a87d.js.map +0 -1
- package/cjs/Control-e15e1572.js +0 -2
- package/cjs/Control-e15e1572.js.map +0 -1
- package/cjs/Copy-2a9d4b5d.js +0 -2
- package/cjs/Copy-2a9d4b5d.js.map +0 -1
- package/cjs/EventBlock-0b0f0dd3.js +0 -2
- package/cjs/EventBlock-0b0f0dd3.js.map +0 -1
- package/cjs/Filter-89286db9.js +0 -2
- package/cjs/Filter-89286db9.js.map +0 -1
- package/cjs/FilterBar-bfd9db6e.js +0 -2
- package/cjs/FilterBar-bfd9db6e.js.map +0 -1
- package/cjs/FilterField-d204feb1.js +0 -2
- package/cjs/Grid-1acefee9.js +0 -2
- package/cjs/Grid-1acefee9.js.map +0 -1
- package/cjs/Image-69a9c116.js +0 -2
- package/cjs/Image-69a9c116.js.map +0 -1
- package/cjs/InfoList-f040b8fb.js +0 -2
- package/cjs/InfoList-f040b8fb.js.map +0 -1
- package/cjs/LanguageSwitcher-c6fd04df.js +0 -2
- package/cjs/LibThemeProvider-69109901.js +0 -2
- package/cjs/Link-8951180c.js +0 -2
- package/cjs/Link-8951180c.js.map +0 -1
- package/cjs/MultiselectDropdown-d46ae36f.js +0 -2
- package/cjs/MultiselectDropdown-d46ae36f.js.map +0 -1
- package/cjs/Navigation-6c5d9dee.js +0 -2
- package/cjs/Pointer-0f69256f.js +0 -2
- package/cjs/Pointer-0f69256f.js.map +0 -1
- package/cjs/Section-c9a16ccc.js +0 -2
- package/cjs/Section-c9a16ccc.js.map +0 -1
- package/cjs/SocialList-73af56b5.js +0 -2
- package/cjs/TableBlock-532c7e1e.js +0 -2
- package/cjs/TableBlock-532c7e1e.js.map +0 -1
- package/cjs/Tag-232f7aa9.js +0 -2
- package/cjs/Tag-232f7aa9.js.map +0 -1
- package/cjs/Textarea-d30682bd.js +0 -2
- package/cjs/Textarea-d30682bd.js.map +0 -1
- package/cjs/Textfield-b3769184.js +0 -2
- package/cjs/Textfield-b3769184.js.map +0 -1
- package/cjs/VideoBlock-0cae22f0.js +0 -2
- package/cjs/VideoCard-c9d4f46a.js +0 -2
- package/cjs/VideoCard-c9d4f46a.js.map +0 -1
- package/cjs/Wrapper-bca9463e.js +0 -2
- package/cjs/concat-f387d848.js +0 -2
- package/cjs/formFieldText-21f5f620.js +0 -2
- package/cjs/formFieldText-21f5f620.js.map +0 -1
- package/cjs/navigation-3f9d4ac4.js +0 -2
- package/cjs/structuredData-0b1278a9.js +0 -2
- package/cjs/structuredData-0b1278a9.js.map +0 -1
- package/cjs/styles-13e5d9ac.js +0 -2
- package/cjs/styles-13e5d9ac.js.map +0 -1
- package/cjs/useCookieConsent-665d91cf.js +0 -2
- package/cjs/useEqualSheetHeight-f1c10ec5.js +0 -2
- package/cjs/useLazyInput-911b8eda.js +0 -2
- package/cjs/useLeafletMap-514304b6.js +0 -2
- package/cjs/useMediaQuery-619d7203.js +0 -2
- package/esm/Button-9a0dd9aa.js +0 -115
- package/esm/Button-9a0dd9aa.js.map +0 -1
- package/esm/ButtonGhost-fc9e7a75.js +0 -112
- package/esm/ButtonGhost-fc9e7a75.js.map +0 -1
- package/esm/Callout-46f0bef0.js.map +0 -1
- package/esm/Checkbox-962fea67.js.map +0 -1
- package/esm/Control-56ec7872.js +0 -52
- package/esm/Control-56ec7872.js.map +0 -1
- package/esm/Copy-fd9e25c0.js.map +0 -1
- package/esm/EventBlock-12361860.js.map +0 -1
- package/esm/Filter-19220970.js.map +0 -1
- package/esm/FilterBar-8c258534.js.map +0 -1
- package/esm/Grid-7b33e271.js.map +0 -1
- package/esm/Image-c67870d4.js.map +0 -1
- package/esm/InfoList-d853db58.js.map +0 -1
- package/esm/Link-6067a27f.js.map +0 -1
- package/esm/MultiselectDropdown-61a5a1a6.js.map +0 -1
- package/esm/Pointer-3e965d7b.js +0 -111
- package/esm/Pointer-3e965d7b.js.map +0 -1
- package/esm/Section-bd61eb2f.js.map +0 -1
- package/esm/TableBlock-a65315ca.js.map +0 -1
- package/esm/Tag-217cd89b.js.map +0 -1
- package/esm/Textarea-60503eb7.js.map +0 -1
- package/esm/Textfield-e8f48b5f.js.map +0 -1
- package/esm/VideoBlock-3f150172.js.map +0 -1
- package/esm/VideoCard-aa60fbe5.js.map +0 -1
- package/esm/concat-ab3c66f2.js.map +0 -1
- package/esm/formFieldText-c6fcd370.js.map +0 -1
- package/esm/structuredData-abf610d8.js.map +0 -1
- package/esm/styles-1f1841ef.js.map +0 -1
- package/types/components/fields/SearchInput.d.ts +0 -16
- package/types/components/fields/SearchInput.d.ts.map +0 -1
package/cjs/sections.pois.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sections.pois.js","sources":["../src/components/sections/pois/PointOfInterestDetail.tsx","../src/components/sections/pois/filters.ts","../src/components/sections/pois/partials/PoiFilterBar.tsx","../src/components/sections/pois/PointOfInterestOverview.tsx","../src/components/sections/pois/PointOfInterestMap.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport styled from 'styled-components';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport Copy from 'components/typography/Copy';\nimport Heading from 'components/typography/Heading';\nimport { spacings } from 'utils/styles';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Grid from 'components/base/Grid';\nimport InfoList, { InfoGroup } from 'components/blocks/InfoList';\nimport POIFacts from 'components/blocks/POIFacts';\nimport { isValidArray } from 'utils/arrays';\n\nconst StyledImage = styled(Image)`\n &:not(:last-child) {\n margin-bottom: ${spacings.spacer}px;\n }\n`;\n\nconst Facts = styled(POIFacts)`\n max-width: 880px;\n`;\n\nconst PoiTitle = styled(Heading)`\n max-width: 880px;\n\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2; /* number of lines to show */\n line-clamp: 2;\n -webkit-box-orient: vertical;\n\n &:not(:first-child) {\n margin-top: ${spacings.nudge * 3}px;\n }\n`;\n\nconst PoiText = styled(Copy)`\n max-width: 880px;\n\n &:not(:first-child) {\n margin-top: ${spacings.nudge * 3}px;\n }\n`;\n\nconst PointOfInterestDetail: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** POI image */\n image?: Omit<ImageProps, 'coverSpace'>;\n\n /** POI title */\n title?: string;\n\n /** POI intro text */\n intro?: string;\n\n /** POI text (richtext) */\n text?: string;\n\n /** Array of POI facts */\n facts?: string[];\n\n /** Additional POI infos */\n infos?: InfoGroup[];\n\n /** Section background */\n bgMode?: 'inverted' | 'full';\n\n /** Function to inject custom feature node */\n customFact?: (props: {\n key: React.Key;\n name: string;\n isInverted?: boolean;\n }) => React.ReactNode;\n}> = ({\n anchorId,\n image,\n title,\n intro,\n text,\n facts,\n infos,\n bgMode,\n customFact,\n}) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n const hasInfos = useMemo(() => {\n return isValidArray(\n infos?.filter((info) => isValidArray(info.items, false)),\n false\n );\n }, [infos]);\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : hasBg\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper addWhitespace>\n {image?.small && (\n <StyledImage\n {...image}\n coverSpace\n allowEdgeRadius\n isInverted={isInverted}\n />\n )}\n <Grid.Row\n gutter={spacings.nudge * 5}\n semilarge={{ gutter: spacings.spacer }}\n >\n <Grid.Col semilarge={{ span: hasInfos ? 5.7 / 8 : 1 }}>\n {title && (\n <PoiTitle size=\"heading-2\" isInverted={isInverted}>\n {title}\n </PoiTitle>\n )}\n {isValidArray(facts, false) && (\n <Facts\n isInverted={isInverted}\n facts={facts}\n customFact={customFact}\n />\n )}\n {intro && (\n <PoiText\n size=\"medium\"\n type=\"copy-b\"\n isInverted={isInverted}\n innerHTML={intro}\n />\n )}\n {text && (\n <PoiText\n size=\"medium\"\n isInverted={isInverted}\n innerHTML={text}\n />\n )}\n </Grid.Col>\n {hasInfos && (\n <Grid.Col semilarge={{ span: 2.3 / 8 }}>\n <InfoList isInverted={isInverted} items={infos} />\n </Grid.Col>\n )}\n </Grid.Row>\n </Wrapper>\n </Section>\n );\n};\n\nexport const PointOfInterestDetailComponent = PointOfInterestDetail;\nexport default withLibTheme(PointOfInterestDetail);\n","import { POICardProps } from 'components/blocks/POICard';\nimport { isValidArray } from 'hooks';\nimport { escapeRegExp } from 'utils/escape';\n\nexport type POIData = Pick<\n POICardProps,\n 'name' | 'facts' | 'infos' | 'shortDescription'\n> & { id: string };\n\nexport interface FilterMatch {\n item: POIData;\n priority: number;\n}\n\nconst poiExactNameFilter =\n <T extends POIData>(filterQuery: string) =>\n (value: T) => {\n const regex = new RegExp(filterQuery);\n return regex.test(value.name);\n };\n\nconst poiSoftNameFilter =\n <T extends POIData>(filterQuery: string) =>\n (value: T) => {\n const preparedQuery = filterQuery.toLowerCase().replace(/\\s/g, '');\n const preparedName = value.name.toLowerCase().replace(/\\s/g, '');\n\n const regex = new RegExp(preparedQuery);\n return regex.test(preparedName);\n };\n\nconst poiFactFilter =\n (filterQuery: string) =>\n <T extends POIData>(value: T) => {\n if (!isValidArray(value.facts, false)) return false;\n\n const preparedQuery = filterQuery.toLowerCase().replace(/\\s/g, '');\n const regex = new RegExp(preparedQuery);\n\n const result = value.facts.find((fact) => {\n const preparedFact = fact.toLowerCase().replace(/\\s/g, '');\n return regex.test(preparedFact);\n });\n\n return !!result;\n };\n\nconst poiInfoFilter =\n (filterQuery: string) =>\n <T extends POIData>(value: T) => {\n if (!isValidArray(value?.infos, false)) return false;\n\n const preparedQuery = filterQuery.toLowerCase().replace(/\\s/g, '');\n const regex = new RegExp(preparedQuery);\n\n return !!value.infos.find((info) => {\n if (!info.text) return false;\n const preparedText = info.text.toLowerCase().replace(/\\s/g, '');\n return regex.test(preparedText);\n });\n };\n\nconst poiDescriptionFilter =\n (filterQuery: string) =>\n <T extends POIData>(value: T) => {\n if (!value.shortDescription) return false;\n\n const preparedQuery = filterQuery.toLowerCase().replace(/\\s/g, '');\n const preparedDesc = value.shortDescription\n .toLowerCase()\n .replace(/\\s/g, '');\n\n const regex = new RegExp(preparedQuery);\n return regex.test(preparedDesc);\n };\n\nconst removeMatchIntersections = <T extends POIData>(\n array: FilterMatch[],\n item?: T[]\n) => {\n if (!item) return [];\n return item?.filter(\n (m) => !array.find((prioItem) => prioItem.item.id === m.id)\n );\n};\n\nconst filterPois = <T extends POIData>(filterQuery: string, pois: T[]) => {\n const prioList: FilterMatch[] = [];\n if (\n !isValidArray(\n pois?.filter((poi) => poi.id !== undefined),\n false\n )\n ) {\n return prioList;\n }\n\n // PRIO 1 Filter: Exact name\n const exactNameMatches = pois?.filter(poiExactNameFilter(filterQuery));\n if (isValidArray(exactNameMatches, false)) {\n prioList.push(\n ...exactNameMatches.map((match) => ({\n item: match,\n priority: 1,\n }))\n );\n }\n\n // PRIO 2 Filter: Name\n const nameMatches = removeMatchIntersections(\n prioList,\n pois?.filter(poiSoftNameFilter(filterQuery))\n );\n\n if (isValidArray(nameMatches, false)) {\n prioList.push(\n ...nameMatches.map((match) => ({\n item: match,\n priority: 2,\n }))\n );\n }\n\n // PRIO 3 Filter: Facts\n const factMatches = removeMatchIntersections(\n prioList,\n pois?.filter(poiFactFilter(filterQuery))\n );\n\n if (isValidArray(factMatches, false)) {\n prioList.push(\n ...factMatches.map((match) => ({\n item: match,\n priority: 3,\n }))\n );\n }\n\n // PRIO 4 Filter: Description\n const infoMatches = removeMatchIntersections(\n prioList,\n pois?.filter(poiInfoFilter(filterQuery))\n );\n\n if (isValidArray(infoMatches, false)) {\n prioList.push(\n ...infoMatches.map((match) => ({\n item: match,\n priority: 4,\n }))\n );\n }\n\n // PRIO 5 Filter: Description\n const descMatches = removeMatchIntersections(\n prioList,\n pois?.filter(poiDescriptionFilter(filterQuery))\n );\n\n if (isValidArray(descMatches, false)) {\n prioList.push(\n ...descMatches.map((match) => ({\n item: match,\n priority: 5,\n }))\n );\n }\n\n return prioList;\n};\n\nexport const getFilterMatches = <T extends POIData>(\n filterQuery: string,\n categoryFilters: string[],\n items: T[]\n) => {\n const searchMatches: Map<string, FilterMatch> = new Map();\n\n if (!filterQuery && !categoryFilters.length) {\n for (const item of items) {\n searchMatches.set(item.id, {\n item,\n priority: 0,\n });\n }\n }\n\n for (const item of items) {\n if (item.facts?.some((fact) => categoryFilters.includes(fact))) {\n searchMatches.set(item.id, {\n item,\n priority: 1,\n });\n }\n }\n\n // tracking matches of each query part\n const matches = filterQuery\n ? filterPois(escapeRegExp(filterQuery), items || [])\n : [];\n\n for (const match of matches) {\n if (searchMatches.has(match.item.id)) continue;\n searchMatches.set(match.item.id, match);\n }\n\n return searchMatches;\n};\n","import Cross from 'components/base/icons/Cross';\nimport CrossBubble from 'components/base/icons/CrossBubble';\nimport Filter from 'components/base/icons/Filter';\nimport Magnifier from 'components/base/icons/Magnifier';\nimport FilterBar, { FilterBarProps } from 'components/blocks/FilterBar';\nimport React, { FC } from 'react';\n\nconst PoiFilterBar: FC<\n FilterBarProps & { isInverted?: boolean; className?: string }\n> = ({\n hasBorders,\n value,\n onChange,\n textFilter,\n categoryFilter,\n mobileSubmitLabel,\n closeIcon,\n toggleLabel,\n filterIcon,\n indicator,\n isInverted,\n className,\n}) => {\n return (\n <FilterBar\n isInverted={isInverted}\n hasBorders={hasBorders}\n value={value}\n onChange={onChange}\n textFilter={\n textFilter\n ? {\n placeholder: textFilter.placeholder || 'Search...',\n icon: textFilter.icon\n ? textFilter.icon\n : () => <Magnifier width={18} height={18} />,\n submitIcon: textFilter.submitIcon\n ? textFilter.submitIcon\n : () => null,\n clearIcon: textFilter.clearIcon\n ? textFilter.clearIcon\n : () => <CrossBubble />,\n }\n : undefined\n }\n categoryFilter={\n categoryFilter\n ? {\n label: categoryFilter.label || 'Categories',\n items: categoryFilter.items || [],\n resetLabel:\n categoryFilter.resetLabel || 'reset selection',\n }\n : undefined\n }\n mobileSubmitLabel={mobileSubmitLabel || 'Apply filters'}\n closeIcon={closeIcon ? closeIcon : () => <Cross />}\n toggleLabel={toggleLabel || 'Search & Filter'}\n filterIcon={filterIcon ? filterIcon : () => <Filter />}\n indicator={indicator}\n className={className}\n />\n );\n};\n\nexport default PoiFilterBar;\n","import Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport { Info } from 'components/blocks/InfoList';\nimport POICard, { POICardProps } from 'components/blocks/POICard';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport styled from 'styled-components';\nimport { isValidArray } from 'utils/arrays';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { mq, spacings, getColors as color } from 'utils/styles';\nimport { deleteUrlParam, setUrlParam } from 'utils/urlParams';\nimport { FilterState } from 'components/blocks/FilterBar';\nimport { getFilterMatches } from './filters';\nimport * as PoiPartials from 'components/sections/pois/partials';\n\nconst POISection = styled(Section)`\n overflow: visible;\n`;\n\nconst Content = styled.div`\n & > * + * {\n margin-top: ${spacings.nudge * 5}px;\n }\n\n @media ${mq.large} {\n & > * + * {\n margin-top: ${spacings.nudge * 3}px;\n }\n }\n`;\n\nconst PoiOverviewFilterBar = styled(PoiPartials.PoiFilterBar)`\n // margin to show prevent section overflow outline\n margin-top: 2px;\n border: solid 1px\n ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).elementBg.light\n : color(theme).elementBg.dark};\n border-radius: ${({ theme }) => theme.globals.sections.edgeRadius};\n\n &:not(:last-child) {\n margin-bottom: ${spacings.nudge * 5}px;\n }\n\n @media ${mq.medium} {\n border: none;\n }\n`;\n\ninterface CardProps extends POICardProps {\n id: string;\n infos?: Array<Info & { allowFiltering?: boolean }>;\n}\n\nexport type PointOfInterestOverviewItem = Omit<CardProps, 'isInverted'>;\n\nexport interface PoiOverviewFilters {\n toggleLabel?: string;\n mobileSubmitLabel?: string;\n categoryFilter?: {\n label?: string;\n resetLabel?: string;\n };\n textFilter?: {\n placeholder?: string;\n icon?: (isInverted?: boolean) => React.ReactNode;\n submitIcon?: (isInverted?: boolean) => React.ReactNode;\n clearIcon?: (isInverted?: boolean) => React.ReactNode;\n };\n closeIcon?: (isInverted?: boolean) => React.ReactNode;\n filterIcon?: (isInverted?: boolean) => React.ReactNode;\n indicator?: (props: {\n isOpen: boolean;\n isDisabled?: boolean;\n }) => React.ReactNode;\n}\n\nconst PointOfInterestOverview: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array of POI card settings */\n pois?: PointOfInterestOverviewItem[];\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n\n /** Initial POI filter states */\n initialPoiFilters?: FilterState;\n\n /** POI filter settings */\n poiFilters?: PoiOverviewFilters;\n customPoiFilters?: (props: {\n pois: PointOfInterestOverviewItem[];\n filters: FilterState;\n setFilters: React.Dispatch<React.SetStateAction<FilterState>>;\n settings?: PoiOverviewFilters;\n }) => React.ReactNode;\n}> = ({\n anchorId,\n bgMode,\n pois,\n initialPoiFilters,\n poiFilters,\n customPoiFilters,\n}) => {\n const { colors, globals } = useLibTheme();\n const filterName = globals.sections.poiFilterName;\n const factFiltername = globals.sections.poiFactFilterName;\n\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n\n const [filters, setFilters] = useState<FilterState>(\n initialPoiFilters || {\n categoryFilter: [],\n textFilter: '',\n }\n );\n\n const categories = useMemo(() => {\n return pois?.reduce<string[]>((acc, poi) => {\n const newCategories = [...acc];\n\n for (const fact of poi.facts || []) {\n if (!newCategories.includes(fact)) {\n newCategories.push(fact);\n }\n }\n\n return newCategories;\n }, []);\n }, [pois]);\n\n const poiMatches = useMemo(() => {\n const matches =\n getFilterMatches<PointOfInterestOverviewItem>(\n filters?.textFilter || '',\n filters?.categoryFilter || [],\n pois || []\n ) || pois;\n\n return Array.from(matches).map((m) => m[1]);\n }, [filters?.textFilter, filters?.categoryFilter, pois]);\n\n useEffect(() => {\n if (filters.textFilter) {\n setUrlParam(filterName, filters.textFilter);\n } else {\n deleteUrlParam(filterName);\n }\n\n if (isValidArray(filters.categoryFilter, false)) {\n setUrlParam(factFiltername, filters.categoryFilter.join(','));\n } else {\n deleteUrlParam(factFiltername);\n }\n }, [\n filterName,\n factFiltername,\n filters.textFilter,\n filters.categoryFilter,\n ]);\n\n return (\n <POISection\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : hasBg\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper addWhitespace>\n {poiFilters ? (\n customPoiFilters ? (\n customPoiFilters?.({\n filters,\n setFilters,\n pois: pois || [],\n settings: poiFilters,\n })\n ) : (\n <PoiOverviewFilterBar\n hasBorders\n value={filters}\n onChange={setFilters}\n textFilter={poiFilters?.textFilter || undefined}\n categoryFilter={\n poiFilters?.categoryFilter\n ? {\n ...poiFilters.categoryFilter,\n items: categories?.map(\n (cat) =>\n ({\n value: cat,\n label: cat,\n } || [])\n ),\n }\n : undefined\n }\n mobileSubmitLabel={poiFilters?.mobileSubmitLabel}\n closeIcon={poiFilters?.closeIcon}\n toggleLabel={poiFilters?.toggleLabel}\n filterIcon={poiFilters?.filterIcon}\n indicator={poiFilters?.indicator}\n isInverted={isInverted}\n />\n )\n ) : null}\n <Content>\n {poiMatches\n ?.sort((a, b) => a.priority - b.priority)\n ?.map((poi, i) => (\n <POICard\n key={i}\n {...poi.item}\n isInverted={isInverted}\n />\n ))}\n </Content>\n </Wrapper>\n </POISection>\n );\n};\n\nexport const PointOfInterestOverviewComponent = PointOfInterestOverview;\nexport default withLibTheme(PointOfInterestOverview);\n","import React, { FC, useEffect, useMemo, useState } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport Section from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport useLeafletMap, { LeafletMapMarker } from 'utils/useLeafletMap';\nimport {\n mq,\n withRange,\n getColors as color,\n getGlobals as global,\n spacings,\n} from 'utils/styles';\nimport {\n generateNavbarIdent as genIdent,\n getFullNavbarHeights as getNavHeight,\n} from '../navigation/Navigation';\nimport { getSVGDataImg as getSVGData } from 'utils/dataURI';\nimport LocationPin from 'components/base/icons/LocationPin';\nimport Copy from 'components/typography/Copy';\nimport { isValidArray } from 'utils/arrays';\nimport POIFacts from 'components/blocks/POIFacts';\nimport InfoList, { Info } from 'components/blocks/InfoList';\nimport useGeolocation from 'utils/useGeolocation';\nimport CurrentLocation from 'components/base/icons/CurrentLocation';\nimport Cross from 'components/base/icons/Cross';\nimport MyLocation from 'components/base/icons/MyLocation';\nimport { FilterState } from 'components/blocks/FilterBar';\nimport { getFilterMatches } from './filters';\n\nimport * as PoiPartials from 'components/sections/pois/partials';\nimport { deleteUrlParam, setUrlParam } from 'hooks';\n\nconst genHeightStyles = () => css`\n // Doing some crazy shit to calculate curent navbar height in CSS\n ${({ theme }) => {\n // navbar main only\n const mainIdent = genIdent({\n pageFlow: 'beforeContent',\n hasMain: true,\n });\n\n // navbar main and top\n const mainTopIdent = genIdent({\n pageFlow: 'beforeContent',\n hasMain: true,\n hasTop: true,\n });\n\n // navbar main and bottom\n const mainBottomIdent = genIdent({\n pageFlow: 'beforeContent',\n hasMain: true,\n hasBottom: true,\n });\n\n // full navbar with all bars\n const fullIdent = genIdent({\n pageFlow: 'beforeContent',\n hasTop: true,\n hasMain: true,\n hasBottom: true,\n });\n\n const navMainHeight = getNavHeight(theme, mainIdent).large;\n const navMainTopHeight = getNavHeight(theme, mainTopIdent).large;\n const navMainBottomHeight = getNavHeight(theme, mainBottomIdent).large;\n const navFullHeight = getNavHeight(theme, fullIdent).large;\n\n const mapToSelector = (idents: string[]) => {\n return idents.map((id) => `[data-navbar-ident*='${id}']`).join('');\n };\n\n const refHeight = '100vh';\n\n return css`\n ${Map} {\n height: ${refHeight};\n }\n\n // with main navbar element\n header${mapToSelector(mainIdent.split('-'))} ~ & {\n ${Map} {\n height: calc(${refHeight} - ${navMainHeight[0]}px);\n }\n }\n\n // with main and top navbar elements\n header${mapToSelector(mainTopIdent.split('-'))} ~ & {\n ${Map} {\n height: calc(${refHeight} - ${navMainTopHeight[0]}px);\n }\n }\n\n // with main and bottom navbar elements\n header${mapToSelector(mainBottomIdent.split('-'))} ~ & {\n ${Map} {\n height: calc(${refHeight} - ${navMainBottomHeight[0]}px);\n }\n }\n\n // with all navbar elements\n header${mapToSelector(fullIdent.split('-'))} ~ & {\n ${Map} {\n height: calc(${refHeight} - ${navFullHeight[0]}px);\n }\n }\n\n @media ${mq.semilarge} {\n // with main navbar element\n header${mapToSelector(mainIdent.split('-'))} ~ & {\n ${Map} {\n height: calc(${refHeight} - ${navMainHeight[1]}px);\n }\n }\n\n // with main and top navbar elements\n header${mapToSelector(mainTopIdent.split('-'))} ~ & {\n ${Map} {\n height: calc(${refHeight} - ${navMainTopHeight[1]}px);\n }\n }\n\n // with main and bottom navbar elements\n header${mapToSelector(mainBottomIdent.split('-'))} ~ & {\n ${Map} {\n height: calc(\n ${refHeight} - ${navMainBottomHeight[1]}px\n );\n }\n }\n\n // with all navbar elements\n header${mapToSelector(fullIdent.split('-'))} ~ & {\n ${Map} {\n height: calc(${refHeight} - ${navFullHeight[1]}px);\n }\n }\n }\n `;\n }}\n`;\n\nconst PoiMapSection = styled(Section)<{ isLarge?: boolean }>`\n position: relative;\n ${({ isLarge }) => isLarge && genHeightStyles()}\n\n header + & {\n ${withRange([0], 'padding-top')}\n ${withRange([0], 'margin-top')}\n }\n`;\n\nconst MapContainer = styled.div`\n position: relative;\n`;\n\nconst Map = styled.div<{ isLarge?: boolean }>`\n min-height: 360px;\n height: 360px;\n max-height: 1300px;\n z-index: 0;\n\n @media ${mq.medium} {\n height: 600px;\n min-height: 600px;\n }\n`;\n\nconst RequestGeolocationBtn = styled.button`\n background-color: transparent;\n border: none;\n padding: ${spacings.nudge}px;\n cursor: pointer;\n\n transition: transform 0.2s ease-in-out, opacity 0.2s ease-in-out;\n\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n opacity: 0.6;\n }\n }\n\n &:focus {\n outline: 2px solid ${({ theme }) => color(theme).primary.default};\n transform: scale(1.012);\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n }\n\n &:active {\n transform: scale(0.95);\n }\n\n & > * {\n width: 30px;\n height: 30px;\n }\n`;\n\nconst CardStage = styled.div`\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 10;\n\n display: flex;\n align-items: flex-end;\n justify-content: flex-end;\n\n pointer-events: all;\n background-color: rgba(255, 255, 255, 0.8);\n\n @media ${mq.medium} {\n position: absolute;\n background-color: transparent;\n padding: ${spacings.nudge * 2}px;\n padding-bottom: ${spacings.nudge * 3}px;\n\n pointer-events: none;\n }\n`;\n\nconst MapCardView = styled.div`\n max-height: 100%;\n width: 100%;\n padding: ${spacings.nudge * 2}px;\n overflow: auto;\n\n background: ${({ theme }) => color(theme).elementBg.light};\n box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.3);\n pointer-events: all;\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n\n & > * + * {\n margin-top: ${spacings.nudge * 3}px;\n }\n\n @media ${mq.medium} {\n max-width: 400px;\n }\n`;\n\nconst MapCardHeader = styled.header`\n display: flex;\n align-items: center;\n`;\n\nconst CloseBtn = styled.button`\n display: inline-block;\n border: none;\n background-color: transparent;\n cursor: pointer;\n margin-left: auto;\n padding: ${spacings.nudge}px;\n\n transition: transform 0.2s ease-in-out, opacity 0.2s ease-in-out;\n\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n opacity: 0.6;\n }\n }\n\n &:focus {\n outline: 2px solid ${({ theme }) => color(theme).primary.default};\n transform: scale(1.012);\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n }\n\n &:active {\n transform: scale(0.95);\n }\n`;\n\nconst Overlay = styled.div`\n position: absolute;\n top: ${spacings.nudge * 2}px;\n left: ${spacings.nudge * 2}px;\n width: 100%;\n\n display: flex;\n align-items: center;\n\n & > * + * {\n margin-left: ${spacings.nudge * 2}px;\n }\n`;\n\nconst MapCard: FC<{\n name?: string;\n facts?: string[];\n description?: string;\n infos?: Info[];\n\n action?: React.ReactNode;\n onClose?: () => void;\n customFact?: (props: { key: React.Key; name: string }) => React.ReactNode;\n customClose?: React.ReactNode;\n\n className?: string;\n}> = ({\n name,\n facts,\n description,\n infos,\n action,\n customFact,\n customClose,\n onClose,\n className,\n}) => {\n const { colors } = useLibTheme();\n\n return (\n <MapCardView className={className}>\n <MapCardHeader>\n {name && (\n <Copy type=\"copy-b\" size=\"big\">\n {name}\n </Copy>\n )}\n <CloseBtn onClick={onClose}>\n {customClose || <Cross iconColor={colors.text.default} />}\n </CloseBtn>\n </MapCardHeader>\n {isValidArray(facts, false) && (\n <POIFacts facts={facts} customFact={customFact} />\n )}\n {description && (\n <Copy type=\"copy\" size=\"small\" innerHTML={description} />\n )}\n {isValidArray(infos, false) && (\n <InfoList\n items={[\n {\n items: infos,\n },\n ]}\n />\n )}\n {action && action}\n </MapCardView>\n );\n};\n\nexport interface LocationIcon {\n url: string;\n size: [number, number];\n anchor: [number, number];\n\n sizeActive: [number, number];\n anchorActive: [number, number];\n}\n\nexport interface MapPOI {\n /** Unique ID */\n id: string;\n\n /** Latitude and Longitude of item position */\n position: [number, number];\n\n /** Marker icon settings */\n icon?: LocationIcon;\n\n /** POI name */\n name: string;\n\n /** POI short description text */\n description?: string;\n\n /** Array of POI facts */\n facts?: string[];\n\n /** Array of additional POI informations */\n infos?: Info[];\n\n /** Function to inject custom action node */\n action?: React.ReactNode;\n}\n\nexport interface PoiMapFilters {\n toggleLabel?: string;\n mobileSubmitLabel?: string;\n categoryFilter?: {\n label?: string;\n resetLabel?: string;\n };\n textFilter?: {\n placeholder?: string;\n icon?: (isInverted?: boolean) => React.ReactNode;\n submitIcon?: (isInverted?: boolean) => React.ReactNode;\n clearIcon?: (isInverted?: boolean) => React.ReactNode;\n };\n closeIcon?: (isInverted?: boolean) => React.ReactNode;\n filterIcon?: (isInverted?: boolean) => React.ReactNode;\n indicator?: (props: {\n isOpen: boolean;\n isDisabled?: boolean;\n }) => React.ReactNode;\n}\n\nconst PointOfInterestMap: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Size mode */\n size?: 'default' | 'large';\n\n /** Array of POI card settings */\n pois?: MapPOI[];\n\n /** Use geolocation for own position */\n showOwnPosition?: boolean;\n\n /** Map tile provider */\n provider?: string;\n\n /** Map attribution text (richtext) */\n attribution?: string;\n\n /** Initial center of the map */\n center?: [number, number];\n\n /** Initial map zoom */\n zoom?: number;\n\n /** Min map zoom */\n minZoom?: number;\n\n /** Max map zoom */\n maxZoom?: number;\n\n /** Zoom if map jumps to location */\n flyToZoom?: number;\n\n /** Initial location */\n initialPointOfInterest?: string;\n\n /** Show all markers on first load */\n allMarkersOnInit?: boolean;\n\n /** Restrict map to bounds of markers area */\n restrictToMarkersArea?: boolean;\n\n /** Map container padding for show all markers */\n fitBoundsPadding?: [number, number];\n\n /** Function to inject custom fact node into MapCard */\n customFact?: (props: { key: React.Key; name: string }) => React.ReactNode;\n\n /** Custom current position marker */\n currentPosMarker?: LocationIcon;\n\n /** Custom card close icon */\n customCardClose?: React.ReactNode;\n\n /** Custom icon for my location request button */\n customLocationRequest?: React.ReactNode;\n\n /** Initial POI filter states */\n initialPoiFilters?: FilterState;\n\n /** POI filter settings */\n poiFilters?: PoiMapFilters;\n customPoiFilters?: (props: {\n pois: MapPOI[];\n filters: FilterState;\n setFilters: React.Dispatch<React.SetStateAction<FilterState>>;\n settings?: PoiMapFilters;\n }) => React.ReactNode;\n}> = ({\n anchorId,\n size,\n pois,\n initialPointOfInterest = '',\n provider,\n attribution,\n center = [51.505, -0.09],\n zoom = 5,\n fitBoundsPadding,\n allMarkersOnInit = false,\n restrictToMarkersArea = true,\n showOwnPosition,\n flyToZoom,\n customFact,\n currentPosMarker,\n customCardClose,\n customLocationRequest,\n initialPoiFilters,\n poiFilters,\n customPoiFilters,\n}) => {\n const isLarge = size === 'large';\n const { colors, globals } = useLibTheme();\n\n const [activePoiId, setActivePoiId] = useState<string>(\n initialPointOfInterest || ''\n );\n const [isDirty, setIsDirty] = useState<boolean>(false);\n\n const [filters, setFilters] = useState<FilterState>(\n initialPoiFilters || {\n categoryFilter: [],\n textFilter: '',\n }\n );\n\n const categories = useMemo(() => {\n return pois?.reduce<string[]>((acc, poi) => {\n const newCategories = [...acc];\n\n for (const fact of poi.facts || []) {\n if (!newCategories.includes(fact)) {\n newCategories.push(fact);\n }\n }\n\n return newCategories;\n }, []);\n }, [pois]);\n\n const activePois = useMemo(() => {\n const matches =\n getFilterMatches<MapPOI>(\n filters?.textFilter || '',\n filters?.categoryFilter || [],\n pois || []\n ) || pois;\n\n return Array.from(matches).map((m) => m[1].item) as MapPOI[];\n }, [filters?.textFilter, filters?.categoryFilter, pois]);\n\n const activePOI = useMemo(() => {\n return activePois?.find((poi) => poi.id === activePoiId);\n }, [activePoiId, activePois]);\n\n const {\n isSupported: isGeolocationSupported,\n location,\n reset: resetGeolocation,\n // error,\n } = useGeolocation(true, false);\n\n const mapMarkers = useMemo(() => {\n const defaultMarker: LocationIcon = {\n size: [28, 28],\n anchor: [14, 28],\n sizeActive: [70, 70],\n anchorActive: [35, 70],\n url: getSVGData(<LocationPin />),\n };\n\n // marker of own position\n const defaultPosMarker: LocationIcon = {\n size: [24, 24],\n anchor: [12, 12],\n sizeActive: [24, 24],\n anchorActive: [12, 12],\n url: getSVGData(<CurrentLocation iconColor=\"#5383EC\" />),\n };\n\n const markers: LeafletMapMarker[] =\n activePois\n ?.filter((poi) => poi.id !== undefined)\n ?.map(({ id, position, icon }) => ({\n id,\n position,\n icon: icon || defaultMarker,\n isInteractive: true,\n })) || [];\n\n if (\n isGeolocationSupported &&\n location?.coords.latitude &&\n location?.coords.longitude\n ) {\n markers.push({\n id: 'my-current-position-123456789',\n position: [location.coords.latitude, location.coords.longitude],\n icon: currentPosMarker || defaultPosMarker,\n });\n }\n\n return markers;\n }, [\n currentPosMarker,\n isGeolocationSupported,\n location?.coords.latitude,\n location?.coords.longitude,\n activePois,\n ]);\n\n const {\n isLoaded,\n setContainer: setMapContainer,\n flyToActive,\n showAllMarkers,\n flyToPosition,\n getCurrentZoom,\n } = useLeafletMap({\n url: provider,\n attribution,\n center,\n zoom,\n activeMarkerId: activePoiId,\n markers: mapMarkers,\n fitBoundsPadding,\n restrictToMarkersArea,\n showZoomControls: true,\n zoomControlPosition: 'bottomleft',\n onMarkerClick: (markerId) => {\n setActivePoiId((prev) => {\n if (prev === markerId) {\n return '';\n }\n return markerId;\n });\n },\n });\n\n useEffect(() => {\n if (isLoaded && !isDirty) {\n if (allMarkersOnInit) showAllMarkers();\n } else {\n const currentZoom = getCurrentZoom();\n let zoom = flyToZoom;\n if (flyToZoom !== undefined && currentZoom > flyToZoom) {\n zoom = currentZoom;\n }\n\n flyToActive(zoom);\n }\n }, [\n activePoiId,\n allMarkersOnInit,\n flyToActive,\n flyToZoom,\n getCurrentZoom,\n initialPointOfInterest,\n isDirty,\n isLoaded,\n showAllMarkers,\n ]);\n\n useEffect(() => {\n if (!isDirty && activePoiId !== initialPointOfInterest) {\n setIsDirty(true);\n }\n }, [activePoiId, initialPointOfInterest, isDirty]);\n\n const handleLocationRequest = async () => {\n if (location?.coords?.latitude && location?.coords?.longitude) {\n const currentZoom = getCurrentZoom();\n let zoom = flyToZoom;\n if (flyToZoom !== undefined && currentZoom > flyToZoom) {\n zoom = currentZoom;\n }\n\n flyToPosition(\n [location.coords.latitude, location.coords.longitude],\n zoom\n );\n } else {\n try {\n const position = await resetGeolocation();\n if (position) showAllMarkers();\n } catch (err) {\n // console.log(err);\n }\n }\n };\n\n const filterName = globals.sections.poiFilterName;\n const factFiltername = globals.sections.poiFactFilterName;\n\n useEffect(() => {\n if (filters.textFilter) {\n setUrlParam(filterName, filters.textFilter);\n } else {\n deleteUrlParam(filterName);\n }\n\n if (isValidArray(filters.categoryFilter, false)) {\n setUrlParam(factFiltername, filters.categoryFilter.join(','));\n } else {\n deleteUrlParam(factFiltername);\n }\n }, [\n filterName,\n factFiltername,\n filters.textFilter,\n filters.categoryFilter,\n ]);\n\n useEffect(() => {\n setActivePoiId('');\n setIsDirty(false);\n }, [filters]);\n\n return (\n <PoiMapSection\n anchorId={anchorId}\n bgColor=\"image\"\n bgMode=\"full\"\n isLarge={isLarge}\n >\n <Wrapper clampWidth={isLarge ? 'large' : 'normal'}>\n <MapContainer>\n <Map ref={setMapContainer} isLarge={size === 'large'} />\n {(showOwnPosition || poiFilters) && (\n <Overlay>\n {showOwnPosition && (\n <RequestGeolocationBtn\n onClick={handleLocationRequest}\n >\n {customLocationRequest || (\n <MyLocation\n iconColor={colors.text.default}\n />\n )}\n </RequestGeolocationBtn>\n )}\n {poiFilters ? (\n customPoiFilters ? (\n customPoiFilters({\n filters,\n setFilters,\n pois: pois || [],\n settings: poiFilters,\n })\n ) : (\n <PoiPartials.PoiFilterBar\n value={filters}\n onChange={setFilters}\n textFilter={\n poiFilters?.textFilter || undefined\n }\n categoryFilter={\n poiFilters?.categoryFilter\n ? {\n ...poiFilters.categoryFilter,\n items: categories?.map(\n (cat) =>\n ({\n value: cat,\n label: cat,\n } || [])\n ),\n }\n : undefined\n }\n mobileSubmitLabel={\n poiFilters?.mobileSubmitLabel\n }\n closeIcon={poiFilters?.closeIcon}\n toggleLabel={poiFilters?.toggleLabel}\n filterIcon={poiFilters?.filterIcon}\n indicator={poiFilters?.indicator}\n />\n )\n ) : null}\n </Overlay>\n )}\n {activePOI && activePOI.name && (\n <CardStage\n onClick={(ev) => {\n if (ev.target !== ev.currentTarget) return;\n setActivePoiId('');\n }}\n >\n <MapCard\n {...activePOI}\n onClose={() => setActivePoiId('')}\n customFact={customFact}\n customClose={customCardClose}\n />\n </CardStage>\n )}\n </MapContainer>\n </Wrapper>\n </PoiMapSection>\n );\n};\n\nexport const PointOfInterestMapComponent = PointOfInterestMap;\nexport default withLibTheme(PointOfInterestMap);\n"],"names":["StyledImage","styled","Image","withConfig","displayName","componentId","templateObject_1","__makeTemplateObject","spacings","spacer","Facts","POIFacts","templateObject_2","PoiTitle","Heading","templateObject_3","nudge","PoiText","Copy","templateObject_4","PointOfInterestDetail$1","withLibTheme","_a","anchorId","image","title","intro","text","facts","infos","bgMode","customFact","colors","useLibTheme","isInverted","hasBg","hasInfos","useMemo","isValidArray","filter","info","items","React","createElement","Section","addSeperation","bgColor","sectionBg","dark","medium","light","mapToBgMode","Wrapper","addWhitespace","small","coverSpace","allowEdgeRadius","Grid","Row","gutter","semilarge","Col","span","size","type","innerHTML","InfoList","removeMatchIntersections","array","item","m","find","prioItem","id","filterPois","filterQuery","pois","prioList","poi","undefined","exactNameMatches","value","RegExp","test","name","poiExactNameFilter","push","apply","map","match","priority","nameMatches","preparedQuery","toLowerCase","replace","preparedName","poiSoftNameFilter","factMatches","regex","fact","preparedFact","poiFactFilter","infoMatches","preparedText","poiInfoFilter","descMatches","shortDescription","preparedDesc","poiDescriptionFilter","getFilterMatches","categoryFilters","searchMatches","Map","length","items_1","_i","set","items_2","_b","some","includes","matches_1","escapeRegExp","_c","has","PoiFilterBar","hasBorders","onChange","textFilter","categoryFilter","mobileSubmitLabel","closeIcon","toggleLabel","filterIcon","indicator","className","FilterBar","placeholder","icon","Magnifier","width","height","submitIcon","clearIcon","CrossBubble","label","resetLabel","Cross","Filter","POISection","Content","div","mq","large","PoiOverviewFilterBar","PoiPartials","theme","color","elementBg","globals","sections","edgeRadius","PointOfInterestOverview$1","initialPoiFilters","poiFilters","customPoiFilters","filterName","poiFilterName","factFiltername","poiFactFilterName","_d","useState","filters","setFilters","categories","reduce","acc","newCategories","__spreadArray","poiMatches","matches","Array","from","useEffect","setUrlParam","deleteUrlParam","join","settings","cat","sort","a","b","i","POICard","__assign","key","PoiMapSection","isLarge","css","mainIdent","genIdent","pageFlow","hasMain","mainTopIdent","hasTop","mainBottomIdent","hasBottom","fullIdent","navMainHeight","getNavHeight","getFullNavbarHeights","navMainTopHeight","navMainBottomHeight","navFullHeight","mapToSelector","idents","concat","refHeight","split","withRange","MapContainer","templateObject_5","RequestGeolocationBtn","button","primary","default","CardStage","templateObject_7","MapCardView","global","MapCardHeader","header","templateObject_9","CloseBtn","Overlay","templateObject_11","MapCard","description","action","customClose","onClose","onClick","iconColor","PointOfInterestMap$1","initialPointOfInterest","provider","attribution","center","zoom","fitBoundsPadding","_e","allMarkersOnInit","_f","restrictToMarkersArea","showOwnPosition","flyToZoom","currentPosMarker","customCardClose","customLocationRequest","_g","_h","activePoiId","setActivePoiId","_j","isDirty","setIsDirty","_k","activePois","activePOI","_l","useGeolocation","isGeolocationSupported","isSupported","location","resetGeolocation","mapMarkers","defaultMarker","anchor","sizeActive","anchorActive","url","getSVGData","getSVGDataImg","LocationPin","defaultPosMarker","CurrentLocation","markers","position","isInteractive","coords","latitude","longitude","_m","useLeafletMap","activeMarkerId","showZoomControls","zoomControlPosition","onMarkerClick","markerId","prev","isLoaded","setMapContainer","setContainer","flyToActive","showAllMarkers","flyToPosition","getCurrentZoom","currentZoom","zoom_1","handleLocationRequest","clampWidth","ref","__awaiter","zoom_2","sent","MyLocation","ev","target","currentTarget"],"mappings":"02CAeMA,EAAcC,EAAM,QAACC,SAAVC,WAAA,CAAAC,YAAA,qCAAAC,YAAA,eAAGJ,CAAaK,IAAAA,EAAAC,EAAAA,qBAAA,CAAA,sDAAA,gBAAA,CAAA,sDAEO,kBAAfC,EAAQA,SAACC,QAI5BC,EAAQT,EAAM,QAACU,YAAVR,WAAA,CAAAC,YAAA,+BAAAC,YAAA,eAAGJ,CAAgBW,IAAAA,EAAAL,uBAAA,CAAA,6BAAA,CAAA,gCAIxBM,EAAWZ,EAAM,QAACa,WAAVX,WAAA,CAAAC,YAAA,kCAAAC,YAAA,eAAGJ,CAAec,IAAAA,EAAAR,EAAAA,qBAAA,CAAA,gRAAA,gBAAA,CAAA,gRAWQ,kBAAD,EAAjBC,EAAQA,SAACQ,OAIzBC,EAAUhB,EAAM,QAACiB,QAAVf,WAAA,CAAAC,YAAA,iCAAAC,YAAA,eAAGJ,CAAYkB,IAAAA,EAAAZ,EAAAA,qBAAA,CAAA,6EAAA,gBAAA,CAAA,6EAIY,kBAAD,EAAjBC,EAAQA,SAACQ,OA2H/BI,EAAeC,EAAYA,cAxFtB,SAACC,OACFC,EAAQD,EAAAC,SACRC,EAAKF,EAAAE,MACLC,EAAKH,EAAAG,MACLC,EAAKJ,EAAAI,MACLC,SACAC,EAAKN,EAAAM,MACLC,EAAKP,EAAAO,MACLC,EAAMR,EAAAQ,OACNC,EAAUT,EAAAS,WAEFC,EAAWC,uBACbC,EAAwB,aAAXJ,EACbK,EAAmB,SAAXL,EACRM,EAAWC,EAAAA,SAAQ,WACdC,OAAAA,eACHT,MAAAA,OAAK,EAALA,EAAOU,QAAO,SAACC,GAAS,OAAAF,eAAaE,EAAKC,OAAO,OACjD,KAEL,CAACZ,IAEJ,OACIa,EAAA,QAAAC,cAACC,UAAO,CACJC,eAAa,EACbtB,SAAUA,EACVuB,QACIZ,EACMF,EAAOe,UAAUC,KACjBb,EACAH,EAAOe,UAAUE,OACjBjB,EAAOe,UAAUG,MAE3BpB,OAAQqB,EAAAA,YAAYrB,GAAQ,IAE5BY,EAAC,QAAAC,cAAAS,WAAQC,eAAa,IACjB7B,MAAAA,OAAK,EAALA,EAAO8B,QACJZ,EAAC,QAAAC,cAAA3C,gBACOwB,EAAK,CACT+B,YACA,EAAAC,mBACAtB,WAAYA,KAGpBQ,EAAC,QAAAC,cAAAc,EAAAA,KAAKC,IAAG,CACLC,OAAyB,EAAjBnD,EAAAA,SAASQ,MACjB4C,UAAW,CAAED,OAAQnD,EAAQA,SAACC,SAE9BiC,UAACC,cAAAc,EAAIA,KAACI,IAAG,CAACD,UAAW,CAAEE,KAAM1B,EAAW,IAAM,EAAI,IAC7CX,GACGiB,EAAAA,QAACC,cAAA9B,GAASkD,KAAK,YAAY7B,WAAYA,GAClCT,GAGRa,EAAAA,aAAaV,GAAO,IACjBc,EAAC,QAAAC,cAAAjC,EACG,CAAAwB,WAAYA,EACZN,MAAOA,EACPG,WAAYA,IAGnBL,GACGgB,UAACC,cAAA1B,GACG8C,KAAK,SACLC,KAAK,SACL9B,WAAYA,EACZ+B,UAAWvC,IAGlBC,GACGe,UAAAC,cAAC1B,EACG,CAAA8C,KAAK,SACL7B,WAAYA,EACZ+B,UAAWtC,KAItBS,GACGM,EAAAA,QAACC,cAAAc,EAAAA,KAAKI,IAAG,CAACD,UAAW,CAAEE,KAAM,IAAM,IAC/BpB,EAAA,QAAAC,cAACuB,WAAS,CAAAhC,WAAYA,EAAYO,MAAOZ,WCjF/DsC,EAA2B,SAC7BC,EACAC,GAEA,OAAKA,EACEA,MAAAA,OAAA,EAAAA,EAAM9B,QACT,SAAC+B,GAAM,OAACF,EAAMG,MAAK,SAACC,GAAaA,OAAAA,EAASH,KAAKI,KAAOH,EAAEG,SAF1C,IAMhBC,EAAa,SAAoBC,EAAqBC,GAClDC,IAAAA,EAA0B,GAE5B,IAACvC,EAAYA,aACTsC,MAAAA,OAAI,EAAJA,EAAMrC,QAAO,SAACuC,GAAQ,YAAWC,IAAXD,EAAIL,OAC1B,GAGJ,OAAOI,EAILG,IAAAA,EAAmBJ,MAAAA,OAAA,EAAAA,EAAMrC,OAnF/B,SAAoBoC,GACpB,OAAA,SAACM,GAEG,OADc,IAAIC,OAAOP,GACZQ,KAAKF,EAAMG,OAgFUC,CAAmBV,IACrDrC,EAAYA,aAAC0C,GAAkB,IAC/BH,EAASS,KAATC,MAAAV,EACOG,EAAiBQ,KAAI,SAACC,GAAW,MAAA,CAChCpB,KAAMoB,EACNC,SAAU,OAMhBC,IAAAA,EAAcxB,EAChBU,EACAD,MAAAA,OAAI,EAAJA,EAAMrC,OAzFV,SAAoBoC,GACpB,OAAA,SAACM,GACSW,IAAAA,EAAgBjB,EAAYkB,cAAcC,QAAQ,MAAO,IACzDC,EAAed,EAAMG,KAAKS,cAAcC,QAAQ,MAAO,IAG7D,OADc,IAAIZ,OAAOU,GACZT,KAAKY,IAmFLC,CAAkBrB,KAG/BrC,EAAYA,aAACqD,GAAa,IAC1Bd,EAASS,KAATC,MAAAV,EACOc,EAAYH,KAAI,SAACC,GAAW,MAAA,CAC3BpB,KAAMoB,EACNC,SAAU,OAMhBO,IAAAA,EAAc9B,EAChBU,EACAD,MAAAA,OAAI,EAAJA,EAAMrC,OA9FV,SAACoC,GACD,OAAA,SAAoBM,GACZ,IAAC3C,EAAYA,aAAC2C,EAAMrD,OAAO,GAAQ,OAAO,EAExCgE,IAAAA,EAAgBjB,EAAYkB,cAAcC,QAAQ,MAAO,IACzDI,EAAQ,IAAIhB,OAAOU,GAOlB,QALQX,EAAMrD,MAAM2C,MAAK,SAAC4B,GACvBC,IAAAA,EAAeD,EAAKN,cAAcC,QAAQ,MAAO,IACvD,OAAOI,EAAMf,KAAKiB,OAqFTC,CAAc1B,KAG3BrC,EAAYA,aAAC2D,GAAa,IAC1BpB,EAASS,KAATC,MAAAV,EACOoB,EAAYT,KAAI,SAACC,GAAW,MAAA,CAC3BpB,KAAMoB,EACNC,SAAU,OAMhBY,IAAAA,EAAcnC,EAChBU,EACAD,MAAAA,OAAI,EAAJA,EAAMrC,OA7FV,SAACoC,GACD,OAAA,SAAoBM,GACZ,IAAC3C,EAAAA,aAAa2C,MAAAA,OAAA,EAAAA,EAAOpD,OAAO,GAAQ,OAAO,EAEzC+D,IAAAA,EAAgBjB,EAAYkB,cAAcC,QAAQ,MAAO,IACzDI,EAAQ,IAAIhB,OAAOU,GAElB,QAAEX,EAAMpD,MAAM0C,MAAK,SAAC/B,GACvB,IAAKA,EAAKb,KAAM,OAAO,EACvB,IAAM4E,EAAe/D,EAAKb,KAAKkE,cAAcC,QAAQ,MAAO,IAC5D,OAAOI,EAAMf,KAAKoB,OAmFTC,CAAc7B,KAG3BrC,EAAYA,aAACgE,GAAa,IAC1BzB,EAASS,KAATC,MAAAV,EACOyB,EAAYd,KAAI,SAACC,GAAW,MAAA,CAC3BpB,KAAMoB,EACNC,SAAU,OAMhBe,IAAAA,EAActC,EAChBU,EACAD,MAAAA,OAAI,EAAJA,EAAMrC,OA7FV,SAACoC,GACD,OAAA,SAAoBM,GAChB,IAAKA,EAAMyB,iBAAkB,OAAO,EAE9Bd,IAAAA,EAAgBjB,EAAYkB,cAAcC,QAAQ,MAAO,IACzDa,EAAe1B,EAAMyB,iBACtBb,cACAC,QAAQ,MAAO,IAGpB,OADc,IAAIZ,OAAOU,GACZT,KAAKwB,IAmFLC,CAAqBjC,KAYtC,OATIrC,EAAYA,aAACmE,GAAa,IAC1B5B,EAASS,KAATC,MAAAV,EACO4B,EAAYjB,KAAI,SAACC,GAAW,MAAA,CAC3BpB,KAAMoB,EACNC,SAAU,OAKfb,GAGEgC,EAAmB,SAC5BlC,EACAmC,EACArE,SAEMsE,EAA0C,IAAIC,IAEpD,IAAKrC,IAAgBmC,EAAgBG,OACjC,IAAmB,QAAAC,EAAAzE,EAAA0E,EAAKD,EAAAD,OAALE,IAAO,CAArB,IAAM9C,EAAI6C,EAAAC,GACXJ,EAAcK,IAAI/C,EAAKI,GAAI,CACvBJ,KAAIA,EACJqB,SAAU,IAKtB,IAAmB,QAAA2B,EAAA5E,EAAA6E,EAAKD,EAAAJ,OAALK,IAAO,UAClBhG,GADG+C,EAAIgD,EAAAC,IACF1F,4BAAO2F,MAAK,SAACpB,GAAS,OAAAW,EAAgBU,SAASrB,QACpDY,EAAcK,IAAI/C,EAAKI,GAAI,CACvBJ,KAAIA,EACJqB,SAAU,IAUtB,IAJA,QAIoB+B,EAJJ9C,EACVD,EAAWgD,EAAYA,aAAC/C,GAAclC,GAAS,IAC/C,GAEckF,EAAOF,EAAAR,OAAPU,IAAS,CAAxB,IAAMlC,EAAKgC,EAAAE,GACRZ,EAAca,IAAInC,EAAMpB,KAAKI,KACjCsC,EAAcK,IAAI3B,EAAMpB,KAAKI,GAAIgB,GAGrC,OAAOsB,GCvMLc,EAEF,SAACvG,GACD,IAAAwG,EAAUxG,EAAAwG,WACV7C,EAAK3D,EAAA2D,MACL8C,EAAQzG,EAAAyG,SACRC,EAAU1G,EAAA0G,WACVC,EAAc3G,EAAA2G,eACdC,EAAiB5G,EAAA4G,kBACjBC,EAAS7G,EAAA6G,UACTC,EAAW9G,EAAA8G,YACXC,EAAU/G,EAAA+G,WACVC,cACApG,EAAUZ,EAAAY,WACVqG,EAASjH,EAAAiH,UAET,OACI7F,wBAAC8F,YAAS,CACNtG,WAAYA,EACZ4F,WAAYA,EACZ7C,MAAOA,EACP8C,SAAUA,EACVC,WACIA,EACM,CACIS,YAAaT,EAAWS,aAAe,YACvCC,KAAMV,EAAWU,KACXV,EAAWU,KACX,WAAM,OAAAhG,EAAA,QAAAC,cAACgG,YAAU,CAAAC,MAAO,GAAIC,OAAQ,MAC1CC,WAAYd,EAAWc,WACjBd,EAAWc,WACX,WAAM,OAAA,MACZC,UAAWf,EAAWe,UAChBf,EAAWe,UACX,WAAM,OAAArG,wBAACsG,EAADA,YAAY,aAE5BjE,EAEVkD,eACIA,EACM,CACIgB,MAAOhB,EAAegB,OAAS,aAC/BxG,MAAOwF,EAAexF,OAAS,GAC/ByG,WACIjB,EAAeiB,YAAc,wBAErCnE,EAEVmD,kBAAmBA,GAAqB,gBACxCC,UAAWA,GAAwB,WAAM,OAAAzF,UAAAC,cAACwG,EAADA,MAAM,OAC/Cf,YAAaA,GAAe,kBAC5BC,WAAYA,GAA0B,WAAM,OAAA3F,UAAAC,cAACyG,EAADA,OAAO,OACnDd,UAAWA,EACXC,UAAWA,sDC9CjBc,EAAapJ,EAAM,QAAC2C,WAAVzC,WAAA,CAAAC,YAAA,sCAAAC,YAAA,eAAGJ,CAAeK,IAAAA,EAAAC,uBAAA,CAAA,8BAAA,CAAA,iCAI5B+I,EAAUrJ,EAAAA,QAAOsJ,IAAVpJ,WAAA,CAAAC,YAAA,mCAAAC,YAAA,eAAGJ,CAAUW,IAAAA,EAAAL,EAAAA,qBAAA,CAAA,0CAAA,4BAAA,oDAAA,2BAAA,CAAA,0CAEc,4BAGnB,oDAEuB,6BALL,EAAjBC,EAAQA,SAACQ,MAGlBwI,EAAEA,GAACC,MAE2B,EAAjBjJ,EAAAA,SAASQ,OAK7B0I,EAAuBzJ,EAAM,QAAC0J,GAAVxJ,WAAA,CAAAC,YAAA,gDAAAC,YAAA,eAAGJ,CAAgCc,IAAAA,EAAAR,EAAAA,qBAAA,CAAA,kHAAA,yBAAA,yDAAA,4BAAA,sCAAA,CAAA,kHAOhB,yBACwB,yDAG1B,4BAGrB,yCAVZ,SAACe,OAAEsI,EAAKtI,EAAAsI,MACN,OADkBtI,EAAAY,WAEZ2H,EAAAA,UAAMD,GAAOE,UAAU5G,MACvB2G,EAAAA,UAAMD,GAAOE,UAAU9G,QACpB,SAAC1B,GAAc,OAAPA,EAAAsI,MAAaG,QAAQC,SAASC,aAGjB,EAAjBzJ,EAAQA,SAACQ,MAGrBwI,EAAEA,GAACvG,QA4LhBiH,EAAe7I,EAAYA,cAtItB,SAACC,SACFC,EAAQD,EAAAC,SACRO,EAAMR,EAAAQ,OACN8C,EAAItD,EAAAsD,KACJuF,sBACAC,EAAU9I,EAAA8I,WACVC,EAAgB/I,EAAA+I,iBAEV1C,EAAsB1F,EAAAA,cAApBD,EAAM2F,EAAA3F,OAAE+H,EAAOpC,EAAAoC,QACjBO,EAAaP,EAAQC,SAASO,cAC9BC,EAAiBT,EAAQC,SAASS,kBAElCvI,EAAwB,aAAXJ,EACbK,EAAmB,SAAXL,EAER4I,EAAwBC,EAAQA,SAClCR,GAAqB,CACjBlC,eAAgB,GAChBD,WAAY,KAHb4C,EAAOF,EAAA,GAAEG,OAOVC,EAAazI,EAAAA,SAAQ,WAChBuC,OAAAA,MAAAA,OAAA,EAAAA,EAAMmG,QAAiB,SAACC,EAAKlG,GAGb,IAFbmG,IAAAA,EAAaC,EAAAA,cAAA,GAAOF,GAAG,GAEK7D,EAAA,EAAf7F,EAAAwD,EAAIlD,OAAS,GAAbuF,EAAA7F,EAAA2F,OAAAE,IAAiB,CAA/B,IAAMhB,EAAI7E,EAAA6F,GACN8D,EAAczD,SAASrB,IACxB8E,EAAc3F,KAAKa,GAI3B,OAAO8E,IACR,MACJ,CAACrG,IAEEuG,EAAa9I,EAAAA,SAAQ,WACjB+I,IAAAA,EACFvE,GACI+D,MAAAA,OAAO,EAAPA,EAAS5C,aAAc,IACvB4C,MAAAA,OAAO,EAAPA,EAAS3C,iBAAkB,GAC3BrD,GAAQ,KACPA,EAEFyG,OAAAA,MAAMC,KAAKF,GAAS5F,KAAI,SAAClB,GAAMA,OAAAA,EAAE,QACzC,CAACsG,MAAAA,OAAA,EAAAA,EAAS5C,WAAY4C,MAAAA,SAAAA,EAAS3C,eAAgBrD,IAqBlD,OAnBA2G,EAAAA,WAAU,WACFX,EAAQ5C,WACRwD,EAAAA,YAAYlB,EAAYM,EAAQ5C,YAEhCyD,EAAcA,eAACnB,GAGfhI,eAAasI,EAAQ3C,gBAAgB,GACrCuD,EAAWA,YAAChB,EAAgBI,EAAQ3C,eAAeyD,KAAK,MAExDD,EAAcA,eAACjB,KAEpB,CACCF,EACAE,EACAI,EAAQ5C,WACR4C,EAAQ3C,iBAIRvF,EAAA,QAAAC,cAAC0G,EAAU,CACPxG,eAAa,EACbtB,SAAUA,EACVuB,QACIZ,EACMF,EAAOe,UAAUC,KACjBb,EACAH,EAAOe,UAAUE,OACjBjB,EAAOe,UAAUG,MAE3BpB,OAAQqB,EAAAA,YAAYrB,GAAQ,IAE5BY,EAAC,QAAAC,cAAAS,WAAQC,eAAa,GACjB+G,EACGC,EACIA,MAAAA,OAAgB,EAAhBA,EAAmB,CACfO,QAAOA,EACPC,WAAUA,EACVjG,KAAMA,GAAQ,GACd+G,SAAUvB,IAGd1H,EAAAA,QAAAC,cAAC+G,EACG,CAAA5B,YACA,EAAA7C,MAAO2F,EACP7C,SAAU8C,EACV7C,YAAYoC,MAAAA,OAAU,EAAVA,EAAYpC,kBAAcjD,EACtCkD,gBACImC,MAAAA,OAAA,EAAAA,EAAYnC,yCAECmC,EAAWnC,gBAAc,CAC5BxF,MAAOqI,MAAAA,SAAAA,EAAYtF,KACf,SAACoG,GACI,MAAA,CACG3G,MAAO2G,EACP3C,MAAO2C,IACN,aAGjB7G,EAEVmD,kBAAmBkC,MAAAA,OAAU,EAAVA,EAAYlC,kBAC/BC,UAAWiC,MAAAA,OAAA,EAAAA,EAAYjC,UACvBC,YAAagC,MAAAA,OAAU,EAAVA,EAAYhC,YACzBC,WAAY+B,MAAAA,OAAU,EAAVA,EAAY/B,WACxBC,UAAW8B,MAAAA,OAAA,EAAAA,EAAY9B,UACvBpG,WAAYA,IAGpB,KACJQ,UAAAC,cAAC2G,EAAO,KAEyC,QAD5ChC,EAAA6D,MAAAA,OAAA,EAAAA,EACKU,MAAK,SAACC,EAAGC,GAAM,OAAAD,EAAEpG,SAAWqG,EAAErG,mBAAS,IAAA4B,OAAA,EAAAA,EACvC9B,KAAI,SAACV,EAAKkH,GAAM,OACdtJ,UAAAC,cAACsJ,EAADA,QAAQC,WAAA,CACJC,IAAKH,GACDlH,EAAIT,KAAI,CACZnC,WAAYA,cC9EtCkK,EAAgBnM,EAAM,QAAC2C,WAAVzC,WAAA,CAAAC,YAAA,oCAAAC,YAAA,gBAAGJ,CAAsCc,IAAAA,EAAAR,EAAAA,qBAAA,CAAA,kCAAA,iCAAA,aAAA,aAAA,CAAA,kCAET,iCAGZ,aACD,gBAJhC,SAACe,GAAgB+K,OAAP/K,EAAA+K,SAhHcC,EAAGA,IAAA1L,IAAAA,EAAAL,EAAAA,qBAAA,CAAA,gFAAA,MAAA,CAAA,gFA2G5B,SAzGC,SAACe,GAAE,IAAAsI,EAAKtI,EAAAsI,MAEA2C,EAAYC,EAAAA,oBAAS,CACvBC,SAAU,gBACVC,SAAS,IAIPC,EAAeH,EAAAA,oBAAS,CAC1BC,SAAU,gBACVC,SAAS,EACTE,QAAQ,IAINC,EAAkBL,EAAAA,oBAAS,CAC7BC,SAAU,gBACVC,SAAS,EACTI,WAAW,IAITC,EAAYP,EAAAA,oBAAS,CACvBC,SAAU,gBACVG,QAAQ,EACRF,SAAS,EACTI,WAAW,IAGTE,EAAgBC,EAAYC,qBAACtD,EAAO2C,GAAW9C,MAC/C0D,EAAmBF,EAAYC,qBAACtD,EAAO+C,GAAclD,MACrD2D,EAAsBH,EAAYC,qBAACtD,EAAOiD,GAAiBpD,MAC3D4D,EAAgBJ,EAAYC,qBAACtD,EAAOmD,GAAWtD,MAE/C6D,EAAgB,SAACC,GACnB,OAAOA,EAAO/H,KAAI,SAACf,GAAO,MAAA,wBAAA+I,OAAwB/I,EAAM,SAAEiH,KAAK,KAG7D+B,EAAY,QAElB,OAAOnB,EAAGA,IAAAhM,IAAAA,EAAAC,EAAAA,qBAAA,CAAA,iBAAA,+BAAA,kFAAA,2BAAA,wCAAA,MAAA,iHAAA,2BAAA,wCAAA,MAAA,oHAAA,2BAAA,wCAAA,MAAA,wGAAA,2BAAA,wCAAA,MAAA,gEAAA,0EAAA,+BAAA,4CAAA,MAAA,iIAAA,+BAAA,4CAAA,MAAA,oIAAA,+BAAA,0EAAA,MAAA,kJAAA,+BAAA,4CAAA,MAAA,2EAAA,CAAA,iBACD,+BACkB,kFAIoB,2BAClC,wCACuB,MAAsB,iHAKR,2BACrC,wCACuB,MAAyB,oHAKR,2BACxC,wCACuB,MAA4B,wGAKjB,2BAClC,wCACuB,MAAsB,gEAIjC,0EAE0B,+BAClC,4CACuB,MAAsB,iIAKR,+BACrC,4CACuB,MAAyB,oIAKR,+BACxC,0EAEc,MAA4B,kJAMR,+BAClC,4CACuB,MAAsB,6EA3DxDyG,GACYyG,EAINH,EAAcf,EAAUmB,MAAM,MAChC1G,GACiByG,EAAeT,EAAc,GAK5CM,EAAcX,EAAae,MAAM,MACnC1G,GACiByG,EAAeN,EAAiB,GAK/CG,EAAcT,EAAgBa,MAAM,MACtC1G,GACiByG,EAAeL,EAAoB,GAKlDE,EAAcP,EAAUW,MAAM,MAChC1G,GACiByG,EAAeJ,EAAc,GAI3C7D,EAAAA,GAAG5F,UAEA0J,EAAcf,EAAUmB,MAAM,MAChC1G,GACiByG,EAAeT,EAAc,GAK5CM,EAAcX,EAAae,MAAM,MACnC1G,GACiByG,EAAeN,EAAiB,GAK/CG,EAAcT,EAAgBa,MAAM,MACtC1G,GAEQyG,EAAeL,EAAoB,GAMzCE,EAAcP,EAAUW,MAAM,MAChC1G,GACiByG,EAAeJ,EAAc,SAa1DM,EAASA,UAAC,CAAC,GAAI,eACfA,EAASA,UAAC,CAAC,GAAI,eAInBC,GAAe3N,EAAAA,QAAOsJ,IAAVpJ,WAAA,CAAAC,YAAA,mCAAAC,YAAA,gBAAGJ,CAAUkB,IAAAA,EAAAZ,uBAAA,CAAA,+BAAA,CAAA,kCAIzByG,GAAM/G,EAAAA,QAAOsJ,IAAVpJ,WAAA,CAAAC,YAAA,0BAAAC,YAAA,gBAAGJ,CAAiC4N,IAAAA,EAAAtN,EAAAA,qBAAA,CAAA,wGAAA,mEAAA,CAAA,wGAMvB,qEAATiJ,EAAEA,GAACvG,QAMV6K,GAAwB7N,EAAAA,QAAO8N,OAAV5N,WAAA,CAAAC,YAAA,4CAAAC,YAAA,gBAAGJ,gmBAAa,yEAGd,sQAY2C,mPAZzDO,EAAAA,SAASQ,OAYK,SAACM,GAAE,IAAAsI,EAAKtI,EAAAsI,MAAO,OAAAC,YAAMD,GAAOoE,QAAQC,WAkB3DC,GAAYjO,EAAAA,QAAOsJ,IAAVpJ,WAAA,CAAAC,YAAA,gCAAAC,YAAA,gBAAGJ,CAAUkO,IAAAA,EAAA5N,EAAAA,qBAAA,CAAA,mRAAA,6FAAA,gCAAA,iDAAA,CAAA,mRAeN,6FAGe,gCACO,mDAJ/BiJ,EAAEA,GAACvG,OAGoB,EAAjBzC,EAAAA,SAASQ,MACe,EAAjBR,EAAAA,SAASQ,OAM7BoN,GAAcnO,EAAAA,QAAOsJ,IAAVpJ,WAAA,CAAAC,YAAA,kCAAAC,YAAA,gBAAGJ,iWAAU,2DAGG,+CAG4B,oGAGQ,6CAG7B,4BAGlB,4CAZU,EAAjBO,WAASQ,OAGN,SAACM,GAAE,IAAAsI,EAAKtI,EAAAsI,MAAO,OAAAC,YAAMD,GAAOE,UAAU5G,SAGnC,SAAC5B,GAAE,IAAAsI,EAAKtI,EAAAsI,MAAO,OAAAyE,aAAOzE,GAAOI,SAASC,aAGpB,EAAjBzJ,EAAQA,SAACQ,MAGlBwI,EAAEA,GAACvG,QAKVqL,GAAgBrO,EAAAA,QAAOsO,OAAVpO,WAAA,CAAAC,YAAA,oCAAAC,YAAA,gBAAGJ,CAAauO,IAAAA,EAAAjO,uBAAA,CAAA,oDAAA,CAAA,uDAK7BkO,GAAWxO,EAAAA,QAAO8N,OAAV5N,WAAA,CAAAC,YAAA,+BAAAC,YAAA,gBAAGJ,ilBAAa,mJAMD,gPAW2C,gLAXzDO,EAAAA,SAASQ,OAWK,SAACM,GAAE,IAAAsI,EAAKtI,EAAAsI,MAAO,OAAAC,YAAMD,GAAOoE,QAAQC,WAa3DS,GAAUzO,EAAAA,QAAOsJ,IAAVpJ,WAAA,CAAAC,YAAA,8BAAAC,YAAA,gBAAGJ,CAAU0O,IAAAA,EAAApO,EAAAA,qBAAA,CAAA,uCAAA,kBAAA,kHAAA,gBAAA,CAAA,uCAEG,kBACC,kHAOW,kBARb,EAAjBC,WAASQ,MACS,EAAjBR,EAAAA,SAASQ,MAOmB,EAAjBR,EAAAA,SAASQ,OAI1B4N,GAYD,SAACtN,OACF8D,EAAI9D,EAAA8D,KACJxD,EAAKN,EAAAM,MACLiN,EAAWvN,EAAAuN,YACXhN,EAAKP,EAAAO,MACLiN,WACA/M,EAAUT,EAAAS,WACVgN,EAAWzN,EAAAyN,YACXC,EAAO1N,EAAA0N,QACPzG,EAASjH,EAAAiH,UAEDvG,EAAWC,uBAEnB,OACIS,EAAC,QAAAC,cAAAyL,GAAY,CAAA7F,UAAWA,GACpB7F,EAAA,QAAAC,cAAC2L,GAAa,KACTlJ,GACG1C,EAAC,QAAAC,cAAAzB,QAAK8C,KAAK,SAASD,KAAK,OACpBqB,GAGT1C,UAACC,cAAA8L,IAASQ,QAASD,GACdD,GAAerM,EAAAA,QAACC,cAAAwG,SAAM+F,UAAWlN,EAAOL,KAAKsM,YAGrD3L,EAAAA,aAAaV,GAAO,IACjBc,EAAC,QAAAC,cAAAhC,WAAS,CAAAiB,MAAOA,EAAOG,WAAYA,IAEvC8M,GACGnM,UAAAC,cAACzB,EAAAA,KAAI,CAAC8C,KAAK,OAAOD,KAAK,QAAQE,UAAW4K,IAE7CvM,EAAYA,aAACT,GAAO,IACjBa,EAAC,QAAAC,cAAAuB,WACG,CAAAzB,MAAO,CACH,CACIA,MAAOZ,MAKtBiN,GAAUA,IA6bvBK,GAAe9N,EAAYA,cA3TtB,SAACC,GACF,IAAAC,aACAwC,EAAIzC,EAAAyC,KACJa,EAAItD,EAAAsD,KACJ0C,EAA2BhG,EAAA8N,uBAA3BA,OAAyB,IAAA9H,EAAA,KACzB+H,aACAC,EAAWhO,EAAAgO,YACX3H,WAAA4H,aAAS,CAAC,QAAS,KAAK5H,EACxB+C,EAAQpJ,EAAAkO,KAARA,OAAO,IAAA9E,EAAA,IACP+E,EAAgBnO,EAAAmO,iBAChBC,qBAAAC,OAAmB,IAAAD,KACnBE,EAAAtO,EAAAuO,sBAAAA,cAA4BD,EAC5BE,EAAexO,EAAAwO,gBACfC,EAASzO,EAAAyO,UACThO,eACAiO,qBACAC,oBACAC,EAAqB5O,EAAA4O,sBACrB/F,EAAiB7I,EAAA6I,kBACjBC,EAAU9I,EAAA8I,WACVC,EAAgB/I,EAAA+I,iBAEVgC,EAAmB,UAATtI,EACVoM,EAAsBlO,EAAAA,cAApBD,EAAMmO,EAAAnO,OAAE+H,EAAOoG,EAAApG,QAEjBqG,EAAgCzF,EAAAA,SAClCyE,GAA0B,IADvBiB,EAAWD,EAAA,GAAEE,OAGdC,EAAwB5F,EAAQA,UAAU,GAAzC6F,EAAOD,EAAA,GAAEE,EAAUF,EAAA,GAEpBG,EAAwB/F,EAAQA,SAClCR,GAAqB,CACjBlC,eAAgB,GAChBD,WAAY,KAHb4C,EAAO8F,EAAA,GAAE7F,OAOVC,EAAazI,EAAAA,SAAQ,WAChBuC,OAAAA,MAAAA,OAAA,EAAAA,EAAMmG,QAAiB,SAACC,EAAKlG,GAGb,IAFbmG,IAAAA,EAAaC,EAAAA,cAAA,GAAOF,GAAG,GAEK7D,EAAA,EAAf7F,EAAAwD,EAAIlD,OAAS,GAAbuF,EAAA7F,EAAA2F,OAAAE,IAAiB,CAA/B,IAAMhB,EAAI7E,EAAA6F,GACN8D,EAAczD,SAASrB,IACxB8E,EAAc3F,KAAKa,GAI3B,OAAO8E,IACR,MACJ,CAACrG,IAEE+L,EAAatO,EAAAA,SAAQ,WACjB+I,IAAAA,EACFvE,GACI+D,MAAAA,OAAO,EAAPA,EAAS5C,aAAc,IACvB4C,MAAAA,OAAO,EAAPA,EAAS3C,iBAAkB,GAC3BrD,GAAQ,KACPA,EAEFyG,OAAAA,MAAMC,KAAKF,GAAS5F,KAAI,SAAClB,GAAM,OAAAA,EAAE,GAAGD,UAC5C,CAACuG,MAAAA,OAAA,EAAAA,EAAS5C,WAAY4C,MAAAA,SAAAA,EAAS3C,eAAgBrD,IAE5CgM,GAAYvO,EAAAA,SAAQ,WACtB,OAAOsO,MAAAA,OAAU,EAAVA,EAAYpM,MAAK,SAACO,GAAQ,OAAAA,EAAIL,KAAO4L,OAC7C,CAACA,EAAaM,IAEXE,GAKFC,EAAAA,gBAAe,GAAM,GAJRC,GAAsBF,GAAAG,YACnCC,GAAQJ,GAAAI,SACDC,YAILC,GAAa9O,EAAAA,SAAQ,iBACjB+O,EAA8B,CAChCrN,KAAM,CAAC,GAAI,IACXsN,OAAQ,CAAC,GAAI,IACbC,WAAY,CAAC,GAAI,IACjBC,aAAc,CAAC,GAAI,IACnBC,IAAKC,EAAUC,cAAChP,EAAC,QAAAC,cAAAgP,EAADA,oBAIdC,EAAiC,CACnC7N,KAAM,CAAC,GAAI,IACXsN,OAAQ,CAAC,GAAI,IACbC,WAAY,CAAC,GAAI,IACjBC,aAAc,CAAC,GAAI,IACnBC,IAAKC,EAAUC,cAAChP,UAACC,cAAAkP,EAAAA,iBAAgB3C,UAAU,cAGzC4C,GAGI,QAFNxQ,EAAAqP,MAAAA,OAAU,EAAVA,EACMpO,QAAO,SAACuC,GAAQ,YAAWC,IAAXD,EAAIL,aACpB,IAAAnD,OAAA,EAAAA,EAAAkE,KAAI,SAAClE,GAA4B,MAAA,CAC/BmD,QACAsN,SAFiBzQ,EAAAyQ,SAGjBrJ,KAHuBpH,EAAAoH,MAGT0I,EACdY,eAAe,QACZ,GAcf,OAXIjB,KACAE,MAAAA,QAAA,EAAAA,GAAUgB,OAAOC,YACjBjB,MAAAA,QAAA,EAAAA,GAAUgB,OAAOE,YAEjBL,EAAQxM,KAAK,CACTb,GAAI,gCACJsN,SAAU,CAACd,GAASgB,OAAOC,SAAUjB,GAASgB,OAAOE,WACrDzJ,KAAMsH,GAAoB4B,IAI3BE,IACR,CACC9B,EACAe,GACAE,MAAAA,QAAQ,EAARA,GAAUgB,OAAOC,SACjBjB,MAAAA,QAAQ,EAARA,GAAUgB,OAAOE,UACjBxB,IAGEyB,GAOFC,EAAAA,cAAc,CACdb,IAAKnC,EACLC,YAAWA,EACXC,OAAMA,EACNC,KAAIA,EACJ8C,eAAgBjC,EAChByB,QAASX,GACT1B,iBAAgBA,EAChBI,sBAAqBA,EACrB0C,kBAAkB,EAClBC,oBAAqB,aACrBC,cAAe,SAACC,GACZpC,GAAe,SAACqC,GACRA,OAAAA,IAASD,EACF,GAEJA,QAtBfE,GAAQR,GAAAQ,SACMC,GAAeT,GAAAU,aAC7BC,GAAWX,GAAAW,YACXC,qBACAC,oBACAC,qBAsBJ3H,EAAAA,WAAU,WACN,GAAIqH,KAAapC,EACTb,GAAkBqD,SACnB,CACGG,IAAAA,EAAcD,KAChBE,EAAOrD,OACOhL,IAAdgL,GAA2BoD,EAAcpD,IACzCqD,EAAOD,GAGXJ,GAAYK,MAEjB,CACC/C,EACAV,EACAoD,GACAhD,EACAmD,GACA9D,EACAoB,EACAoC,GACAI,KAGJzH,EAAAA,WAAU,WACDiF,GAAWH,IAAgBjB,GAC5BqB,GAAW,KAEhB,CAACJ,EAAajB,EAAwBoB,IAEnC6C,IAsBA/I,GAAaP,EAAQC,SAASO,cAC9BC,GAAiBT,EAAQC,SAASS,kBA0BxC,OAxBAc,EAAAA,WAAU,WACFX,EAAQ5C,WACRwD,EAAAA,YAAYlB,GAAYM,EAAQ5C,YAEhCyD,EAAcA,eAACnB,IAGfhI,eAAasI,EAAQ3C,gBAAgB,GACrCuD,EAAWA,YAAChB,GAAgBI,EAAQ3C,eAAeyD,KAAK,MAExDD,EAAcA,eAACjB,MAEpB,CACCF,GACAE,GACAI,EAAQ5C,WACR4C,EAAQ3C,iBAGZsD,EAAAA,WAAU,WACN+E,EAAe,IACfG,GAAW,KACZ,CAAC7F,IAGAlI,EAAC,QAAAC,cAAAyJ,GACG7K,SAAUA,EACVuB,QAAQ,QACRhB,OAAO,OACPuK,QAASA,GAET3J,EAAA,QAAAC,cAACS,UAAO,CAACkQ,WAAYjH,EAAU,QAAU,UACrC3J,EAAAA,QAAAC,cAACiL,GAAY,KACTlL,EAAC,QAAAC,cAAAqE,GAAI,CAAAuM,IAAKV,GAAiBxG,QAAkB,UAATtI,KAClC+L,GAAmB1F,IACjB1H,wBAACgM,GAAO,KACHoB,GACGpN,UAAAC,cAACmL,GAAqB,CAClBmB,QA/DF,WAAAuE,OAAAA,EAAAA,eAAA,OAAA,OAAA,GAAA,4FACN,QAAhBlS,EAAA2P,MAAAA,UAAAA,GAAUgB,cAAM,IAAA3Q,OAAA,EAAAA,EAAE4Q,YAA4B,UAAhBjB,MAAAA,QAAQ,EAARA,GAAUgB,cAAM,IAAA3K,OAAA,EAAAA,EAAE6K,YAC1CgB,EAAcD,KAChBO,EAAO1D,OACOhL,IAAdgL,GAA2BoD,EAAcpD,IACzC0D,EAAON,GAGXF,GACI,CAAChC,GAASgB,OAAOC,SAAUjB,GAASgB,OAAOE,WAC3CsB,UATqD,CAAA,EAAA,UAapC,6BAAM,CAAA,EAAAvC,oBAANvJ,EAAwB+L,QAC3BV,kEAkDO9C,GACGxN,EAAAA,sBAACiR,aAAU,CACPzE,UAAWlN,EAAOL,KAAKsM,WAKtC7D,EACGC,EACIA,EAAiB,CACbO,QAAOA,EACPC,WAAUA,EACVjG,KAAMA,GAAQ,GACd+G,SAAUvB,IAGd1H,EAAAA,QAAAC,cAACgH,EACG,CAAA1E,MAAO2F,EACP7C,SAAU8C,EACV7C,YACIoC,MAAAA,OAAU,EAAVA,EAAYpC,kBAAcjD,EAE9BkD,gBACImC,MAAAA,OAAA,EAAAA,EAAYnC,yCAECmC,EAAWnC,gBAAc,CAC5BxF,MAAOqI,MAAAA,SAAAA,EAAYtF,KACf,SAACoG,GACI,MAAA,CACG3G,MAAO2G,EACP3C,MAAO2C,IACN,aAGjB7G,EAEVmD,kBACIkC,MAAAA,OAAU,EAAVA,EAAYlC,kBAEhBC,UAAWiC,MAAAA,OAAU,EAAVA,EAAYjC,UACvBC,YAAagC,MAAAA,OAAA,EAAAA,EAAYhC,YACzBC,WAAY+B,MAAAA,OAAA,EAAAA,EAAY/B,WACxBC,UAAW8B,MAAAA,OAAU,EAAVA,EAAY9B,YAG/B,MAGXsI,IAAaA,GAAUxL,MACpB1C,EAAC,QAAAC,cAAAuL,GACG,CAAAe,QAAS,SAAC2E,GACFA,EAAGC,SAAWD,EAAGE,eACrBxD,EAAe,MAGnB5N,EAAAA,QAAAC,cAACiM,GAAO1C,EAAAA,SAAA,GACA0E,GAAS,CACb5B,QAAS,WAAMsB,OAAAA,EAAe,KAC9BvO,WAAYA,EACZgN,YAAakB"}
|
|
1
|
+
{"version":3,"file":"sections.pois.js","sources":["../src/components/sections/pois/PointOfInterestDetail.tsx","../src/components/sections/pois/filters.ts","../src/components/sections/pois/partials/PoiFilterBar.tsx","../src/components/sections/pois/PointOfInterestOverview.tsx","../src/components/sections/pois/PointOfInterestMap.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport styled from 'styled-components';\n\nimport Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport Image, { ImageProps } from 'components/blocks/Image';\nimport Copy from 'components/typography/Copy';\nimport Heading from 'components/typography/Heading';\nimport { spacings } from 'utils/styles';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport Grid from 'components/base/Grid';\nimport InfoList, { InfoGroup } from 'components/blocks/InfoList';\nimport POIFacts from 'components/blocks/POIFacts';\nimport { isValidArray } from 'utils/arrays';\n\nconst StyledImage = styled(Image)`\n &:not(:last-child) {\n margin-bottom: ${spacings.spacer}px;\n }\n`;\n\nconst Facts = styled(POIFacts)`\n max-width: 880px;\n`;\n\nconst PoiTitle = styled(Heading)`\n max-width: 880px;\n\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2; /* number of lines to show */\n line-clamp: 2;\n -webkit-box-orient: vertical;\n\n &:not(:first-child) {\n margin-top: ${spacings.nudge * 3}px;\n }\n`;\n\nconst PoiText = styled(Copy)`\n max-width: 880px;\n\n &:not(:first-child) {\n margin-top: ${spacings.nudge * 3}px;\n }\n`;\n\nconst PointOfInterestDetail: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** POI image */\n image?: Omit<ImageProps, 'coverSpace'>;\n\n /** POI title */\n title?: string;\n\n /** POI intro text */\n intro?: string;\n\n /** POI text (richtext) */\n text?: string;\n\n /** Array of POI facts */\n facts?: string[];\n\n /** Additional POI infos */\n infos?: InfoGroup[];\n\n /** Section background */\n bgMode?: 'inverted' | 'full';\n\n /** Function to inject custom feature node */\n customFact?: (props: {\n key: React.Key;\n name: string;\n isInverted?: boolean;\n }) => React.ReactNode;\n}> = ({\n anchorId,\n image,\n title,\n intro,\n text,\n facts,\n infos,\n bgMode,\n customFact,\n}) => {\n const { colors } = useLibTheme();\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n const hasInfos = useMemo(() => {\n return isValidArray(\n infos?.filter((info) => isValidArray(info.items, false)),\n false\n );\n }, [infos]);\n\n return (\n <Section\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : hasBg\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper addWhitespace>\n {image?.small && (\n <StyledImage\n {...image}\n coverSpace\n allowEdgeRadius\n isInverted={isInverted}\n />\n )}\n <Grid.Row\n gutter={spacings.nudge * 5}\n semilarge={{ gutter: spacings.spacer }}\n >\n <Grid.Col semilarge={{ span: hasInfos ? 5.7 / 8 : 1 }}>\n {title && (\n <PoiTitle size=\"heading-2\" isInverted={isInverted}>\n {title}\n </PoiTitle>\n )}\n {isValidArray(facts, false) && (\n <Facts\n isInverted={isInverted}\n facts={facts}\n customFact={customFact}\n />\n )}\n {intro && (\n <PoiText\n size=\"medium\"\n type=\"copy-b\"\n isInverted={isInverted}\n innerHTML={intro}\n />\n )}\n {text && (\n <PoiText\n size=\"medium\"\n isInverted={isInverted}\n innerHTML={text}\n />\n )}\n </Grid.Col>\n {hasInfos && (\n <Grid.Col semilarge={{ span: 2.3 / 8 }}>\n <InfoList isInverted={isInverted} items={infos} />\n </Grid.Col>\n )}\n </Grid.Row>\n </Wrapper>\n </Section>\n );\n};\n\nexport const PointOfInterestDetailComponent = PointOfInterestDetail;\nexport default withLibTheme(PointOfInterestDetail);\n","import { POICardProps } from 'components/blocks/POICard';\nimport { isValidArray } from 'hooks';\nimport { escapeRegExp } from 'utils/escape';\n\nexport type POIData = Pick<\n POICardProps,\n 'name' | 'facts' | 'infos' | 'shortDescription'\n> & { id: string };\n\nexport interface FilterMatch {\n item: POIData;\n priority: number;\n}\n\nconst poiExactNameFilter =\n <T extends POIData>(filterQuery: string) =>\n (value: T) => {\n const regex = new RegExp(filterQuery);\n return regex.test(value.name);\n };\n\nconst poiSoftNameFilter =\n <T extends POIData>(filterQuery: string) =>\n (value: T) => {\n const preparedQuery = filterQuery.toLowerCase().replace(/\\s/g, '');\n const preparedName = value.name.toLowerCase().replace(/\\s/g, '');\n\n const regex = new RegExp(preparedQuery);\n return regex.test(preparedName);\n };\n\nconst poiFactFilter =\n (filterQuery: string) =>\n <T extends POIData>(value: T) => {\n if (!isValidArray(value.facts, false)) return false;\n\n const preparedQuery = filterQuery.toLowerCase().replace(/\\s/g, '');\n const regex = new RegExp(preparedQuery);\n\n const result = value.facts.find((fact) => {\n const preparedFact = fact.toLowerCase().replace(/\\s/g, '');\n return regex.test(preparedFact);\n });\n\n return !!result;\n };\n\nconst poiInfoFilter =\n (filterQuery: string) =>\n <T extends POIData>(value: T) => {\n if (!isValidArray(value?.infos, false)) return false;\n\n const preparedQuery = filterQuery.toLowerCase().replace(/\\s/g, '');\n const regex = new RegExp(preparedQuery);\n\n return !!value.infos.find((info) => {\n if (!info.text) return false;\n const preparedText = info.text.toLowerCase().replace(/\\s/g, '');\n return regex.test(preparedText);\n });\n };\n\nconst poiDescriptionFilter =\n (filterQuery: string) =>\n <T extends POIData>(value: T) => {\n if (!value.shortDescription) return false;\n\n const preparedQuery = filterQuery.toLowerCase().replace(/\\s/g, '');\n const preparedDesc = value.shortDescription\n .toLowerCase()\n .replace(/\\s/g, '');\n\n const regex = new RegExp(preparedQuery);\n return regex.test(preparedDesc);\n };\n\nconst removeMatchIntersections = <T extends POIData>(\n array: FilterMatch[],\n item?: T[]\n) => {\n if (!item) return [];\n return item?.filter(\n (m) => !array.find((prioItem) => prioItem.item.id === m.id)\n );\n};\n\nconst filterPois = <T extends POIData>(filterQuery: string, pois: T[]) => {\n const prioList: FilterMatch[] = [];\n if (\n !isValidArray(\n pois?.filter((poi) => poi.id !== undefined),\n false\n )\n ) {\n return prioList;\n }\n\n // PRIO 1 Filter: Exact name\n const exactNameMatches = pois?.filter(poiExactNameFilter(filterQuery));\n if (isValidArray(exactNameMatches, false)) {\n prioList.push(\n ...exactNameMatches.map((match) => ({\n item: match,\n priority: 1,\n }))\n );\n }\n\n // PRIO 2 Filter: Name\n const nameMatches = removeMatchIntersections(\n prioList,\n pois?.filter(poiSoftNameFilter(filterQuery))\n );\n\n if (isValidArray(nameMatches, false)) {\n prioList.push(\n ...nameMatches.map((match) => ({\n item: match,\n priority: 2,\n }))\n );\n }\n\n // PRIO 3 Filter: Facts\n const factMatches = removeMatchIntersections(\n prioList,\n pois?.filter(poiFactFilter(filterQuery))\n );\n\n if (isValidArray(factMatches, false)) {\n prioList.push(\n ...factMatches.map((match) => ({\n item: match,\n priority: 3,\n }))\n );\n }\n\n // PRIO 4 Filter: Description\n const infoMatches = removeMatchIntersections(\n prioList,\n pois?.filter(poiInfoFilter(filterQuery))\n );\n\n if (isValidArray(infoMatches, false)) {\n prioList.push(\n ...infoMatches.map((match) => ({\n item: match,\n priority: 4,\n }))\n );\n }\n\n // PRIO 5 Filter: Description\n const descMatches = removeMatchIntersections(\n prioList,\n pois?.filter(poiDescriptionFilter(filterQuery))\n );\n\n if (isValidArray(descMatches, false)) {\n prioList.push(\n ...descMatches.map((match) => ({\n item: match,\n priority: 5,\n }))\n );\n }\n\n return prioList;\n};\n\nexport const getFilterMatches = <T extends POIData>(\n filterQuery: string,\n categoryFilters: string[],\n items: T[]\n) => {\n const searchMatches: Map<string, FilterMatch> = new Map();\n\n if (!filterQuery && !categoryFilters.length) {\n for (const item of items) {\n searchMatches.set(item.id, {\n item,\n priority: 0,\n });\n }\n }\n\n for (const item of items) {\n if (item.facts?.some((fact) => categoryFilters.includes(fact))) {\n searchMatches.set(item.id, {\n item,\n priority: 1,\n });\n }\n }\n\n // tracking matches of each query part\n const matches = filterQuery\n ? filterPois(escapeRegExp(filterQuery), items || [])\n : [];\n\n for (const match of matches) {\n if (searchMatches.has(match.item.id)) continue;\n searchMatches.set(match.item.id, match);\n }\n\n return searchMatches;\n};\n","import Cross from 'components/base/icons/Cross';\nimport CrossBubble from 'components/base/icons/CrossBubble';\nimport Filter from 'components/base/icons/Filter';\nimport Magnifier from 'components/base/icons/Magnifier';\nimport FilterBar, { FilterBarProps } from 'components/blocks/FilterBar';\nimport React, { FC } from 'react';\n\nconst PoiFilterBar: FC<\n FilterBarProps & { isInverted?: boolean; className?: string }\n> = ({\n hasBorders,\n value,\n onChange,\n textFilter,\n categoryFilter,\n mobileSubmitLabel,\n closeIcon,\n toggleLabel,\n filterIcon,\n indicator,\n isInverted,\n className,\n}) => {\n return (\n <FilterBar\n isInverted={isInverted}\n hasBorders={hasBorders}\n value={value}\n onChange={onChange}\n textFilter={\n textFilter\n ? {\n placeholder: textFilter.placeholder || 'Search...',\n icon: textFilter.icon\n ? textFilter.icon\n : () => <Magnifier width={18} height={18} />,\n submitIcon: textFilter.submitIcon\n ? textFilter.submitIcon\n : () => null,\n clearIcon: textFilter.clearIcon\n ? textFilter.clearIcon\n : () => <CrossBubble />,\n }\n : undefined\n }\n categoryFilter={\n categoryFilter\n ? {\n label: categoryFilter.label || 'Categories',\n items: categoryFilter.items || [],\n resetLabel:\n categoryFilter.resetLabel || 'reset selection',\n }\n : undefined\n }\n mobileSubmitLabel={mobileSubmitLabel || 'Apply filters'}\n closeIcon={closeIcon ? closeIcon : () => <Cross />}\n toggleLabel={toggleLabel || 'Search & Filter'}\n filterIcon={filterIcon ? filterIcon : () => <Filter />}\n indicator={indicator}\n className={className}\n />\n );\n};\n\nexport default PoiFilterBar;\n","import Section, { mapToBgMode } from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport { Info } from 'components/blocks/InfoList';\nimport POICard, { POICardProps } from 'components/blocks/POICard';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport styled from 'styled-components';\nimport { isValidArray } from 'utils/arrays';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport { mq, spacings, getColors as color } from 'utils/styles';\nimport { deleteUrlParam, setUrlParam } from 'utils/urlParams';\nimport { FilterState } from 'components/blocks/FilterBar';\nimport { getFilterMatches } from './filters';\nimport * as PoiPartials from 'components/sections/pois/partials';\n\nconst POISection = styled(Section)`\n overflow: visible;\n`;\n\nconst Content = styled.ul`\n list-style: none;\n margin: 0;\n padding: 0;\n\n & > * + * {\n margin-top: ${spacings.nudge * 5}px;\n }\n\n @media ${mq.large} {\n & > * + * {\n margin-top: ${spacings.nudge * 3}px;\n }\n }\n`;\n\nconst PoiOverviewFilterBar = styled(PoiPartials.PoiFilterBar)`\n // margin to show prevent section overflow outline\n margin-top: 2px;\n border: solid 1px\n ${({ theme, isInverted }) =>\n isInverted\n ? color(theme).elementBg.light\n : color(theme).elementBg.dark};\n border-radius: ${({ theme }) => theme.globals.sections.edgeRadius};\n\n &:not(:last-child) {\n margin-bottom: ${spacings.nudge * 5}px;\n }\n\n @media ${mq.medium} {\n border: none;\n }\n`;\n\ninterface CardProps extends POICardProps {\n id: string;\n infos?: Array<Info & { allowFiltering?: boolean }>;\n}\n\nexport type PointOfInterestOverviewItem = Omit<CardProps, 'isInverted'>;\n\nexport interface PoiOverviewFilters {\n toggleLabel?: string;\n mobileSubmitLabel?: string;\n categoryFilter?: {\n label?: string;\n resetLabel?: string;\n };\n textFilter?: {\n placeholder?: string;\n icon?: (isInverted?: boolean) => React.ReactNode;\n submitIcon?: (isInverted?: boolean) => React.ReactNode;\n clearIcon?: (isInverted?: boolean) => React.ReactNode;\n };\n closeIcon?: (isInverted?: boolean) => React.ReactNode;\n filterIcon?: (isInverted?: boolean) => React.ReactNode;\n indicator?: (props: {\n isOpen: boolean;\n isDisabled?: boolean;\n }) => React.ReactNode;\n}\n\nexport interface PointOfInterestCustomFilterFnProps {\n pois: PointOfInterestOverviewItem[];\n filters: FilterState;\n setFilters: React.Dispatch<React.SetStateAction<FilterState>>;\n settings?: PoiOverviewFilters;\n}\nexport type PointOfInterestCustomFilterFn = (\n props: PointOfInterestCustomFilterFnProps\n) => React.ReactNode;\n\nconst PointOfInterestOverview: React.FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Array of POI card settings */\n pois?: PointOfInterestOverviewItem[];\n\n /** Section background */\n bgMode?: 'full' | 'inverted';\n\n /** Initial POI filter states */\n initialPoiFilters?: FilterState;\n\n /** POI filter settings */\n poiFilters?: PoiOverviewFilters;\n customPoiFilters?: PointOfInterestCustomFilterFn;\n\n /** Custom POI filter function */\n listAriaLabel?: string;\n}> = ({\n anchorId,\n bgMode,\n pois,\n initialPoiFilters,\n poiFilters,\n customPoiFilters,\n listAriaLabel = 'List of card items with points of interest',\n}) => {\n const { colors, globals } = useLibTheme();\n const filterName = globals.sections.poiFilterName;\n const factFiltername = globals.sections.poiFactFilterName;\n\n const isInverted = bgMode === 'inverted';\n const hasBg = bgMode === 'full';\n\n const [filters, setFilters] = useState<FilterState>(\n initialPoiFilters || {\n categoryFilter: [],\n textFilter: '',\n }\n );\n\n const categories = useMemo(() => {\n return pois?.reduce<string[]>((acc, poi) => {\n const newCategories = [...acc];\n\n for (const fact of poi.facts || []) {\n if (!newCategories.includes(fact)) {\n newCategories.push(fact);\n }\n }\n\n return newCategories;\n }, []);\n }, [pois]);\n\n const poiMatches = useMemo(() => {\n const matches =\n getFilterMatches<PointOfInterestOverviewItem>(\n filters?.textFilter || '',\n filters?.categoryFilter || [],\n pois || []\n ) || pois;\n\n return Array.from(matches).map((m) => m[1]);\n }, [filters?.textFilter, filters?.categoryFilter, pois]);\n\n useEffect(() => {\n if (filters.textFilter) {\n setUrlParam(filterName, filters.textFilter);\n } else {\n deleteUrlParam(filterName);\n }\n\n if (isValidArray(filters.categoryFilter, false)) {\n setUrlParam(factFiltername, filters.categoryFilter.join(','));\n } else {\n deleteUrlParam(factFiltername);\n }\n }, [\n filterName,\n factFiltername,\n filters.textFilter,\n filters.categoryFilter,\n ]);\n\n return (\n <POISection\n addSeperation\n anchorId={anchorId}\n bgColor={\n isInverted\n ? colors.sectionBg.dark\n : hasBg\n ? colors.sectionBg.medium\n : colors.sectionBg.light\n }\n bgMode={mapToBgMode(bgMode, true)}\n >\n <Wrapper addWhitespace>\n {poiFilters ? (\n customPoiFilters ? (\n customPoiFilters?.({\n filters,\n setFilters,\n pois: pois || [],\n settings: poiFilters,\n })\n ) : (\n <PoiOverviewFilterBar\n hasBorders\n value={filters}\n onChange={setFilters}\n textFilter={poiFilters?.textFilter || undefined}\n categoryFilter={\n poiFilters?.categoryFilter\n ? {\n ...poiFilters.categoryFilter,\n items: categories?.map(\n (cat) =>\n ({\n value: cat,\n label: cat,\n } || [])\n ),\n }\n : undefined\n }\n mobileSubmitLabel={poiFilters?.mobileSubmitLabel}\n closeIcon={poiFilters?.closeIcon}\n toggleLabel={poiFilters?.toggleLabel}\n filterIcon={poiFilters?.filterIcon}\n indicator={poiFilters?.indicator}\n isInverted={isInverted}\n />\n )\n ) : null}\n <Content aria-label={listAriaLabel}>\n {poiMatches\n ?.sort((a, b) => a.priority - b.priority)\n ?.map((poi, i) => (\n <POICard\n key={i}\n {...poi.item}\n renderAs=\"li\"\n isInverted={isInverted}\n />\n ))}\n </Content>\n </Wrapper>\n </POISection>\n );\n};\n\nexport const PointOfInterestOverviewComponent = PointOfInterestOverview;\nexport default withLibTheme(PointOfInterestOverview);\n","import React, { FC, useEffect, useMemo, useState } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport Section from 'components/base/Section';\nimport Wrapper from 'components/base/Wrapper';\nimport { useLibTheme, withLibTheme } from 'utils/LibThemeProvider';\nimport useLeafletMap, { LeafletMapMarker } from 'utils/useLeafletMap';\nimport {\n mq,\n withRange,\n getColors as color,\n getGlobals as global,\n spacings,\n} from 'utils/styles';\nimport {\n generateNavbarIdent as genIdent,\n getFullNavbarHeights as getNavHeight,\n} from '../navigation/Navigation';\nimport { getSVGDataImg as getSVGData } from 'utils/dataURI';\nimport LocationPin from 'components/base/icons/LocationPin';\nimport Copy from 'components/typography/Copy';\nimport { isValidArray } from 'utils/arrays';\nimport POIFacts from 'components/blocks/POIFacts';\nimport InfoList, { Info } from 'components/blocks/InfoList';\nimport useGeolocation from 'utils/useGeolocation';\nimport CurrentLocation from 'components/base/icons/CurrentLocation';\nimport Cross from 'components/base/icons/Cross';\nimport MyLocation from 'components/base/icons/MyLocation';\nimport { FilterState } from 'components/blocks/FilterBar';\nimport { getFilterMatches } from './filters';\n\nimport * as PoiPartials from 'components/sections/pois/partials';\nimport { deleteUrlParam, setUrlParam } from 'hooks';\n\nconst genHeightStyles = () => css`\n // Doing some crazy shit to calculate curent navbar height in CSS\n ${({ theme }) => {\n // navbar main only\n const mainIdent = genIdent({\n pageFlow: 'beforeContent',\n hasMain: true,\n });\n\n // navbar main and top\n const mainTopIdent = genIdent({\n pageFlow: 'beforeContent',\n hasMain: true,\n hasTop: true,\n });\n\n // navbar main and bottom\n const mainBottomIdent = genIdent({\n pageFlow: 'beforeContent',\n hasMain: true,\n hasBottom: true,\n });\n\n // full navbar with all bars\n const fullIdent = genIdent({\n pageFlow: 'beforeContent',\n hasTop: true,\n hasMain: true,\n hasBottom: true,\n });\n\n const navMainHeight = getNavHeight(theme, mainIdent).large;\n const navMainTopHeight = getNavHeight(theme, mainTopIdent).large;\n const navMainBottomHeight = getNavHeight(theme, mainBottomIdent).large;\n const navFullHeight = getNavHeight(theme, fullIdent).large;\n\n const mapToSelector = (idents: string[]) => {\n return idents.map((id) => `[data-navbar-ident*='${id}']`).join('');\n };\n\n const refHeight = '100vh';\n\n return css`\n ${Map} {\n height: ${refHeight};\n }\n\n // with main navbar element\n header${mapToSelector(mainIdent.split('-'))} ~ & {\n ${Map} {\n height: calc(${refHeight} - ${navMainHeight[0]}px);\n }\n }\n\n // with main and top navbar elements\n header${mapToSelector(mainTopIdent.split('-'))} ~ & {\n ${Map} {\n height: calc(${refHeight} - ${navMainTopHeight[0]}px);\n }\n }\n\n // with main and bottom navbar elements\n header${mapToSelector(mainBottomIdent.split('-'))} ~ & {\n ${Map} {\n height: calc(${refHeight} - ${navMainBottomHeight[0]}px);\n }\n }\n\n // with all navbar elements\n header${mapToSelector(fullIdent.split('-'))} ~ & {\n ${Map} {\n height: calc(${refHeight} - ${navFullHeight[0]}px);\n }\n }\n\n @media ${mq.semilarge} {\n // with main navbar element\n header${mapToSelector(mainIdent.split('-'))} ~ & {\n ${Map} {\n height: calc(${refHeight} - ${navMainHeight[1]}px);\n }\n }\n\n // with main and top navbar elements\n header${mapToSelector(mainTopIdent.split('-'))} ~ & {\n ${Map} {\n height: calc(${refHeight} - ${navMainTopHeight[1]}px);\n }\n }\n\n // with main and bottom navbar elements\n header${mapToSelector(mainBottomIdent.split('-'))} ~ & {\n ${Map} {\n height: calc(\n ${refHeight} - ${navMainBottomHeight[1]}px\n );\n }\n }\n\n // with all navbar elements\n header${mapToSelector(fullIdent.split('-'))} ~ & {\n ${Map} {\n height: calc(${refHeight} - ${navFullHeight[1]}px);\n }\n }\n }\n `;\n }}\n`;\n\nconst PoiMapSection = styled(Section)<{ isLarge?: boolean }>`\n position: relative;\n ${({ isLarge }) => isLarge && genHeightStyles()}\n\n header + & {\n ${withRange([0], 'padding-top')}\n ${withRange([0], 'margin-top')}\n }\n`;\n\nconst MapContainer = styled.div`\n position: relative;\n`;\n\nconst Map = styled.div<{ isLarge?: boolean }>`\n min-height: 360px;\n height: 360px;\n max-height: 1300px;\n z-index: 0;\n\n @media ${mq.medium} {\n height: 600px;\n min-height: 600px;\n }\n`;\n\nconst RequestGeolocationBtn = styled.button`\n background-color: transparent;\n border: none;\n padding: ${spacings.nudge}px;\n cursor: pointer;\n\n transition: transform 0.2s ease-in-out, opacity 0.2s ease-in-out;\n\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n opacity: 0.6;\n }\n }\n\n &:focus {\n outline: 2px solid ${({ theme }) => color(theme).primary.default};\n transform: scale(1.012);\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n }\n\n &:active {\n transform: scale(0.95);\n }\n\n & > * {\n width: 30px;\n height: 30px;\n }\n`;\n\nconst CardStage = styled.div`\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 10;\n\n display: flex;\n align-items: flex-end;\n justify-content: flex-end;\n\n pointer-events: all;\n background-color: rgba(255, 255, 255, 0.8);\n\n @media ${mq.medium} {\n position: absolute;\n background-color: transparent;\n padding: ${spacings.nudge * 2}px;\n padding-bottom: ${spacings.nudge * 3}px;\n\n pointer-events: none;\n }\n`;\n\nconst MapCardView = styled.div`\n max-height: 100%;\n width: 100%;\n padding: ${spacings.nudge * 2}px;\n overflow: auto;\n\n background: ${({ theme }) => color(theme).elementBg.light};\n box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.3);\n pointer-events: all;\n border-radius: ${({ theme }) => global(theme).sections.edgeRadius};\n\n & > * + * {\n margin-top: ${spacings.nudge * 3}px;\n }\n\n @media ${mq.medium} {\n max-width: 400px;\n }\n`;\n\nconst MapCardHeader = styled.header`\n display: flex;\n align-items: center;\n`;\n\nconst CloseBtn = styled.button`\n display: inline-block;\n border: none;\n background-color: transparent;\n cursor: pointer;\n margin-left: auto;\n padding: ${spacings.nudge}px;\n\n transition: transform 0.2s ease-in-out, opacity 0.2s ease-in-out;\n\n @media (hover: hover) and (pointer: fine) {\n &:hover {\n opacity: 0.6;\n }\n }\n\n &:focus {\n outline: 2px solid ${({ theme }) => color(theme).primary.default};\n transform: scale(1.012);\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n }\n\n &:active {\n transform: scale(0.95);\n }\n`;\n\nconst Overlay = styled.div`\n position: absolute;\n top: ${spacings.nudge * 2}px;\n left: ${spacings.nudge * 2}px;\n width: 100%;\n\n display: flex;\n align-items: center;\n\n & > * + * {\n margin-left: ${spacings.nudge * 2}px;\n }\n`;\n\nconst MapCard: FC<{\n name?: string;\n facts?: string[];\n description?: string;\n infos?: Info[];\n\n action?: React.ReactNode;\n onClose?: () => void;\n customFact?: (props: { key: React.Key; name: string }) => React.ReactNode;\n customClose?: React.ReactNode;\n\n className?: string;\n}> = ({\n name,\n facts,\n description,\n infos,\n action,\n customFact,\n customClose,\n onClose,\n className,\n}) => {\n const { colors } = useLibTheme();\n\n return (\n <MapCardView className={className}>\n <MapCardHeader>\n {name && (\n <Copy type=\"copy-b\" size=\"big\">\n {name}\n </Copy>\n )}\n <CloseBtn onClick={onClose}>\n {customClose || <Cross iconColor={colors.text.default} />}\n </CloseBtn>\n </MapCardHeader>\n {isValidArray(facts, false) && (\n <POIFacts facts={facts} customFact={customFact} />\n )}\n {description && (\n <Copy type=\"copy\" size=\"small\" innerHTML={description} />\n )}\n {isValidArray(infos, false) && (\n <InfoList\n items={[\n {\n items: infos,\n },\n ]}\n />\n )}\n {action && action}\n </MapCardView>\n );\n};\n\nexport interface LocationIcon {\n url: string;\n size: [number, number];\n anchor: [number, number];\n\n sizeActive: [number, number];\n anchorActive: [number, number];\n}\n\nexport interface MapPOI {\n /** Unique ID */\n id: string;\n\n /** Latitude and Longitude of item position */\n position: [number, number];\n\n /** Marker icon settings */\n icon?: LocationIcon;\n\n /** POI name */\n name: string;\n\n /** POI short description text */\n description?: string;\n\n /** Array of POI facts */\n facts?: string[];\n\n /** Array of additional POI informations */\n infos?: Info[];\n\n /** Function to inject custom action node */\n action?: React.ReactNode;\n}\n\nexport interface PoiMapFilters {\n toggleLabel?: string;\n mobileSubmitLabel?: string;\n categoryFilter?: {\n label?: string;\n resetLabel?: string;\n };\n textFilter?: {\n placeholder?: string;\n icon?: (isInverted?: boolean) => React.ReactNode;\n submitIcon?: (isInverted?: boolean) => React.ReactNode;\n clearIcon?: (isInverted?: boolean) => React.ReactNode;\n };\n closeIcon?: (isInverted?: boolean) => React.ReactNode;\n filterIcon?: (isInverted?: boolean) => React.ReactNode;\n indicator?: (props: {\n isOpen: boolean;\n isDisabled?: boolean;\n }) => React.ReactNode;\n}\n\nconst PointOfInterestMap: FC<{\n /** ID value for targeting section with anchor hashes */\n anchorId?: string;\n\n /** Size mode */\n size?: 'default' | 'large';\n\n /** Array of POI card settings */\n pois?: MapPOI[];\n\n /** Use geolocation for own position */\n showOwnPosition?: boolean;\n\n /** Map tile provider */\n provider?: string;\n\n /** Map attribution text (richtext) */\n attribution?: string;\n\n /** Initial center of the map */\n center?: [number, number];\n\n /** Initial map zoom */\n zoom?: number;\n\n /** Min map zoom */\n minZoom?: number;\n\n /** Max map zoom */\n maxZoom?: number;\n\n /** Zoom if map jumps to location */\n flyToZoom?: number;\n\n /** Initial location */\n initialPointOfInterest?: string;\n\n /** Show all markers on first load */\n allMarkersOnInit?: boolean;\n\n /** Restrict map to bounds of markers area */\n restrictToMarkersArea?: boolean;\n\n /** Map container padding for show all markers */\n fitBoundsPadding?: [number, number];\n\n /** Function to inject custom fact node into MapCard */\n customFact?: (props: { key: React.Key; name: string }) => React.ReactNode;\n\n /** Custom current position marker */\n currentPosMarker?: LocationIcon;\n\n /** Custom card close icon */\n customCardClose?: React.ReactNode;\n\n /** Custom icon for my location request button */\n customLocationRequest?: React.ReactNode;\n\n /** Initial POI filter states */\n initialPoiFilters?: FilterState;\n\n /** POI filter settings */\n poiFilters?: PoiMapFilters;\n customPoiFilters?: (props: {\n pois: MapPOI[];\n filters: FilterState;\n setFilters: React.Dispatch<React.SetStateAction<FilterState>>;\n settings?: PoiMapFilters;\n }) => React.ReactNode;\n}> = ({\n anchorId,\n size,\n pois,\n initialPointOfInterest = '',\n provider,\n attribution,\n center = [51.505, -0.09],\n zoom = 5,\n fitBoundsPadding,\n allMarkersOnInit = false,\n restrictToMarkersArea = true,\n showOwnPosition,\n flyToZoom,\n customFact,\n currentPosMarker,\n customCardClose,\n customLocationRequest,\n initialPoiFilters,\n poiFilters,\n customPoiFilters,\n}) => {\n const isLarge = size === 'large';\n const { colors, globals } = useLibTheme();\n\n const [activePoiId, setActivePoiId] = useState<string>(\n initialPointOfInterest || ''\n );\n const [isDirty, setIsDirty] = useState<boolean>(false);\n\n const [filters, setFilters] = useState<FilterState>(\n initialPoiFilters || {\n categoryFilter: [],\n textFilter: '',\n }\n );\n\n const categories = useMemo(() => {\n return pois?.reduce<string[]>((acc, poi) => {\n const newCategories = [...acc];\n\n for (const fact of poi.facts || []) {\n if (!newCategories.includes(fact)) {\n newCategories.push(fact);\n }\n }\n\n return newCategories;\n }, []);\n }, [pois]);\n\n const activePois = useMemo(() => {\n const matches =\n getFilterMatches<MapPOI>(\n filters?.textFilter || '',\n filters?.categoryFilter || [],\n pois || []\n ) || pois;\n\n return Array.from(matches).map((m) => m[1].item) as MapPOI[];\n }, [filters?.textFilter, filters?.categoryFilter, pois]);\n\n const activePOI = useMemo(() => {\n return activePois?.find((poi) => poi.id === activePoiId);\n }, [activePoiId, activePois]);\n\n const {\n isSupported: isGeolocationSupported,\n location,\n reset: resetGeolocation,\n // error,\n } = useGeolocation(true, false);\n\n const mapMarkers = useMemo(() => {\n const defaultMarker: LocationIcon = {\n size: [28, 28],\n anchor: [14, 28],\n sizeActive: [70, 70],\n anchorActive: [35, 70],\n url: getSVGData(<LocationPin />),\n };\n\n // marker of own position\n const defaultPosMarker: LocationIcon = {\n size: [24, 24],\n anchor: [12, 12],\n sizeActive: [24, 24],\n anchorActive: [12, 12],\n url: getSVGData(<CurrentLocation iconColor=\"#5383EC\" />),\n };\n\n const markers: LeafletMapMarker[] =\n activePois\n ?.filter((poi) => poi.id !== undefined)\n ?.map(({ id, position, icon }) => ({\n id,\n position,\n icon: icon || defaultMarker,\n isInteractive: true,\n })) || [];\n\n if (\n isGeolocationSupported &&\n location?.coords.latitude &&\n location?.coords.longitude\n ) {\n markers.push({\n id: 'my-current-position-123456789',\n position: [location.coords.latitude, location.coords.longitude],\n icon: currentPosMarker || defaultPosMarker,\n });\n }\n\n return markers;\n }, [\n currentPosMarker,\n isGeolocationSupported,\n location?.coords.latitude,\n location?.coords.longitude,\n activePois,\n ]);\n\n const {\n isLoaded,\n setContainer: setMapContainer,\n flyToActive,\n showAllMarkers,\n flyToPosition,\n getCurrentZoom,\n } = useLeafletMap({\n url: provider,\n attribution,\n center,\n zoom,\n activeMarkerId: activePoiId,\n markers: mapMarkers,\n fitBoundsPadding,\n restrictToMarkersArea,\n showZoomControls: true,\n zoomControlPosition: 'bottomleft',\n onMarkerClick: (markerId) => {\n setActivePoiId((prev) => {\n if (prev === markerId) {\n return '';\n }\n return markerId;\n });\n },\n });\n\n useEffect(() => {\n if (isLoaded && !isDirty) {\n if (allMarkersOnInit) showAllMarkers();\n } else {\n const currentZoom = getCurrentZoom();\n let zoom = flyToZoom;\n if (flyToZoom !== undefined && currentZoom > flyToZoom) {\n zoom = currentZoom;\n }\n\n flyToActive(zoom);\n }\n }, [\n activePoiId,\n allMarkersOnInit,\n flyToActive,\n flyToZoom,\n getCurrentZoom,\n initialPointOfInterest,\n isDirty,\n isLoaded,\n showAllMarkers,\n ]);\n\n useEffect(() => {\n if (!isDirty && activePoiId !== initialPointOfInterest) {\n setIsDirty(true);\n }\n }, [activePoiId, initialPointOfInterest, isDirty]);\n\n const handleLocationRequest = async () => {\n if (location?.coords?.latitude && location?.coords?.longitude) {\n const currentZoom = getCurrentZoom();\n let zoom = flyToZoom;\n if (flyToZoom !== undefined && currentZoom > flyToZoom) {\n zoom = currentZoom;\n }\n\n flyToPosition(\n [location.coords.latitude, location.coords.longitude],\n zoom\n );\n } else {\n try {\n const position = await resetGeolocation();\n if (position) showAllMarkers();\n } catch (err) {\n // console.log(err);\n }\n }\n };\n\n const filterName = globals.sections.poiFilterName;\n const factFiltername = globals.sections.poiFactFilterName;\n\n useEffect(() => {\n if (filters.textFilter) {\n setUrlParam(filterName, filters.textFilter);\n } else {\n deleteUrlParam(filterName);\n }\n\n if (isValidArray(filters.categoryFilter, false)) {\n setUrlParam(factFiltername, filters.categoryFilter.join(','));\n } else {\n deleteUrlParam(factFiltername);\n }\n }, [\n filterName,\n factFiltername,\n filters.textFilter,\n filters.categoryFilter,\n ]);\n\n useEffect(() => {\n setActivePoiId('');\n setIsDirty(false);\n }, [filters]);\n\n return (\n <PoiMapSection\n anchorId={anchorId}\n bgColor=\"image\"\n bgMode=\"full\"\n isLarge={isLarge}\n >\n <Wrapper clampWidth={isLarge ? 'large' : 'normal'}>\n <MapContainer>\n <Map ref={setMapContainer} isLarge={size === 'large'} />\n {(showOwnPosition || poiFilters) && (\n <Overlay>\n {showOwnPosition && (\n <RequestGeolocationBtn\n onClick={handleLocationRequest}\n >\n {customLocationRequest || (\n <MyLocation\n iconColor={colors.text.default}\n />\n )}\n </RequestGeolocationBtn>\n )}\n {poiFilters ? (\n customPoiFilters ? (\n customPoiFilters({\n filters,\n setFilters,\n pois: pois || [],\n settings: poiFilters,\n })\n ) : (\n <PoiPartials.PoiFilterBar\n value={filters}\n onChange={setFilters}\n textFilter={\n poiFilters?.textFilter || undefined\n }\n categoryFilter={\n poiFilters?.categoryFilter\n ? {\n ...poiFilters.categoryFilter,\n items: categories?.map(\n (cat) =>\n ({\n value: cat,\n label: cat,\n } || [])\n ),\n }\n : undefined\n }\n mobileSubmitLabel={\n poiFilters?.mobileSubmitLabel\n }\n closeIcon={poiFilters?.closeIcon}\n toggleLabel={poiFilters?.toggleLabel}\n filterIcon={poiFilters?.filterIcon}\n indicator={poiFilters?.indicator}\n />\n )\n ) : null}\n </Overlay>\n )}\n {activePOI && activePOI.name && (\n <CardStage\n onClick={(ev) => {\n if (ev.target !== ev.currentTarget) return;\n setActivePoiId('');\n }}\n >\n <MapCard\n {...activePOI}\n onClose={() => setActivePoiId('')}\n customFact={customFact}\n customClose={customCardClose}\n />\n </CardStage>\n )}\n </MapContainer>\n </Wrapper>\n </PoiMapSection>\n );\n};\n\nexport const PointOfInterestMapComponent = PointOfInterestMap;\nexport default withLibTheme(PointOfInterestMap);\n"],"names":["StyledImage","styled","Image","withConfig","displayName","componentId","templateObject_1","__makeTemplateObject","spacings","spacer","Facts","POIFacts","templateObject_2","PoiTitle","Heading","templateObject_3","nudge","PoiText","Copy","templateObject_4","PointOfInterestDetail$1","withLibTheme","_a","anchorId","image","title","intro","text","facts","infos","bgMode","customFact","colors","useLibTheme","isInverted","hasBg","hasInfos","useMemo","isValidArray","filter","info","items","React","createElement","Section","addSeperation","bgColor","sectionBg","dark","medium","light","mapToBgMode","Wrapper","addWhitespace","small","coverSpace","allowEdgeRadius","Grid","Row","gutter","semilarge","Col","span","size","type","innerHTML","InfoList","removeMatchIntersections","array","item","m","find","prioItem","id","filterPois","filterQuery","pois","prioList","poi","undefined","exactNameMatches","value","RegExp","test","name","poiExactNameFilter","push","apply","map","match","priority","nameMatches","preparedQuery","toLowerCase","replace","preparedName","poiSoftNameFilter","factMatches","regex","fact","preparedFact","poiFactFilter","infoMatches","preparedText","poiInfoFilter","descMatches","shortDescription","preparedDesc","poiDescriptionFilter","getFilterMatches","categoryFilters","searchMatches","Map","length","items_1","_i","set","items_2","_b","some","includes","matches_1","escapeRegExp","_c","has","PoiFilterBar","hasBorders","onChange","textFilter","categoryFilter","mobileSubmitLabel","closeIcon","toggleLabel","filterIcon","indicator","className","FilterBar","placeholder","icon","Magnifier","width","height","submitIcon","clearIcon","CrossBubble","label","resetLabel","Cross","Filter","POISection","Content","ul","mq","large","PoiOverviewFilterBar","PoiPartials","theme","color","elementBg","globals","sections","edgeRadius","PointOfInterestOverview$1","initialPoiFilters","poiFilters","customPoiFilters","listAriaLabel","_d","filterName","poiFilterName","factFiltername","poiFactFilterName","_e","useState","filters","setFilters","categories","reduce","acc","newCategories","__spreadArray","poiMatches","matches","Array","from","useEffect","setUrlParam","deleteUrlParam","join","settings","cat","sort","a","b","i","POICard","__assign","key","renderAs","PoiMapSection","isLarge","css","mainIdent","genIdent","pageFlow","hasMain","mainTopIdent","hasTop","mainBottomIdent","hasBottom","fullIdent","navMainHeight","getNavHeight","getFullNavbarHeights","navMainTopHeight","navMainBottomHeight","navFullHeight","mapToSelector","idents","concat","refHeight","split","withRange","MapContainer","div","templateObject_5","RequestGeolocationBtn","button","primary","default","CardStage","templateObject_7","MapCardView","global","MapCardHeader","header","templateObject_9","CloseBtn","Overlay","templateObject_11","MapCard","description","action","customClose","onClose","onClick","iconColor","PointOfInterestMap$1","initialPointOfInterest","provider","attribution","center","zoom","fitBoundsPadding","allMarkersOnInit","_f","restrictToMarkersArea","showOwnPosition","flyToZoom","currentPosMarker","customCardClose","customLocationRequest","_g","_h","activePoiId","setActivePoiId","_j","isDirty","setIsDirty","_k","activePois","activePOI","_l","useGeolocation","isGeolocationSupported","isSupported","location","resetGeolocation","mapMarkers","defaultMarker","anchor","sizeActive","anchorActive","url","getSVGData","getSVGDataImg","LocationPin","defaultPosMarker","CurrentLocation","markers","position","isInteractive","coords","latitude","longitude","_m","useLeafletMap","activeMarkerId","showZoomControls","zoomControlPosition","onMarkerClick","markerId","prev","isLoaded","setMapContainer","setContainer","flyToActive","showAllMarkers","flyToPosition","getCurrentZoom","currentZoom","zoom_1","handleLocationRequest","clampWidth","ref","__awaiter","zoom_2","sent","MyLocation","ev","target","currentTarget"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=require("react"),t=require("react-schemaorg"),o=require("./arrays-c272ed59.js");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=n(e),r=function(e,t,o){return o.indexOf(e)===t};exports.generateFAQ=function(e){return d.default.createElement(t.JsonLd,{item:{"@context":"https://schema.org","@type":"FAQPage",mainEntity:e.map((function(e){return{"@type":"Question",name:e.label,acceptedAnswer:{"@type":"Answer",text:e.text}}}))}})},exports.generateJob=function(e){var o,n,i,s,l,a=e.jobTitle,u=e.jobDesc,c=e.organization,p=e.directApply,m=e.locations,v=e.employmentTypes,y=e.datePosted;return d.default.createElement(t.JsonLd,{item:{"@context":"https://schema.org","@type":"JobPosting",title:a,description:u,datePosted:null==y?void 0:y.toISOString(),employmentType:null==v?void 0:v.filter(r),hiringOrganization:{"@type":"Organization",name:null==c?void 0:c.name,url:(null==c?void 0:c.url)?encodeURIComponent(null==c?void 0:c.url):"",logo:null==c?void 0:c.logo,telephone:null==c?void 0:c.telephone,email:null==c?void 0:c.email,address:(null===(o=null==c?void 0:c.address)||void 0===o?void 0:o.streetAddress)?{"@type":"PostalAddress",streetAddress:null===(n=null==c?void 0:c.address)||void 0===n?void 0:n.streetAddress,addressLocality:null===(i=null==c?void 0:c.address)||void 0===i?void 0:i.addressLocality,postalCode:null===(s=null==c?void 0:c.address)||void 0===s?void 0:s.postalCode,addressCountry:null===(l=null==c?void 0:c.address)||void 0===l?void 0:l.addressCountry}:void 0},jobLocation:null==m?void 0:m.map((function(e){return{"@type":"Place",address:{"@type":"PostalAddress",addressLocality:e.addressLocality||e.name,streetAddress:e.streetAddress,addressRegion:e.addressRegion,postalCode:e.postalCode,addressCountry:e.addressCountry}}})),directApply:p}})},exports.generateLocalBusiness=function(e){return null==e?void 0:e.map((function(e,o){var n,r,i=e.position,s=e.address,l=e.contact,a=e.companyName,u=e.image;return a?d.default.createElement(t.JsonLd,{key:o,item:{"@context":"https://schema.org","@type":"LocalBusiness",name:a,geo:{"@type":"GeoCoordinates",name:"Coordinates",latitude:i[0],longitude:i[1]},address:{"@type":"PostalAddress",streetAddress:null==s?void 0:s.street,addressLocality:null==s?void 0:s.city,addressRegion:null==s?void 0:s.city,postalCode:null==s?void 0:s.postalCode,addressCountry:null==s?void 0:s.country},image:u||[],telephone:"".concat(null===(n=null==l?void 0:l.telephone)||void 0===n?void 0:n.label),email:"".concat(null===(r=null==l?void 0:l.email)||void 0===r?void 0:r.label)}}):""}))},exports.generatePriceList=function(e){var n;return e&&o.isValidArray(e.items,!1)?d.default.createElement(t.JsonLd,{item:{"@context":"https://schema.org","@type":"ItemList",name:e.name,itemListElement:null===(n=e.items)||void 0===n?void 0:n.map((function(t){return{"@type":"ListItem",item:{"@type":"service"===e.type?"Service":"Product",name:t.name,description:t.description,offers:{"@type":"Offer",url:t.url,price:t.price,priceCurrency:t.currency||"EUR",priceValidUntil:t.priceValidUntil}}}}))}}):null};
|
|
2
|
+
//# sourceMappingURL=structuredData-7c33a463.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"structuredData-7c33a463.js","sources":["../src/utils/filters.ts","../src/utils/structuredData.tsx"],"sourcesContent":["export const distinct = <T>(value: T, index: number, array: T[]) => {\n return array.indexOf(value) === index;\n};\n","import React from 'react';\nimport { JsonLd } from 'react-schemaorg';\nimport { MapLocation } from 'components/sections/Map';\nimport {\n FAQPage,\n ItemList,\n JobPosting,\n LocalBusiness,\n Place,\n} from 'schema-dts';\nimport { OrganizationData } from 'components/sections/jobs/JobArticle';\nimport { distinct } from './filters';\nimport { JobLocation } from 'components/blocks/JobCard';\nimport { isValidArray } from './arrays';\n\nexport const generateLocalBusiness = (locations: MapLocation[]) => {\n return locations?.map(\n ({ position, address, contact, companyName, image }, i) => {\n if (!companyName) return '';\n return (\n <JsonLd<LocalBusiness>\n key={i}\n item={{\n '@context': 'https://schema.org',\n '@type': 'LocalBusiness',\n name: companyName,\n\n geo: {\n '@type': 'GeoCoordinates',\n name: 'Coordinates',\n latitude: position[0],\n longitude: position[1],\n },\n\n address: {\n '@type': 'PostalAddress',\n streetAddress: address?.street,\n addressLocality: address?.city,\n addressRegion: address?.city,\n postalCode: address?.postalCode,\n addressCountry: address?.country,\n },\n\n image: image || [],\n\n telephone: `${contact?.telephone?.label}`,\n\n email: `${contact?.email?.label}`,\n }}\n />\n );\n }\n );\n};\n\nexport const generateFAQ = (\n items: {\n label?: string;\n text?: string;\n aside?: string;\n hasColumns?: boolean;\n }[]\n) => {\n return (\n <JsonLd<FAQPage>\n item={{\n '@context': 'https://schema.org',\n '@type': 'FAQPage',\n mainEntity: items.map(({ label, text }) => {\n return {\n '@type': 'Question',\n name: label,\n acceptedAnswer: {\n '@type': 'Answer',\n text: text,\n },\n };\n }),\n }}\n />\n );\n};\n\nexport type StructuredEmploymentType =\n | 'FULL_TIME'\n | 'PART_TIME'\n | 'CONTRACTOR'\n | 'TEMPORARY'\n | 'INTERN'\n | 'VOLUNTEER'\n | 'PER_DIEM'\n | 'OTHER';\n\nexport const generateJob = ({\n jobTitle,\n jobDesc,\n organization,\n directApply,\n locations,\n employmentTypes,\n datePosted,\n}: {\n jobTitle: string;\n jobDesc?: string;\n organization?: OrganizationData;\n directApply?: boolean;\n locations?: JobLocation[];\n employmentTypes?: StructuredEmploymentType[];\n datePosted?: Date;\n}) => {\n return (\n <JsonLd<JobPosting>\n item={{\n '@context': 'https://schema.org',\n '@type': 'JobPosting',\n title: jobTitle,\n description: jobDesc,\n datePosted: datePosted?.toISOString(),\n employmentType: employmentTypes?.filter(distinct),\n hiringOrganization: {\n '@type': 'Organization',\n name: organization?.name,\n url: organization?.url\n ? encodeURIComponent(organization?.url)\n : '',\n logo: organization?.logo,\n telephone: organization?.telephone,\n email: organization?.email,\n address: organization?.address?.streetAddress\n ? {\n '@type': 'PostalAddress',\n streetAddress:\n organization?.address?.streetAddress,\n addressLocality:\n organization?.address?.addressLocality,\n postalCode: organization?.address?.postalCode,\n addressCountry:\n organization?.address?.addressCountry,\n }\n : undefined,\n },\n jobLocation: locations?.map<Place>((loc) => ({\n '@type': 'Place',\n address: {\n '@type': 'PostalAddress',\n addressLocality: loc.addressLocality || loc.name,\n streetAddress: loc.streetAddress,\n addressRegion: loc.addressRegion,\n postalCode: loc.postalCode,\n addressCountry: loc.addressCountry,\n },\n })),\n directApply: directApply,\n }}\n />\n );\n};\n\nexport interface JsonLdPriceListItem {\n name?: string;\n description?: string;\n price?: string;\n currency?: string;\n url?: string;\n priceValidUntil?: string;\n}\n\nexport interface JsonLdPriceListProps {\n type: 'service' | 'product';\n items?: JsonLdPriceListItem[];\n name?: string;\n}\n\nexport const generatePriceList = (props?: JsonLdPriceListProps) => {\n if (!props || !isValidArray(props.items, false)) return null;\n\n return (\n <JsonLd<ItemList>\n item={{\n '@context': 'https://schema.org',\n '@type': 'ItemList',\n name: props.name,\n itemListElement: props.items?.map((item) => {\n return {\n '@type': 'ListItem',\n item: {\n '@type':\n props.type === 'service'\n ? 'Service'\n : 'Product',\n name: item.name,\n description: item.description,\n offers: {\n '@type': 'Offer',\n url: item.url,\n price: item.price,\n priceCurrency: item.currency || 'EUR',\n priceValidUntil: item.priceValidUntil,\n },\n },\n };\n }),\n }}\n />\n );\n};\n"],"names":["distinct","value","index","array","indexOf","items","React","createElement","JsonLd","item","mainEntity","map","_a","name","label","acceptedAnswer","text","jobTitle","jobDesc","organization","directApply","locations","employmentTypes","datePosted","title","description","toISOString","employmentType","filter","hiringOrganization","url","encodeURIComponent","logo","telephone","email","address","_b","streetAddress","_c","addressLocality","_d","postalCode","_e","addressCountry","_f","undefined","jobLocation","loc","addressRegion","i","position","contact","companyName","image","key","geo","latitude","longitude","street","city","country","concat","props","isValidArray","itemListElement","type","offers","price","priceCurrency","currency","priceValidUntil"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=require("./ButtonLeft-7e1f216a.js"),n=require("react"),t=require("styled-components"),i=require("react-dom/server");function r(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o,a,l=r(n),s=function(e,n){void 0===n&&(n=!0);var t="";if(!e)return"";if(t="string"==typeof e?e:i.renderToString(e),!n)return"data:image/svg+xml;utf8,".concat(t);if("undefined"!=typeof window)return"data:image/svg+xml;base64,".concat(btoa(t));var r=Buffer.from(t).toString("base64");return"data:image/svg+xml;base64,".concat(r)},c={medium:"(min-width: 40em)",semilarge:"(min-width: 52em)",large:"(min-width: 64em)",xlarge:"(min-width: 90em)",xxlarge:"(min-width: 150em)"},g={nudge:8,spacer:32,wrapperSmall:1e3,wrapper:1440,wrapperLarge:2400},d={text:{default:"#333333",inverted:"#FAFAFA",disabled:"#B8B8B8",error:"#FF2D2D",errorInverted:"#FF2D2D",heading:"#333333",headingInverted:"#FFFFFF",copy:"#333333",copyInverted:"#FFFFFF",subtile:"#878787",subtileInverted:"#878787"},sectionBg:{light:"transparent",medium:"#F0F0F0",dark:"#000000"},elementBg:{light:"#FFFFFF",lightHover:"#FFDEDE",medium:"#DBDBDB",mediumHover:"#E0B5B5",dark:"#393434",darkHover:"#653434"},primary:{default:"#7749F8",inverted:"#A88AFB",hover:"#42278F",invertedHover:"#D2C1FF"},secondary:{default:"#6C757D",inverted:"#C5BEE0",hover:"#3b4045",invertedHover:"#BCB7C9"},error:"#FF2D2D",errorInverted:"#FF2D2D"},u={family:'"Roboto", Roboto-fallback, Helvetica, sans-serif',weight:"400",style:"normal",lineHeight:"1.5",letterSpacing:"0",size:[16],textTransform:"",color:d.text.copy,colorInverted:d.text.copyInverted},m={family:'"Roboto", Roboto-fallback, Helvetica, sans-serif',weight:"700",style:"normal",lineHeight:"1.17",letterSpacing:"0",size:[56],color:d.text.heading,colorInverted:d.text.headingInverted},p={copy:{small:e.__assign(e.__assign({},u),{lineHeight:"1.42",size:[14]}),medium:e.__assign(e.__assign({},u),{lineHeight:"1.5",size:[16]}),big:e.__assign(e.__assign({},u),{lineHeight:"1.2",size:[20]})},"copy-i":{small:e.__assign(e.__assign({},u),{style:"italic",lineHeight:"1.42",size:[14]}),medium:e.__assign(e.__assign({},u),{style:"italic",lineHeight:"1.5",size:[16]}),big:e.__assign(e.__assign({},u),{style:"italic",lineHeight:"1.2",size:[20]})},"copy-b":{small:e.__assign(e.__assign({},u),{weight:"700",lineHeight:"1.42",size:[14]}),medium:e.__assign(e.__assign({},u),{weight:"700",lineHeight:"1.5",size:[16]}),big:e.__assign(e.__assign({},u),{weight:"700",lineHeight:"1.2",size:[20]})},super:e.__assign(e.__assign({},m),{lineHeight:"1.43",size:[16]}),"heading-1":m,"heading-2":e.__assign(e.__assign({},m),{size:[40],lineHeight:"1.17"}),"heading-3":e.__assign(e.__assign({},m),{size:[32],lineHeight:"1.17"}),"heading-4":e.__assign(e.__assign({},m),{size:[24],lineHeight:"1.17"}),callout:{small:e.__assign(e.__assign({},m),{lineHeight:"1.5",weight:"300",size:[32]}),medium:e.__assign(e.__assign({},m),{weight:"300",lineHeight:"1.17",size:[72]}),mediumBold:e.__assign(e.__assign({},m),{weight:"700",lineHeight:"1.17",size:[72]}),big:e.__assign(e.__assign({},m),{weight:"300",lineHeight:"1.17",size:[76]})},link:{color:"#2441DA",colorHover:"#122278",colorInverted:"#fff",colorHoverInverted:"#C8C8C8"},navigation:{featured:e.__assign(e.__assign({},u),{weight:"700",lineHeight:"1.5",size:[16]}),main:e.__assign(e.__assign({},u),{weight:"700",lineHeight:"1.5",size:[16]}),sub:e.__assign(e.__assign({},u),{weight:"700",lineHeight:"1.5",size:[16]}),secondary:e.__assign(e.__assign({},u),{weight:"700",lineHeight:"1.5",size:[16]})}},_=function(e){if("copy"===e.type||"copy-b"===e.type||"copy-i"===e.type){if("medium"===e.size)return.8;if("small"===e.size)return.7;if("big"===e.size)return.9}return.8},f={sections:{seperation:{forcePadding:!1,padding:{default:[5*g.nudge,10*g.nudge],stackable:[g.spacer]},margin:{default:[5*g.nudge,10*g.nudge],stackable:[g.spacer]}},edgeRadius:null,imageTextGradient:"\n linear-gradient(\n 0deg,\n rgba(0, 0, 0, 0.6) 0%,\n rgba(0, 0, 0, 0.4) 30%,\n rgba(0, 0, 0, 0.1) 60%,\n rgba(0, 0, 0, 0) 100%\n );\n ",imageTextGradientCentered:"linear-gradient(\n 0deg,\n rgba(0, 0, 0, 0.4) 0%,\n rgba(0, 0, 0, 0.3) 30%,\n rgba(0, 0, 0, 0.2) 60%,\n rgba(0, 0, 0, 0.15) 100%\n );",imagePlaceholderBg:{default:"#e2e2e2",inverted:"#1e1c1f"},newsDateFormat:function(){return"dd.mm.yy"},newsTimeFormat:function(){return"hh:mm"},newsLocaleKey:"de",eventDateFormat:function(){return"ddd, dd.mm.yyyy"},eventTimeFormat:function(){return"hh:mm"},eventTimespanFormat:function(){return"<START><SEP><END> Uhr"},eventLocaleKey:"de",datepickerLocaleKey:"de",datepickerDateFormat:"dd.MM.yyyy",newsFilterName:"newsFilter",eventFilterName:"eventFilter",jobFilterName:"jobFilter",poiFilterName:"poiFilter",poiFactFilterName:"poiFactFilter"},cookie:{name:"cookie-consent-v2",lifetime:365,types:{essentials:{isAccepted:!0,isEditable:!1,label:"Essentielle Funktionen"},analytics:{isAccepted:!1,isEditable:!0,label:"Analyse & Marketing"},functionals:{isAccepted:!1,isEditable:!0,label:"Funktionelle Erweiterungen"}},consentDateFormat:function(){return"dd.mm.yy"},consentTimeFormat:function(){return"hh:mm"},consentLocaleKey:"de",consentStatusFormat:"Cookie aktualisiert am <DATE> um <TIME> Uhr",videoCookieTypeRestrictions:["functionals"]},navigation:{navBar:{topHeight:{small:[0,40],large:[30,40]},mainHeight:{small:[80,90],large:[100,120]},bottomHeight:{small:[0,40],large:[30,40]}},menu:{headerHeight:{small:[210],large:[210]}}},icons:{linkIcons:[{iconUrl:function(n){return s(l.default.createElement(e.BoxArrowUpRight,{iconColor:n?p.link.colorInverted:p.link.color}))},patterns:[],isExternal:!0,scale:_},{iconUrl:function(n){return s(l.default.createElement(e.Mail,{iconColor:n?p.link.colorInverted:p.link.color}))},patterns:["mailto:"],scale:_},{iconUrl:function(n){return s(l.default.createElement(e.Phone,{iconColor:n?p.link.colorInverted:p.link.color}))},patterns:["tel:"],scale:_},{iconUrl:function(n){return s(l.default.createElement(e.Pdf,{iconColor:n?p.link.colorInverted:p.link.color}))},patterns:[".pdf"],scale:_},{iconUrl:function(n){return s(l.default.createElement(e.Word,{iconColor:n?p.link.colorInverted:p.link.color}))},patterns:[".docx"],scale:_},{iconUrl:function(n){return s(l.default.createElement(e.Excel,{iconColor:n?p.link.colorInverted:p.link.color}))},patterns:[".xlsx"],scale:_},{iconUrl:function(n){return s(l.default.createElement(e.PowerPoint,{iconColor:n?p.link.colorInverted:p.link.color}))},patterns:[".pptx"],scale:_},{iconUrl:function(n){return s(l.default.createElement(e.Image,{iconColor:n?p.link.colorInverted:p.link.color}))},patterns:[".jpg",".jpeg",".png",".svg"],scale:_},{iconUrl:function(n){return s(l.default.createElement(e.Zip,{iconColor:n?p.link.colorInverted:p.link.color}))},patterns:[".zip",".tar"],scale:_}]}},h={colors:e.__assign({},d),fonts:{types:e.__assign({},p)},globals:e.__assign({},f)};exports.baseTheme=h,exports.getColors=function(e){return e&&e.colors?e.colors:h.colors},exports.getFonts=function(e){var n;return e&&(null===(n=e.fonts)||void 0===n?void 0:n.types)?e.fonts.types:h.fonts.types},exports.getGlobals=function(e){return e&&e.globals?e.globals:h.globals},exports.getSVGDataImg=s,exports.getTheme=function(e){return e&&e.colors&&e.fonts&&e.globals?e:h},exports.mq=c,exports.spacings=g,exports.styleTextColor=function(n,i){return i?t.css(o||(o=e.__makeTemplateObject(["\n color: ",";\n\n @supports (-webkit-text-stroke: thin) {\n padding-top: 2px;\n background: ",";\n background-clip: text;\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n }\n "],["\n color: ",";\n\n @supports (-webkit-text-stroke: thin) {\n padding-top: 2px;\n background: ",";\n background-clip: text;\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n }\n "])),n,i):t.css(a||(a=e.__makeTemplateObject(["\n color: ",";\n "],["\n color: ",";\n "])),n)},exports.withRange=function(e,n){if(!n)return"";var t=e[0],i=e[1];return void 0!==i?"\n ".concat(n,": ").concat(t,"px;\n ").concat(n,": ").concat(function(e){return"calc(".concat(e[0],"px + (").concat(e[1]," - ").concat(e[0],") * ((100vw - 300px) / (").concat(g.wrapper," - 320)));")}(e),";\n\n @media ").concat(c.xlarge," {\n ").concat(n,": ").concat(i,"px;\n }\n "):"\n ".concat(n,": ").concat(t,"px;\n ")};
|
|
2
|
+
//# sourceMappingURL=styles-271afb02.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles-271afb02.js","sources":["../src/utils/dataURI.ts","../src/utils/styles.tsx"],"sourcesContent":["import React from 'react';\nimport { renderToString } from 'react-dom/server';\n\nexport const getSVGDataImg = (\n svg: React.ReactElement,\n encode = true\n): string => {\n let svgString = '';\n if (!svg) return '';\n\n if (typeof svg === 'string') {\n svgString = svg;\n } else {\n svgString = renderToString(svg);\n }\n\n if (!encode) return `data:image/svg+xml;utf8,${svgString}`;\n\n if (typeof window !== 'undefined') {\n return `data:image/svg+xml;base64,${btoa(svgString)}`;\n } else {\n const baseString = Buffer.from(svgString).toString('base64');\n return `data:image/svg+xml;base64,${baseString}`;\n }\n};\n","/* eslint-disable react/display-name */\nimport * as Icons from 'components/base/icons/Icons';\nimport React from 'react';\n\nimport { css, DefaultTheme } from 'styled-components';\nimport { getSVGDataImg as getSVGData } from 'utils/dataURI';\nimport { CookieTypes } from './cookie-consent/useCookieConsent';\nimport { XOR } from './types';\n\nexport type MediaQueryType =\n | 'small'\n | 'medium'\n | 'semilarge'\n | 'large'\n | 'xlarge'\n | 'xxlarge';\n\nexport const mq: { [key in Exclude<MediaQueryType, 'small'>]: string } = {\n medium: '(min-width: 40em)', // 640 px\n semilarge: '(min-width: 52em)', // 832 px\n large: '(min-width: 64em)', // 1024 px\n xlarge: '(min-width: 90em)', // 1440 px\n xxlarge: '(min-width: 150em)', // 2400 px\n};\n\nexport const spacings = {\n nudge: 8,\n spacer: 32,\n wrapperSmall: 1000,\n wrapper: 1440,\n wrapperLarge: 2400,\n};\n\n/***** Range Helper *****/\nexport const getSizeByRange = (range: [number, number]): string =>\n `calc(${range[0]}px + (${range[1]} - ${range[0]}) * ((100vw - 300px) / (${spacings.wrapper} - 320)));`;\n\nexport const withRange = (range: [number, number?], property: string) => {\n if (!property) return '';\n const min = range[0];\n const max = range[1];\n\n if (max !== undefined) {\n return `\n ${property}: ${min}px;\n ${property}: ${getSizeByRange(range as [number, number])};\n\n @media ${mq.xlarge} {\n ${property}: ${max}px;\n }\n `;\n } else {\n return `\n ${property}: ${min}px;\n `;\n }\n};\n\n/**\n * Generate css attributes to style text color with plain color or gradient\n * @param fallbackColor\n * @param gradient\n */\nexport const styleTextColor = (fallbackColor?: string, gradient?: string) => {\n if (gradient) {\n return css`\n color: ${fallbackColor};\n\n @supports (-webkit-text-stroke: thin) {\n padding-top: 2px;\n background: ${gradient};\n background-clip: text;\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n }\n `;\n } else {\n return css`\n color: ${fallbackColor};\n `;\n }\n};\n\n/***** Color Types *****/\ninterface ColorOptions {\n default: string;\n inverted: string;\n hover: string;\n invertedHover: string;\n}\n\nexport type ColorOptionsType = keyof ColorOptions;\n\nexport interface Colors {\n text: {\n default: string;\n inverted: string;\n disabled: string;\n error: string;\n errorInverted: string;\n heading: string;\n headingInverted: string;\n copy: string;\n copyInverted: string;\n subtile: string;\n subtileInverted: string;\n };\n sectionBg: {\n light: string;\n medium: string;\n dark: string;\n };\n elementBg: {\n light: string;\n lightHover: string;\n medium: string;\n mediumHover: string;\n dark: string;\n darkHover: string;\n };\n primary: ColorOptions;\n secondary: ColorOptions;\n error: string;\n errorInverted: string;\n}\n\nexport type ColorType = keyof Colors;\n\n/***** Font Types *****/\nexport interface FontProps {\n family: string;\n weight?: string;\n style?: string;\n lineHeight?: string;\n letterSpacing?: string;\n size: [number, number?];\n textTransform?: string;\n textDecoration?: string;\n color?: string;\n colorInverted?: string;\n colorGradient?: string;\n colorGradientInverted?: string;\n}\n\nexport type FontPropsType = keyof FontProps;\n\nexport interface FontOptions {\n small: FontProps;\n medium: FontProps;\n big: FontProps;\n}\n\nexport interface CalloutFontOptions {\n small: FontProps;\n medium: FontProps;\n mediumBold: FontProps;\n big: FontProps;\n}\n\nexport type FontOptionType = keyof FontOptions;\nexport type CalloutFontOptionType = keyof CalloutFontOptions;\n\nexport interface Fonts {\n copy: FontOptions;\n 'copy-i': FontOptions;\n 'copy-b': FontOptions;\n super: FontProps;\n 'heading-1': FontProps;\n 'heading-2': FontProps;\n 'heading-3': FontProps;\n 'heading-4': FontProps;\n callout: CalloutFontOptions;\n link: {\n color: string;\n colorInverted: string;\n colorHover: string;\n colorHoverInverted: string;\n textTransform?: string;\n textDecoration?: string;\n };\n navigation: {\n featured: FontProps;\n main: FontProps;\n sub: FontProps;\n secondary: FontProps;\n };\n}\n\nexport type FontType = keyof Fonts;\n\n/**\n * Base font styles for all font types\n */\nexport type FontBase = FontProps;\n\n/***** Colors *****/\nconst defaultColors: Colors = {\n text: {\n default: '#333333',\n inverted: '#FAFAFA',\n disabled: '#B8B8B8',\n error: '#FF2D2D',\n errorInverted: '#FF2D2D',\n heading: '#333333',\n headingInverted: '#FFFFFF',\n copy: '#333333',\n copyInverted: '#FFFFFF',\n subtile: '#878787',\n subtileInverted: '#878787',\n },\n sectionBg: {\n light: 'transparent',\n medium: '#F0F0F0',\n dark: '#000000',\n },\n elementBg: {\n light: '#FFFFFF',\n lightHover: '#FFDEDE',\n medium: '#DBDBDB',\n mediumHover: '#E0B5B5',\n dark: '#393434',\n darkHover: '#653434',\n },\n primary: {\n default: '#7749F8',\n inverted: '#A88AFB',\n hover: '#42278F',\n invertedHover: '#D2C1FF',\n },\n secondary: {\n default: '#6C757D',\n inverted: '#C5BEE0',\n hover: '#3b4045',\n invertedHover: '#BCB7C9',\n },\n error: '#FF2D2D',\n errorInverted: '#FF2D2D',\n};\n\n/***** Fonts *****/\nconst copyBase: FontProps = {\n family: '\"Roboto\", Roboto-fallback, Helvetica, sans-serif',\n weight: '400',\n style: 'normal',\n lineHeight: '1.5',\n letterSpacing: '0',\n size: [16],\n textTransform: '',\n color: defaultColors.text.copy,\n colorInverted: defaultColors.text.copyInverted,\n};\n\nconst headingBase: FontProps = {\n family: '\"Roboto\", Roboto-fallback, Helvetica, sans-serif',\n weight: '700',\n style: 'normal',\n lineHeight: '1.17',\n letterSpacing: '0',\n size: [56],\n color: defaultColors.text.heading,\n colorInverted: defaultColors.text.headingInverted,\n};\n\nconst defaultFonts: Fonts = {\n copy: {\n small: {\n ...copyBase,\n lineHeight: '1.42',\n size: [14],\n },\n medium: {\n ...copyBase,\n lineHeight: '1.5',\n size: [16],\n },\n big: {\n ...copyBase,\n lineHeight: '1.2',\n size: [20],\n },\n },\n 'copy-i': {\n small: {\n ...copyBase,\n style: 'italic',\n lineHeight: '1.42',\n size: [14],\n },\n medium: {\n ...copyBase,\n style: 'italic',\n lineHeight: '1.5',\n size: [16],\n },\n big: {\n ...copyBase,\n style: 'italic',\n lineHeight: '1.2',\n size: [20],\n },\n },\n 'copy-b': {\n small: {\n ...copyBase,\n weight: '700',\n lineHeight: '1.42',\n size: [14],\n },\n medium: {\n ...copyBase,\n weight: '700',\n lineHeight: '1.5',\n size: [16],\n },\n big: {\n ...copyBase,\n weight: '700',\n lineHeight: '1.2',\n size: [20],\n },\n },\n super: {\n ...headingBase,\n lineHeight: '1.43',\n size: [16],\n },\n 'heading-1': headingBase,\n 'heading-2': {\n ...headingBase,\n size: [40],\n lineHeight: '1.17',\n },\n 'heading-3': {\n ...headingBase,\n size: [32],\n lineHeight: '1.17',\n },\n 'heading-4': {\n ...headingBase,\n size: [24],\n lineHeight: '1.17',\n },\n callout: {\n small: {\n ...headingBase,\n lineHeight: '1.5',\n weight: '300',\n size: [32],\n },\n medium: {\n ...headingBase,\n weight: '300',\n lineHeight: '1.17',\n size: [72],\n },\n mediumBold: {\n ...headingBase,\n weight: '700',\n lineHeight: '1.17',\n size: [72],\n },\n big: {\n ...headingBase,\n weight: '300',\n lineHeight: '1.17',\n size: [76],\n },\n },\n link: {\n color: '#2441DA',\n colorHover: '#122278',\n colorInverted: '#fff',\n colorHoverInverted: '#C8C8C8',\n },\n navigation: {\n featured: {\n ...copyBase,\n weight: '700',\n lineHeight: '1.5',\n size: [16],\n },\n main: {\n ...copyBase,\n weight: '700',\n lineHeight: '1.5',\n size: [16],\n },\n sub: {\n ...copyBase,\n weight: '700',\n lineHeight: '1.5',\n size: [16],\n },\n secondary: {\n ...copyBase,\n weight: '700',\n lineHeight: '1.5',\n size: [16],\n },\n },\n};\n\n/***** Global Settings *****/\nexport type NavBarHeights = {\n small: number;\n large: number;\n};\n\ninterface LinkIcon {\n isExternal?: boolean;\n /** Patterns of Href value to show this icon (e.g. .svg, .png) */\n patterns: string[];\n /** Icon scale factor. 1 is default */\n scale?: (props: { type?: keyof Fonts; size?: FontOptionType }) => number;\n /** Set vertical alignment of icon in text */\n vAlign?:\n | 'bottom'\n | 'baseline'\n | 'middle'\n | 'top'\n | 'text-top'\n | 'text-bottom'\n | 'super'\n | 'sub';\n}\n\nexport interface LinkUrlIcon extends LinkIcon {\n // icon (e.g. URL, base64 or icon font char)\n iconUrl: (isInverted?: boolean) => string;\n}\n\nexport interface LinkFontIcon extends LinkIcon {\n /** Define font family for icon font */\n iconFont: string;\n /** Define icon font character */\n iconChar: string;\n}\n\nexport interface GlobalSettings {\n sections: {\n /** Paddings and Margins for seperating each section */\n seperation: {\n forcePadding: boolean;\n padding: {\n default: [number, number?];\n stackable: [number, number?];\n };\n margin: {\n default: [number, number?];\n stackable: [number, number?];\n };\n };\n\n /** Radius of image and card edges */\n edgeRadius: string | null;\n\n /** Customnize gradient for all text on image background gradients */\n imageTextGradient: string;\n\n /** Customnize gradient for all text on image background gradients if text is centered */\n imageTextGradientCentered?: string;\n\n /** Show placeholder background unitl image has been loaded */\n imagePlaceholderBg: {\n default: string;\n inverted: string;\n };\n\n /** Date and Time Formats for all news sections */\n newsDateFormat: (date: Date) => string;\n newsTimeFormat: (date: Date) => string;\n newsLocaleKey: 'de' | 'en';\n\n /** Date and Time Formats for all event sections */\n eventDateFormat: (date: Date) => string;\n eventTimeFormat: (date: Date) => string;\n eventTimespanFormat: (start: Date, duration?: number) => string;\n eventLocaleKey: 'de' | 'en';\n\n /** Date and Time Formats for Datepickers */\n datepickerLocaleKey: 'de' | 'en';\n datepickerDateFormat: string;\n\n /** Filters */\n newsFilterName: string;\n eventFilterName: string;\n jobFilterName: string;\n poiFilterName: string;\n poiFactFilterName: string;\n };\n cookie: {\n name: string;\n types: CookieTypes;\n lifetime: number;\n\n /** Date and Time Formats for cookie consent */\n consentDateFormat: (date: Date) => string;\n consentTimeFormat: (date: Date) => string;\n consentLocaleKey: 'de' | 'en';\n consentStatusFormat: string;\n\n videoCookieTypeRestrictions: string[];\n };\n navigation: {\n /** Settings of top navigation bar */\n navBar: {\n /**\n * Heights of top bar.\n * Array values are like: [mobile, desktop]\n * Top navbar is hidden if value equal 0\n */\n topHeight: {\n small: [number, number?];\n large: [number, number?];\n };\n /**\n * Heights of main bar.\n * Array values are like: [mobile, desktop]\n */\n mainHeight: {\n small: [number, number?];\n large: [number, number?];\n };\n /**\n * Heights of bottom bar.\n * Array values are like: [mobile, desktop]\n */\n bottomHeight: {\n small: [number, number?];\n large: [number, number?];\n };\n };\n menu: {\n /**\n * Heights of menu header.\n * Array values are like: [mobile, desktop]\n * Menu header is hidden if value equal 0\n */\n headerHeight: {\n small: [number, number?];\n large: [number, number?];\n };\n };\n };\n icons: {\n /** Icon setup for link/download lists */\n // linkIcons: {\n // default: (isInverted?: boolean) => React.ReactNode;\n // variations: Array<LinkIcon>;\n // };\n linkIcons: Array<XOR<LinkUrlIcon, LinkFontIcon>>;\n };\n}\n\nconst getLinkIconScale = (props: {\n type?: keyof Fonts;\n size?: FontOptionType;\n}) => {\n if (\n props.type === 'copy' ||\n props.type === 'copy-b' ||\n props.type === 'copy-i'\n ) {\n if (props.size === 'medium') return 0.8;\n if (props.size === 'small') return 0.7;\n if (props.size === 'big') return 0.9;\n }\n return 0.8;\n};\n\nconst defaultGlobalSettings: GlobalSettings = {\n sections: {\n seperation: {\n forcePadding: false,\n padding: {\n default: [spacings.nudge * 5, spacings.nudge * 10],\n stackable: [spacings.spacer],\n },\n margin: {\n default: [spacings.nudge * 5, spacings.nudge * 10],\n stackable: [spacings.spacer],\n },\n },\n edgeRadius: null,\n imageTextGradient: `\n linear-gradient(\n 0deg,\n rgba(0, 0, 0, 0.6) 0%,\n rgba(0, 0, 0, 0.4) 30%,\n rgba(0, 0, 0, 0.1) 60%,\n rgba(0, 0, 0, 0) 100%\n );\n `,\n imageTextGradientCentered: `linear-gradient(\n 0deg,\n rgba(0, 0, 0, 0.4) 0%,\n rgba(0, 0, 0, 0.3) 30%,\n rgba(0, 0, 0, 0.2) 60%,\n rgba(0, 0, 0, 0.15) 100%\n );`,\n imagePlaceholderBg: {\n default: '#e2e2e2',\n inverted: '#1e1c1f',\n },\n newsDateFormat: () => 'dd.mm.yy',\n newsTimeFormat: () => 'hh:mm',\n newsLocaleKey: 'de',\n eventDateFormat: () => 'ddd, dd.mm.yyyy',\n eventTimeFormat: () => 'hh:mm',\n eventTimespanFormat: () => '<START><SEP><END> Uhr',\n eventLocaleKey: 'de',\n datepickerLocaleKey: 'de',\n datepickerDateFormat: 'dd.MM.yyyy',\n\n newsFilterName: 'newsFilter',\n eventFilterName: 'eventFilter',\n jobFilterName: 'jobFilter',\n poiFilterName: 'poiFilter',\n poiFactFilterName: 'poiFactFilter',\n },\n cookie: {\n name: 'cookie-consent-v2',\n lifetime: 365,\n types: {\n essentials: {\n isAccepted: true,\n isEditable: false,\n label: 'Essentielle Funktionen',\n },\n analytics: {\n isAccepted: false,\n isEditable: true,\n label: 'Analyse & Marketing',\n },\n functionals: {\n isAccepted: false,\n isEditable: true,\n label: 'Funktionelle Erweiterungen',\n },\n },\n consentDateFormat: () => 'dd.mm.yy',\n consentTimeFormat: () => 'hh:mm',\n consentLocaleKey: 'de',\n consentStatusFormat: 'Cookie aktualisiert am <DATE> um <TIME> Uhr',\n\n videoCookieTypeRestrictions: ['functionals'],\n },\n navigation: {\n navBar: {\n topHeight: {\n small: [0, 40],\n large: [30, 40],\n },\n mainHeight: {\n small: [80, 90],\n large: [100, 120],\n },\n bottomHeight: {\n small: [0, 40],\n large: [30, 40],\n },\n },\n menu: {\n headerHeight: {\n small: [210],\n large: [210],\n },\n },\n },\n icons: {\n linkIcons: [\n {\n iconUrl: (isInverted) =>\n getSVGData(\n <Icons.BoxArrowUpRight\n iconColor={\n isInverted\n ? defaultFonts.link.colorInverted\n : defaultFonts.link.color\n }\n />\n ),\n patterns: [], // default link icon\n isExternal: true,\n scale: getLinkIconScale,\n },\n {\n iconUrl: (isInverted) =>\n getSVGData(\n <Icons.Mail\n iconColor={\n isInverted\n ? defaultFonts.link.colorInverted\n : defaultFonts.link.color\n }\n />\n ),\n patterns: ['mailto:'],\n scale: getLinkIconScale,\n },\n {\n iconUrl: (isInverted) =>\n getSVGData(\n <Icons.Phone\n iconColor={\n isInverted\n ? defaultFonts.link.colorInverted\n : defaultFonts.link.color\n }\n />\n ),\n patterns: ['tel:'],\n scale: getLinkIconScale,\n },\n {\n iconUrl: (isInverted) =>\n getSVGData(\n <Icons.Pdf\n iconColor={\n isInverted\n ? defaultFonts.link.colorInverted\n : defaultFonts.link.color\n }\n />\n ),\n patterns: ['.pdf'],\n scale: getLinkIconScale,\n },\n {\n iconUrl: (isInverted) =>\n getSVGData(\n <Icons.Word\n iconColor={\n isInverted\n ? defaultFonts.link.colorInverted\n : defaultFonts.link.color\n }\n />\n ),\n patterns: ['.docx'],\n scale: getLinkIconScale,\n },\n {\n iconUrl: (isInverted) =>\n getSVGData(\n <Icons.Excel\n iconColor={\n isInverted\n ? defaultFonts.link.colorInverted\n : defaultFonts.link.color\n }\n />\n ),\n patterns: ['.xlsx'],\n scale: getLinkIconScale,\n },\n {\n iconUrl: (isInverted) =>\n getSVGData(\n <Icons.PowerPoint\n iconColor={\n isInverted\n ? defaultFonts.link.colorInverted\n : defaultFonts.link.color\n }\n />\n ),\n patterns: ['.pptx'],\n scale: getLinkIconScale,\n },\n {\n iconUrl: (isInverted) =>\n getSVGData(\n <Icons.Image\n iconColor={\n isInverted\n ? defaultFonts.link.colorInverted\n : defaultFonts.link.color\n }\n />\n ),\n patterns: ['.jpg', '.jpeg', '.png', '.svg'],\n scale: getLinkIconScale,\n },\n {\n iconUrl: (isInverted) =>\n getSVGData(\n <Icons.Zip\n iconColor={\n isInverted\n ? defaultFonts.link.colorInverted\n : defaultFonts.link.color\n }\n />\n ),\n patterns: ['.zip', '.tar'],\n scale: getLinkIconScale,\n },\n ],\n },\n};\n\n/***** Theme Helper *****/\nexport const baseTheme: DefaultTheme = {\n colors: { ...defaultColors },\n fonts: { types: { ...defaultFonts } },\n globals: { ...defaultGlobalSettings },\n};\n\nexport const getTheme = (theme?: DefaultTheme) => {\n return theme && theme.colors && theme.fonts && theme.globals\n ? theme\n : baseTheme;\n};\n\nexport const getColors = (theme?: DefaultTheme) => {\n return theme && theme.colors ? theme.colors : baseTheme.colors;\n};\n\nexport const getFonts = (theme?: DefaultTheme) => {\n return theme && theme.fonts?.types\n ? theme.fonts.types\n : baseTheme.fonts.types;\n};\n\nexport const getGlobals = (theme?: DefaultTheme) => {\n return theme && theme.globals ? theme.globals : baseTheme.globals;\n};\n"],"names":["getSVGDataImg","svg","encode","svgString","renderToString","concat","window","btoa","baseString","Buffer","from","toString","mq","medium","semilarge","large","xlarge","xxlarge","spacings","nudge","spacer","wrapperSmall","wrapper","wrapperLarge","defaultColors","text","default","inverted","disabled","error","errorInverted","heading","headingInverted","copy","copyInverted","subtile","subtileInverted","sectionBg","light","dark","elementBg","lightHover","mediumHover","darkHover","primary","hover","invertedHover","secondary","copyBase","family","weight","style","lineHeight","letterSpacing","size","textTransform","color","colorInverted","headingBase","defaultFonts","small","__assign","big","super","callout","mediumBold","link","colorHover","colorHoverInverted","navigation","featured","main","sub","getLinkIconScale","props","type","defaultGlobalSettings","sections","seperation","forcePadding","padding","stackable","margin","edgeRadius","imageTextGradient","imageTextGradientCentered","imagePlaceholderBg","newsDateFormat","newsTimeFormat","newsLocaleKey","eventDateFormat","eventTimeFormat","eventTimespanFormat","eventLocaleKey","datepickerLocaleKey","datepickerDateFormat","newsFilterName","eventFilterName","jobFilterName","poiFilterName","poiFactFilterName","cookie","name","lifetime","types","essentials","isAccepted","isEditable","label","analytics","functionals","consentDateFormat","consentTimeFormat","consentLocaleKey","consentStatusFormat","videoCookieTypeRestrictions","navBar","topHeight","mainHeight","bottomHeight","menu","headerHeight","icons","linkIcons","iconUrl","isInverted","getSVGData","React","createElement","Icons","iconColor","patterns","isExternal","scale","baseTheme","colors","fonts","globals","theme","_a","fallbackColor","gradient","css","templateObject_1","__makeTemplateObject","templateObject_2","range","property","min","max","undefined","getSizeByRange"],"mappings":"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"}
|
package/cjs/typography.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./Copy-
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./Copy-1b9e33ba.js"),r=require("./Callout-86a61040.js"),t=require("./Link-6e728957.js");require("./ButtonLeft-7e1f216a.js"),require("react"),require("styled-components"),require("./clamp-bd21d587.js"),require("./LibThemeProvider-878ed68c.js"),require("./styles-271afb02.js"),require("react-dom/server"),exports.Copy=e.Copy,exports.Heading=e.Heading,exports.copyStyle=e.copyStyle,exports.Callout=r.Callout,exports.Link=t.Link;
|
|
2
2
|
//# sourceMappingURL=typography.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var a=require("./concat-
|
|
2
|
-
//# sourceMappingURL=urlParams-
|
|
1
|
+
"use strict";var a=require("./concat-8bd71a50.js"),r="undefined"!=typeof window&&"URLSearchParams"in window,e=function(){var a={};if(!r)return a;var e=Object.fromEntries(new URLSearchParams(window.location.search));for(var n in e){var o=e[n];"string"==typeof o&&(o=decodeURIComponent(o)),a[n]=o}return a},n=function(r){if(r){var e=r.toString(),n=e?a.concat([location.pathname,e+location.hash],"?"):location.pathname+location.hash;window.history.replaceState({},"",n)}};exports.deleteUrlParam=function(a){if(r){var e=new URLSearchParams(window.location.search);e.delete(a),n(e)}},exports.getUrlParams=e,exports.setUrlParam=function(a,o){if(r&&("string"==typeof o||"number"==typeof o)){var t=e();t[a]=o.toString();var i=new URLSearchParams(window.location.search);for(var c in t)i.set(c,encodeURIComponent(t[c]));n(i)}};
|
|
2
|
+
//# sourceMappingURL=urlParams-c412d937.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"urlParams-
|
|
1
|
+
{"version":3,"file":"urlParams-c412d937.js","sources":["../src/utils/urlParams.ts"],"sourcesContent":["import { concat } from './concat';\n\nconst isSupported =\n typeof window !== 'undefined' && 'URLSearchParams' in window;\n\nexport const getUrlParams = () => {\n const obj: Record<string, string> = {};\n if (!isSupported) return obj;\n\n const paramsObj = Object.fromEntries(\n new URLSearchParams(window.location.search)\n );\n\n for (const param in paramsObj) {\n let value = paramsObj[param];\n if (typeof value === 'string') {\n value = decodeURIComponent(value);\n }\n obj[param] = value;\n }\n\n return obj;\n};\n\nexport const setUrlParam = (key: string, value: string | number) => {\n if (\n !isSupported ||\n (typeof value !== 'string' && typeof value !== 'number')\n ) {\n return;\n }\n\n const params = getUrlParams();\n params[key] = value.toString();\n\n const currentParams = new URLSearchParams(window.location.search);\n for (const param in params) {\n currentParams.set(param, encodeURIComponent(params[param]));\n }\n\n updateUrl(currentParams);\n};\n\nexport const deleteUrlParam = (key: string) => {\n if (!isSupported) return;\n const currentParams = new URLSearchParams(window.location.search);\n currentParams.delete(key);\n\n updateUrl(currentParams);\n};\n\nconst updateUrl = (params: URLSearchParams) => {\n if (!params) return;\n\n const queries = params.toString();\n const url = queries\n ? concat([location.pathname, queries + location.hash], '?')\n : location.pathname + location.hash;\n\n window.history.replaceState({}, '', url);\n};\n"],"names":["isSupported","window","getUrlParams","obj","paramsObj","Object","fromEntries","URLSearchParams","location","search","param","value","decodeURIComponent","updateUrl","params","queries","toString","url","concat","pathname","hash","history","replaceState","key","currentParams","delete","set","encodeURIComponent"],"mappings":"mDAEMA,EACgB,oBAAXC,QAA0B,oBAAqBA,OAE7CC,EAAe,WAClBC,IAAAA,EAA8B,GACpC,IAAKH,EAAa,OAAOG,EAEzB,IAAMC,EAAYC,OAAOC,YACrB,IAAIC,gBAAgBN,OAAOO,SAASC,SAGxC,IAAK,IAAMC,KAASN,EAAW,CAC3B,IAAIO,EAAQP,EAAUM,GACD,iBAAVC,IACPA,EAAQC,mBAAmBD,IAE/BR,EAAIO,GAASC,EAGjB,OAAOR,GA8BLU,EAAY,SAACC,GACX,GAACA,EAAD,CAEJ,IAAMC,EAAUD,EAAOE,WACjBC,EAAMF,EACNG,EAAAA,OAAO,CAACV,SAASW,SAAUJ,EAAUP,SAASY,MAAO,KACrDZ,SAASW,SAAWX,SAASY,KAEnCnB,OAAOoB,QAAQC,aAAa,GAAI,GAAIL,4BAhBV,SAACM,GACvB,GAACvB,EAAD,CACEwB,IAAAA,EAAgB,IAAIjB,gBAAgBN,OAAOO,SAASC,QAC1De,EAAcC,OAAOF,GAErBV,EAAUW,gDAxBa,SAACD,EAAaZ,GACrC,GACKX,IACiB,iBAAVW,GAAuC,iBAAVA,GAFzC,CAOMG,IAAAA,EAASZ,IACfY,EAAOS,GAAOZ,EAAMK,WAEdQ,IAAAA,EAAgB,IAAIjB,gBAAgBN,OAAOO,SAASC,QAC1D,IAAK,IAAMC,KAASI,EAChBU,EAAcE,IAAIhB,EAAOiB,mBAAmBb,EAAOJ,KAGvDG,EAAUW"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=require("./ButtonLeft-7e1f216a.js"),t=require("react");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=n(require("react-dom/server")),i=function(e){var t=e.name,n=e.data,o=e.days,i=void 0===o?-1:o,a=e.path,c=void 0===a?"/":a,r="".concat(t,"=");try{var s=JSON.stringify(n);r+=encodeURIComponent(s)}catch(e){console.warn("Cannot save data to cookie!")}if(r+="; path=".concat(c,";"),i>=0){var u=new Date;u.setTime(u.getTime()+24*i*60*60*1e3),r+=" expires=".concat(u.toUTCString(),";")}document.cookie=r},a=function(e){var t=void 0;try{var n=document.cookie.match("(^|;)\\s*"+e+"\\s*=\\s*([^;]+)"),o=n?n.pop():"";if(!(o=o?decodeURIComponent(o):""))return;t={name:e,data:JSON.parse(o)}}catch(e){console.warn(e)}return t},c={buttons:{class:"cookie-consent-button",attribute:"data-consent-button"},status:{class:"cookie-consent-status",attribute:"data-consent-status"},script:function(e){return"cookie-consent-script-".concat(e)}};exports.bindConsentButtons=function(e,t){void 0===t&&(t=[]);for(var n=document.querySelectorAll(t.join(", ")),o=0,i=n.length;o<i;o++)n[o].addEventListener("click",e)},exports.getCookie=a,exports.isUrlInWhitelist=function(e,t){void 0===t&&(t=[]);for(var n=!1,o=0;o<t.length;o++)if(e.indexOf(t[o])>-1){n=!0;break}return n},exports.selectors=c,exports.useCookieConsent=function(n,r,s){var u=t.useMemo((function(){return e.__assign({cookieName:"cookie-consent-v2",lifetime:365,initialCookieTypes:{essentials:{isEditable:!1,isAccepted:!0,label:"Essential functionalities"}}},n)}),[]),l=t.useState(u.initialCookieTypes),d=l[0],f=l[1],p=t.useCallback((function(){var e=a(u.cookieName),t="-";if(e&&e.data){var n=null==s?void 0:s({updatedAt:e.data.updatedAt,state:d});n&&(t=o.default.renderToStaticMarkup(n))}!function(e,t){if(void 0===t&&(t=[]),e)for(var n=document.querySelectorAll(t.join(", ")),o=0,i=n.length;o<i;o++)n[o].innerHTML=e}(t,["[".concat(c.status.attribute,"]"),".".concat(c.status.class)])}),[u.cookieName]);t.useEffect((function(){var t,n=a(u.cookieName);n&&(null===(t=n.data)||void 0===t?void 0:t.types)&&f((function(t){var o=e.__assign({},t);for(var i in o)n.data.types[i]&&(o[i].isAccepted=n.data.types[i]);return b(o),o})),p()}),[u,u.cookieName,p]);var m=function(e){var t={};if(!e)return t;for(var n in e)t[n]=e[n].isAccepted;return t},v=t.useCallback((function(){console.info("Accept all cookie types"),f((function(t){var n=e.__assign({},t);for(var o in n)n[o].isEditable&&(n[o].isAccepted=!0);return i({name:u.cookieName,data:{types:m(n),updatedAt:(new Date).getTime()},days:u.lifetime}),p(),b(n),n})),null==r||r()}),[r,u.cookieName,u.lifetime,p]),k=t.useCallback((function(){console.info("Decline all cookie types"),f((function(t){var n=e.__assign({},t);for(var o in n)n[o].isEditable&&(n[o].isAccepted=!1);return i({name:u.cookieName,data:{types:m(n),updatedAt:(new Date).getTime()},days:u.lifetime}),p(),b(n),n})),null==r||r()}),[r,u.cookieName,u.lifetime,p]),y=t.useCallback((function(){console.info("Accept selected cookie types"),i({name:u.cookieName,data:{types:m(d),updatedAt:(new Date).getTime()},days:u.lifetime}),p(),b(d),null==r||r()}),[d,r,u.cookieName,u.lifetime,p]),b=function(e){e&&function(e){var t;void 0===e&&(e=[]);for(var n=e.filter((function(e){return e})).map((function(e){return"script[type='text/".concat(e,"']")})).join(", "),o=n?document.querySelectorAll(n):[],i=o.length,a=[];i--;){var c=document.createElement("script");c.type="text/javascript",o[i].hasAttribute("src")?(c.src=o[i].getAttribute("src"),c.async=!0):c.innerHTML=o[i].innerHTML,a.push(c),o[i].parentNode&&(null===(t=o[i].parentNode)||void 0===t||t.removeChild(o[i]))}for(i=a.length;i--;)document.body.appendChild(a[i])}(Object.keys(e).filter((function(t){return e[t].isAccepted})).map((function(e){return c.script(e)})))};return{cookieTypes:d,acceptAll:v,acceptSelected:y,declineAll:k,setConsent:function(t,n){f((function(o){var i=e.__assign({},o);return i[t]&&i[t].isEditable?(i[t].isAccepted=void 0!==n?n:!i[t].isAccepted,i):i}))},getCookieValue:function(){return a(u.cookieName)}}};
|
|
2
|
+
//# sourceMappingURL=useCookieConsent-674d004d.js.map
|