@blateral/b.kit 2.8.1 → 2.8.2
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/sections.pois.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./Filter-89286db9.js"),n=require("react"),t=require("styled-components"),i=require("./Section-c9a16ccc.js"),r=require("./Wrapper-bca9463e.js"),a=require("./Image-94820dfd.js"),o=require("./Copy-a0bc570d.js"),l=require("./styles-13e5d9ac.js"),s=require("./LibThemeProvider-69109901.js"),c=require("./Grid-1acefee9.js"),d=require("./InfoList-e416058c.js"),u=require("./FilterBar-0781490f.js"),p=require("./arrays-c272ed59.js"),m=require("./urlParams-7525f638.js");require("./useScroll-2f086e7f.js"),require("react-dom/server");var f=require("./escape-1ef8dd83.js"),g=require("./useLeafletMap-514304b6.js"),h=require("./Navigation-6abb6213.js"),v=require("./useGeolocation-d8946470.js");function b(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}require("./concat-f387d848.js"),require("./clamp-bd21d587.js"),require("./FilterField-7efcacb7.js"),require("./useLazyInput-911b8eda.js"),require("./MultiselectDropdown-a16ea1c9.js"),require("./formFieldText-046fcbf4.js"),require("./useMounted-0bba9869.js"),require("./Checkbox-8dccd42f.js"),require("react-dom"),require("./Pointer-331140b6.js"),require("./useMediaQuery-619d7203.js"),require("./navigation-3f9d4ac4.js"),require("./Link-8951180c.js"),require("./LanguageSwitcher-aa96cc7d.js");var x,y,w,_,I,C,F,k,j,E,P,M,O,L,q,T,N,S,z=b(n),A=b(t),B=A.default(a.Image).withConfig({displayName:"PointOfInterestDetail__StyledImage",componentId:"sc-hksryh-0"})(x||(x=e.__makeTemplateObject(["\n &:not(:last-child) {\n margin-bottom: ","px;\n }\n"],["\n &:not(:last-child) {\n margin-bottom: ","px;\n }\n"])),l.spacings.spacer),V=A.default(u.POIFacts).withConfig({displayName:"PointOfInterestDetail__Facts",componentId:"sc-hksryh-1"})(y||(y=e.__makeTemplateObject(["\n max-width: 880px;\n"],["\n max-width: 880px;\n"]))),R=A.default(o.Heading).withConfig({displayName:"PointOfInterestDetail__PoiTitle",componentId:"sc-hksryh-2"})(w||(w=e.__makeTemplateObject(["\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: ","px;\n }\n"],["\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: ","px;\n }\n"])),3*l.spacings.nudge),D=A.default(o.Copy).withConfig({displayName:"PointOfInterestDetail__PoiText",componentId:"sc-hksryh-3"})(_||(_=e.__makeTemplateObject(["\n max-width: 880px;\n\n &:not(:first-child) {\n margin-top: ","px;\n }\n"],["\n max-width: 880px;\n\n &:not(:first-child) {\n margin-top: ","px;\n }\n"])),3*l.spacings.nudge),G=s.withLibTheme((function(t){var a=t.anchorId,o=t.image,u=t.title,m=t.intro,f=t.text,g=t.facts,h=t.infos,v=t.bgMode,b=t.customFact,x=s.useLibTheme().colors,y="inverted"===v,w="full"===v,_=n.useMemo((function(){return p.isValidArray(null==h?void 0:h.filter((function(e){return p.isValidArray(e.items,!1)})),!1)}),[h]);return z.default.createElement(i.Section,{addSeperation:!0,anchorId:a,bgColor:y?x.sectionBg.dark:w?x.sectionBg.medium:x.sectionBg.light,bgMode:i.mapToBgMode(v,!0)},z.default.createElement(r.Wrapper,{addWhitespace:!0},(null==o?void 0:o.small)&&z.default.createElement(B,e.__assign({},o,{coverSpace:!0,allowEdgeRadius:!0,isInverted:y})),z.default.createElement(c.Grid.Row,{gutter:5*l.spacings.nudge,semilarge:{gutter:l.spacings.spacer}},z.default.createElement(c.Grid.Col,{semilarge:{span:_?5.7/8:1}},u&&z.default.createElement(R,{size:"heading-2",isInverted:y},u),p.isValidArray(g,!1)&&z.default.createElement(V,{isInverted:y,facts:g,customFact:b}),m&&z.default.createElement(D,{size:"medium",type:"copy-b",isInverted:y,innerHTML:m}),f&&z.default.createElement(D,{size:"medium",isInverted:y,innerHTML:f})),_&&z.default.createElement(c.Grid.Col,{semilarge:{span:2.3/8}},z.default.createElement(d.InfoList,{isInverted:y,items:h})))))})),H=function(e,n){return n?null==n?void 0:n.filter((function(n){return!e.find((function(e){return e.item.id===n.id}))})):[]},U=function(e,n){var t=[];if(!p.isValidArray(null==n?void 0:n.filter((function(e){return void 0!==e.id})),!1))return t;var i=null==n?void 0:n.filter(function(e){return function(n){return new RegExp(e).test(n.name)}}(e));p.isValidArray(i,!1)&&t.push.apply(t,i.map((function(e){return{item:e,priority:1}})));var r=H(t,null==n?void 0:n.filter(function(e){return function(n){var t=e.toLowerCase().replace(/\s/g,""),i=n.name.toLowerCase().replace(/\s/g,"");return new RegExp(t).test(i)}}(e)));p.isValidArray(r,!1)&&t.push.apply(t,r.map((function(e){return{item:e,priority:2}})));var a=H(t,null==n?void 0:n.filter(function(e){return function(n){if(!p.isValidArray(n.facts,!1))return!1;var t=e.toLowerCase().replace(/\s/g,""),i=new RegExp(t);return!!n.facts.find((function(e){var n=e.toLowerCase().replace(/\s/g,"");return i.test(n)}))}}(e)));p.isValidArray(a,!1)&&t.push.apply(t,a.map((function(e){return{item:e,priority:3}})));var o=H(t,null==n?void 0:n.filter(function(e){return function(n){if(!p.isValidArray(null==n?void 0:n.infos,!1))return!1;var t=e.toLowerCase().replace(/\s/g,""),i=new RegExp(t);return!!n.infos.find((function(e){if(!e.text)return!1;var n=e.text.toLowerCase().replace(/\s/g,"");return i.test(n)}))}}(e)));p.isValidArray(o,!1)&&t.push.apply(t,o.map((function(e){return{item:e,priority:4}})));var l=H(t,null==n?void 0:n.filter(function(e){return function(n){if(!n.shortDescription)return!1;var t=e.toLowerCase().replace(/\s/g,""),i=n.shortDescription.toLowerCase().replace(/\s/g,"");return new RegExp(t).test(i)}}(e)));return p.isValidArray(l,!1)&&t.push.apply(t,l.map((function(e){return{item:e,priority:5}}))),t},W=function(e,n,t){var i,r=new Map;if(!e&&!n.length)for(var a=0,o=t;a<o.length;a++){var l=o[a];r.set(l.id,{item:l,priority:0})}for(var s=0,c=t;s<c.length;s++){(null===(i=(l=c[s]).facts)||void 0===i?void 0:i.some((function(e){return n.includes(e)})))&&r.set(l.id,{item:l,priority:1})}for(var d=0,u=e?U(f.escapeRegExp(e),t||[]):[];d<u.length;d++){var p=u[d];r.has(p.item.id)||r.set(p.item.id,p)}return r},Z=function(n){var t=n.hasBorders,i=n.value,r=n.onChange,a=n.textFilter,o=n.categoryFilter,l=n.mobileSubmitLabel,s=n.closeIcon,c=n.toggleLabel,d=n.filterIcon,p=n.indicator,m=n.isInverted,f=n.className;return z.default.createElement(u.FilterBar,{isInverted:m,hasBorders:t,value:i,onChange:r,textFilter:a?{placeholder:a.placeholder||"Search...",icon:a.icon?a.icon:function(){return z.default.createElement(e.Magnifier,{width:18,height:18})},submitIcon:a.submitIcon?a.submitIcon:function(){return null},clearIcon:a.clearIcon?a.clearIcon:function(){return z.default.createElement(e.CrossBubble,null)}}:void 0,categoryFilter:o?{label:o.label||"Categories",items:o.items||[],resetLabel:o.resetLabel||"reset selection"}:void 0,mobileSubmitLabel:l||"Apply filters",closeIcon:s||function(){return z.default.createElement(e.Cross,null)},toggleLabel:c||"Search & Filter",filterIcon:d||function(){return z.default.createElement(e.Filter,null)},indicator:p,className:f})},Q=Object.freeze({__proto__:null,PoiFilterBar:Z}),J=A.default(i.Section).withConfig({displayName:"PointOfInterestOverview__POISection",componentId:"sc-epctuk-0"})(I||(I=e.__makeTemplateObject(["\n overflow: visible;\n"],["\n overflow: visible;\n"]))),K=A.default.div.withConfig({displayName:"PointOfInterestOverview__Content",componentId:"sc-epctuk-1"})(C||(C=e.__makeTemplateObject(["\n & > * + * {\n margin-top: ","px;\n }\n\n @media "," {\n & > * + * {\n margin-top: ","px;\n }\n }\n"],["\n & > * + * {\n margin-top: ","px;\n }\n\n @media "," {\n & > * + * {\n margin-top: ","px;\n }\n }\n"])),5*l.spacings.nudge,l.mq.large,3*l.spacings.nudge),X=A.default(Z).withConfig({displayName:"PointOfInterestOverview__PoiOverviewFilterBar",componentId:"sc-epctuk-2"})(F||(F=e.__makeTemplateObject(["\n // margin to show prevent section overflow outline\n margin-top: 2px;\n border: solid 1px\n ",";\n\n &:not(:last-child) {\n margin-bottom: ","px;\n }\n\n @media "," {\n border: none;\n }\n"],["\n // margin to show prevent section overflow outline\n margin-top: 2px;\n border: solid 1px\n ",";\n\n &:not(:last-child) {\n margin-bottom: ","px;\n }\n\n @media "," {\n border: none;\n }\n"])),(function(e){var n=e.theme;return e.isInverted?l.getColors(n).elementBg.light:l.getColors(n).elementBg.dark}),5*l.spacings.nudge,l.mq.medium),Y=s.withLibTheme((function(t){var a,o=t.anchorId,l=t.bgMode,c=t.pois,d=t.initialPoiFilters,f=t.poiFilters,g=t.customPoiFilters,h=s.useLibTheme(),v=h.colors,b=h.globals,x=b.sections.poiFilterName,y=b.sections.poiFactFilterName,w="inverted"===l,_="full"===l,I=n.useState(d||{categoryFilter:[],textFilter:""}),C=I[0],F=I[1],k=n.useMemo((function(){return null==c?void 0:c.reduce((function(n,t){for(var i=e.__spreadArray([],n,!0),r=0,a=t.facts||[];r<a.length;r++){var o=a[r];i.includes(o)||i.push(o)}return i}),[])}),[c]),j=n.useMemo((function(){var e=W((null==C?void 0:C.textFilter)||"",(null==C?void 0:C.categoryFilter)||[],c||[])||c;return Array.from(e).map((function(e){return e[1]}))}),[null==C?void 0:C.textFilter,null==C?void 0:C.categoryFilter,c]);return n.useEffect((function(){C.textFilter?m.setUrlParam(x,C.textFilter):m.deleteUrlParam(x),p.isValidArray(C.categoryFilter,!1)?m.setUrlParam(y,C.categoryFilter.join(",")):m.deleteUrlParam(y)}),[x,y,C.textFilter,C.categoryFilter]),z.default.createElement(J,{addSeperation:!0,anchorId:o,bgColor:w?v.sectionBg.dark:_?v.sectionBg.medium:v.sectionBg.light,bgMode:i.mapToBgMode(l,!0)},z.default.createElement(r.Wrapper,{addWhitespace:!0},f?g?null==g?void 0:g({filters:C,setFilters:F,pois:c||[],settings:f}):z.default.createElement(X,{hasBorders:!0,value:C,onChange:F,textFilter:(null==f?void 0:f.textFilter)||void 0,categoryFilter:(null==f?void 0:f.categoryFilter)?e.__assign(e.__assign({},f.categoryFilter),{items:null==k?void 0:k.map((function(e){return{value:e,label:e}||[]}))}):void 0,mobileSubmitLabel:null==f?void 0:f.mobileSubmitLabel,closeIcon:null==f?void 0:f.closeIcon,toggleLabel:null==f?void 0:f.toggleLabel,filterIcon:null==f?void 0:f.filterIcon,indicator:null==f?void 0:f.indicator,isInverted:w}):null,z.default.createElement(K,null,null===(a=null==j?void 0:j.sort((function(e,n){return e.priority-n.priority})))||void 0===a?void 0:a.map((function(n,t){return z.default.createElement(u.POICard,e.__assign({key:t},n.item,{isInverted:w}))})))))})),$=A.default(i.Section).withConfig({displayName:"PointOfInterestMap__PoiMapSection",componentId:"sc-1ke8oz0-0"})(E||(E=e.__makeTemplateObject(["\n position: relative;\n ","\n\n header + & {\n ","\n ","\n }\n"],["\n position: relative;\n ","\n\n header + & {\n ","\n ","\n }\n"])),(function(n){return n.isLarge&&t.css(j||(j=e.__makeTemplateObject(["\n // Doing some crazy shit to calculate curent navbar height in CSS\n ","\n"],["\n // Doing some crazy shit to calculate curent navbar height in CSS\n ","\n"])),(function(n){var i=n.theme,r=h.generateNavbarIdent({pageFlow:"beforeContent",hasMain:!0}),a=h.generateNavbarIdent({pageFlow:"beforeContent",hasMain:!0,hasTop:!0}),o=h.generateNavbarIdent({pageFlow:"beforeContent",hasMain:!0,hasBottom:!0}),s=h.generateNavbarIdent({pageFlow:"beforeContent",hasTop:!0,hasMain:!0,hasBottom:!0}),c=h.getFullNavbarHeights(i,r).large,d=h.getFullNavbarHeights(i,a).large,u=h.getFullNavbarHeights(i,o).large,p=h.getFullNavbarHeights(i,s).large,m=function(e){return e.map((function(e){return"[data-navbar-ident*='".concat(e,"']")})).join("")},f="100vh";return t.css(k||(k=e.__makeTemplateObject(["\n "," {\n height: ",";\n }\n\n // with main navbar element\n header"," ~ & {\n "," {\n height: calc("," - ","px);\n }\n }\n\n // with main and top navbar elements\n header"," ~ & {\n "," {\n height: calc("," - ","px);\n }\n }\n\n // with main and bottom navbar elements\n header"," ~ & {\n "," {\n height: calc("," - ","px);\n }\n }\n\n // with all navbar elements\n header"," ~ & {\n "," {\n height: calc("," - ","px);\n }\n }\n\n @media "," {\n // with main navbar element\n header"," ~ & {\n "," {\n height: calc("," - ","px);\n }\n }\n\n // with main and top navbar elements\n header"," ~ & {\n "," {\n height: calc("," - ","px);\n }\n }\n\n // with main and bottom navbar elements\n header"," ~ & {\n "," {\n height: calc(\n "," - ","px\n );\n }\n }\n\n // with all navbar elements\n header"," ~ & {\n "," {\n height: calc("," - ","px);\n }\n }\n }\n "],["\n "," {\n height: ",";\n }\n\n // with main navbar element\n header"," ~ & {\n "," {\n height: calc("," - ","px);\n }\n }\n\n // with main and top navbar elements\n header"," ~ & {\n "," {\n height: calc("," - ","px);\n }\n }\n\n // with main and bottom navbar elements\n header"," ~ & {\n "," {\n height: calc("," - ","px);\n }\n }\n\n // with all navbar elements\n header"," ~ & {\n "," {\n height: calc("," - ","px);\n }\n }\n\n @media "," {\n // with main navbar element\n header"," ~ & {\n "," {\n height: calc("," - ","px);\n }\n }\n\n // with main and top navbar elements\n header"," ~ & {\n "," {\n height: calc("," - ","px);\n }\n }\n\n // with main and bottom navbar elements\n header"," ~ & {\n "," {\n height: calc(\n "," - ","px\n );\n }\n }\n\n // with all navbar elements\n header"," ~ & {\n "," {\n height: calc("," - ","px);\n }\n }\n }\n "])),ne,f,m(r.split("-")),ne,f,c[0],m(a.split("-")),ne,f,d[0],m(o.split("-")),ne,f,u[0],m(s.split("-")),ne,f,p[0],l.mq.semilarge,m(r.split("-")),ne,f,c[1],m(a.split("-")),ne,f,d[1],m(o.split("-")),ne,f,u[1],m(s.split("-")),ne,f,p[1])}))}),l.withRange([0],"padding-top"),l.withRange([0],"margin-top")),ee=A.default.div.withConfig({displayName:"PointOfInterestMap__MapContainer",componentId:"sc-1ke8oz0-1"})(P||(P=e.__makeTemplateObject(["\n position: relative;\n"],["\n position: relative;\n"]))),ne=A.default.div.withConfig({displayName:"PointOfInterestMap__Map",componentId:"sc-1ke8oz0-2"})(M||(M=e.__makeTemplateObject(["\n min-height: 360px;\n height: 360px;\n max-height: 1300px;\n z-index: 0;\n\n @media "," {\n height: 600px;\n min-height: 600px;\n }\n"],["\n min-height: 360px;\n height: 360px;\n max-height: 1300px;\n z-index: 0;\n\n @media "," {\n height: 600px;\n min-height: 600px;\n }\n"])),l.mq.medium),te=A.default.button.withConfig({displayName:"PointOfInterestMap__RequestGeolocationBtn",componentId:"sc-1ke8oz0-3"})(O||(O=e.__makeTemplateObject(["\n background-color: transparent;\n border: none;\n padding: ","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 ",";\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 background-color: transparent;\n border: none;\n padding: ","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 ",";\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"])),l.spacings.nudge,(function(e){var n=e.theme;return l.getColors(n).primary.default})),ie=A.default.div.withConfig({displayName:"PointOfInterestMap__CardStage",componentId:"sc-1ke8oz0-4"})(L||(L=e.__makeTemplateObject(["\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 "," {\n position: absolute;\n background-color: transparent;\n padding: ","px;\n padding-bottom: ","px;\n\n pointer-events: none;\n }\n"],["\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 "," {\n position: absolute;\n background-color: transparent;\n padding: ","px;\n padding-bottom: ","px;\n\n pointer-events: none;\n }\n"])),l.mq.medium,2*l.spacings.nudge,3*l.spacings.nudge),re=A.default.div.withConfig({displayName:"PointOfInterestMap__MapCardView",componentId:"sc-1ke8oz0-5"})(q||(q=e.__makeTemplateObject(["\n max-height: 100%;\n width: 100%;\n padding: ","px;\n overflow: auto;\n\n background: ",";\n box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.3);\n pointer-events: all;\n border-radius: ",";\n\n & > * + * {\n margin-top: ","px;\n }\n\n @media "," {\n max-width: 400px;\n }\n"],["\n max-height: 100%;\n width: 100%;\n padding: ","px;\n overflow: auto;\n\n background: ",";\n box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.3);\n pointer-events: all;\n border-radius: ",";\n\n & > * + * {\n margin-top: ","px;\n }\n\n @media "," {\n max-width: 400px;\n }\n"])),2*l.spacings.nudge,(function(e){var n=e.theme;return l.getColors(n).elementBg.light}),(function(e){var n=e.theme;return l.getGlobals(n).sections.edgeRadius}),3*l.spacings.nudge,l.mq.medium),ae=A.default.header.withConfig({displayName:"PointOfInterestMap__MapCardHeader",componentId:"sc-1ke8oz0-6"})(T||(T=e.__makeTemplateObject(["\n display: flex;\n align-items: center;\n"],["\n display: flex;\n align-items: center;\n"]))),oe=A.default.button.withConfig({displayName:"PointOfInterestMap__CloseBtn",componentId:"sc-1ke8oz0-7"})(N||(N=e.__makeTemplateObject(["\n display: inline-block;\n border: none;\n background-color: transparent;\n cursor: pointer;\n margin-left: auto;\n padding: ","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 ",";\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 display: inline-block;\n border: none;\n background-color: transparent;\n cursor: pointer;\n margin-left: auto;\n padding: ","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 ",";\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"])),l.spacings.nudge,(function(e){var n=e.theme;return l.getColors(n).primary.default})),le=A.default.div.withConfig({displayName:"PointOfInterestMap__Overlay",componentId:"sc-1ke8oz0-8"})(S||(S=e.__makeTemplateObject(["\n position: absolute;\n top: ","px;\n left: ","px;\n width: 100%;\n\n display: flex;\n align-items: center;\n\n & > * + * {\n margin-left: ","px;\n }\n"],["\n position: absolute;\n top: ","px;\n left: ","px;\n width: 100%;\n\n display: flex;\n align-items: center;\n\n & > * + * {\n margin-left: ","px;\n }\n"])),2*l.spacings.nudge,2*l.spacings.nudge,2*l.spacings.nudge),se=function(n){var t=n.name,i=n.facts,r=n.description,a=n.infos,l=n.action,c=n.customFact,m=n.customClose,f=n.onClose,g=n.className,h=s.useLibTheme().colors;return z.default.createElement(re,{className:g},z.default.createElement(ae,null,t&&z.default.createElement(o.Copy,{type:"copy-b",size:"big"},t),z.default.createElement(oe,{onClick:f},m||z.default.createElement(e.Cross,{iconColor:h.text.default}))),p.isValidArray(i,!1)&&z.default.createElement(u.POIFacts,{facts:i,customFact:c}),r&&z.default.createElement(o.Copy,{type:"copy",size:"small",innerHTML:r}),p.isValidArray(a,!1)&&z.default.createElement(d.InfoList,{items:[{items:a}]}),l&&l)},ce=s.withLibTheme((function(t){var i=t.anchorId,a=t.size,o=t.pois,c=t.initialPointOfInterest,d=void 0===c?"":c,u=t.provider,f=t.attribution,h=t.center,b=void 0===h?[51.505,-.09]:h,x=t.zoom,y=void 0===x?5:x,w=t.fitBoundsPadding,_=t.allMarkersOnInit,I=void 0!==_&&_,C=t.restrictToMarkersArea,F=void 0===C||C,k=t.showOwnPosition,j=t.flyToZoom,E=t.customFact,P=t.currentPosMarker,M=t.customCardClose,O=t.customLocationRequest,L=t.initialPoiFilters,q=t.poiFilters,T=t.customPoiFilters,N="large"===a,S=s.useLibTheme(),A=S.colors,B=S.globals,V=n.useState(d||""),R=V[0],D=V[1],G=n.useState(!1),H=G[0],U=G[1],Q=n.useState(L||{categoryFilter:[],textFilter:""}),J=Q[0],K=Q[1],X=n.useMemo((function(){return null==o?void 0:o.reduce((function(n,t){for(var i=e.__spreadArray([],n,!0),r=0,a=t.facts||[];r<a.length;r++){var o=a[r];i.includes(o)||i.push(o)}return i}),[])}),[o]),Y=n.useMemo((function(){var e=W((null==J?void 0:J.textFilter)||"",(null==J?void 0:J.categoryFilter)||[],o||[])||o;return Array.from(e).map((function(e){return e[1].item}))}),[null==J?void 0:J.textFilter,null==J?void 0:J.categoryFilter,o]),re=n.useMemo((function(){return null==Y?void 0:Y.find((function(e){return e.id===R}))}),[R,Y]),ae=v.useGeolocation(!0,!1),oe=ae.isSupported,ce=ae.location,de=ae.reset,ue=n.useMemo((function(){var n,t={size:[28,28],anchor:[14,28],sizeActive:[70,70],anchorActive:[35,70],url:l.getSVGDataImg(z.default.createElement(e.LocationPin,null))},i={size:[24,24],anchor:[12,12],sizeActive:[24,24],anchorActive:[12,12],url:l.getSVGDataImg(z.default.createElement(e.CurrentLocation,{iconColor:"#5383EC"}))},r=(null===(n=null==Y?void 0:Y.filter((function(e){return void 0!==e.id})))||void 0===n?void 0:n.map((function(e){return{id:e.id,position:e.position,icon:e.icon||t,isInteractive:!0}})))||[];return oe&&(null==ce?void 0:ce.coords.latitude)&&(null==ce?void 0:ce.coords.longitude)&&r.push({id:"my-current-position-123456789",position:[ce.coords.latitude,ce.coords.longitude],icon:P||i}),r}),[P,oe,null==ce?void 0:ce.coords.latitude,null==ce?void 0:ce.coords.longitude,Y]),pe=g.useLeafletMap({url:u,attribution:f,center:b,zoom:y,activeMarkerId:R,markers:ue,fitBoundsPadding:w,restrictToMarkersArea:F,showZoomControls:!0,zoomControlPosition:"bottomleft",onMarkerClick:function(e){D((function(n){return n===e?"":e}))}}),me=pe.isLoaded,fe=pe.setContainer,ge=pe.flyToActive,he=pe.showAllMarkers,ve=pe.flyToPosition,be=pe.getCurrentZoom;n.useEffect((function(){if(me&&!H)I&&he();else{var e=be(),n=j;void 0!==j&&e>j&&(n=e),ge(n)}}),[R,I,ge,j,be,d,H,me,he]),n.useEffect((function(){H||R===d||U(!0)}),[R,d,H]);var xe=B.sections.poiFilterName,ye=B.sections.poiFactFilterName;return n.useEffect((function(){J.textFilter?m.setUrlParam(xe,J.textFilter):m.deleteUrlParam(xe),p.isValidArray(J.categoryFilter,!1)?m.setUrlParam(ye,J.categoryFilter.join(",")):m.deleteUrlParam(ye)}),[xe,ye,J.textFilter,J.categoryFilter]),n.useEffect((function(){D(""),U(!1)}),[J]),z.default.createElement($,{anchorId:i,bgColor:"image",bgMode:"full",isLarge:N},z.default.createElement(r.Wrapper,{clampWidth:N?"large":"normal"},z.default.createElement(ee,null,z.default.createElement(ne,{ref:fe,isLarge:"large"===a}),(k||q)&&z.default.createElement(le,null,k&&z.default.createElement(te,{onClick:function(){return e.__awaiter(void 0,void 0,void 0,(function(){var n,t,i,r;return e.__generator(this,(function(e){switch(e.label){case 0:return(null===(i=null==ce?void 0:ce.coords)||void 0===i?void 0:i.latitude)&&(null===(r=null==ce?void 0:ce.coords)||void 0===r?void 0:r.longitude)?(n=be(),t=j,void 0!==j&&n>j&&(t=n),ve([ce.coords.latitude,ce.coords.longitude],t),[3,4]):[3,1];case 1:return e.trys.push([1,3,,4]),[4,de()];case 2:return e.sent()&&he(),[3,4];case 3:return e.sent(),[3,4];case 4:return[2]}}))}))}},O||z.default.createElement(e.MyLocation,{iconColor:A.text.default})),q?T?T({filters:J,setFilters:K,pois:o||[],settings:q}):z.default.createElement(Z,{value:J,onChange:K,textFilter:(null==q?void 0:q.textFilter)||void 0,categoryFilter:(null==q?void 0:q.categoryFilter)?e.__assign(e.__assign({},q.categoryFilter),{items:null==X?void 0:X.map((function(e){return{value:e,label:e}||[]}))}):void 0,mobileSubmitLabel:null==q?void 0:q.mobileSubmitLabel,closeIcon:null==q?void 0:q.closeIcon,toggleLabel:null==q?void 0:q.toggleLabel,filterIcon:null==q?void 0:q.filterIcon,indicator:null==q?void 0:q.indicator}):null),re&&re.name&&z.default.createElement(ie,{onClick:function(e){e.target===e.currentTarget&&D("")}},z.default.createElement(se,e.__assign({},re,{onClose:function(){return D("")},customFact:E,customClose:M}))))))}));exports.PoiPartials=Q,exports.PointOfInterestDetail=G,exports.PointOfInterestMap=ce,exports.PointOfInterestOverview=Y;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./Filter-89286db9.js"),n=require("react"),t=require("styled-components"),i=require("./Section-c9a16ccc.js"),r=require("./Wrapper-bca9463e.js"),a=require("./Image-94820dfd.js"),o=require("./Copy-a0bc570d.js"),l=require("./styles-13e5d9ac.js"),s=require("./LibThemeProvider-69109901.js"),c=require("./Grid-1acefee9.js"),d=require("./InfoList-e416058c.js"),u=require("./FilterBar-0781490f.js"),p=require("./arrays-c272ed59.js"),m=require("./urlParams-7525f638.js");require("./useScroll-2f086e7f.js"),require("react-dom/server");var f=require("./escape-1ef8dd83.js"),g=require("./useLeafletMap-514304b6.js"),h=require("./Navigation-6abb6213.js"),v=require("./useGeolocation-d8946470.js");function b(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}require("./concat-f387d848.js"),require("./clamp-bd21d587.js"),require("./FilterField-7efcacb7.js"),require("./useLazyInput-911b8eda.js"),require("./MultiselectDropdown-a16ea1c9.js"),require("./formFieldText-046fcbf4.js"),require("./useMounted-0bba9869.js"),require("./Checkbox-8dccd42f.js"),require("react-dom"),require("./Pointer-331140b6.js"),require("./useMediaQuery-619d7203.js"),require("./navigation-3f9d4ac4.js"),require("./Link-8951180c.js"),require("./LanguageSwitcher-aa96cc7d.js");var x,y,w,_,I,C,F,k,j,E,P,M,O,L,q,T,N,S,z=b(n),A=b(t),B=A.default(a.Image).withConfig({displayName:"PointOfInterestDetail__StyledImage",componentId:"sc-hksryh-0"})(x||(x=e.__makeTemplateObject(["\n &:not(:last-child) {\n margin-bottom: ","px;\n }\n"],["\n &:not(:last-child) {\n margin-bottom: ","px;\n }\n"])),l.spacings.spacer),V=A.default(u.POIFacts).withConfig({displayName:"PointOfInterestDetail__Facts",componentId:"sc-hksryh-1"})(y||(y=e.__makeTemplateObject(["\n max-width: 880px;\n"],["\n max-width: 880px;\n"]))),R=A.default(o.Heading).withConfig({displayName:"PointOfInterestDetail__PoiTitle",componentId:"sc-hksryh-2"})(w||(w=e.__makeTemplateObject(["\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: ","px;\n }\n"],["\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: ","px;\n }\n"])),3*l.spacings.nudge),D=A.default(o.Copy).withConfig({displayName:"PointOfInterestDetail__PoiText",componentId:"sc-hksryh-3"})(_||(_=e.__makeTemplateObject(["\n max-width: 880px;\n\n &:not(:first-child) {\n margin-top: ","px;\n }\n"],["\n max-width: 880px;\n\n &:not(:first-child) {\n margin-top: ","px;\n }\n"])),3*l.spacings.nudge),G=s.withLibTheme((function(t){var a=t.anchorId,o=t.image,u=t.title,m=t.intro,f=t.text,g=t.facts,h=t.infos,v=t.bgMode,b=t.customFact,x=s.useLibTheme().colors,y="inverted"===v,w="full"===v,_=n.useMemo((function(){return p.isValidArray(null==h?void 0:h.filter((function(e){return p.isValidArray(e.items,!1)})),!1)}),[h]);return z.default.createElement(i.Section,{addSeperation:!0,anchorId:a,bgColor:y?x.sectionBg.dark:w?x.sectionBg.medium:x.sectionBg.light,bgMode:i.mapToBgMode(v,!0)},z.default.createElement(r.Wrapper,{addWhitespace:!0},(null==o?void 0:o.small)&&z.default.createElement(B,e.__assign({},o,{coverSpace:!0,allowEdgeRadius:!0,isInverted:y})),z.default.createElement(c.Grid.Row,{gutter:5*l.spacings.nudge,semilarge:{gutter:l.spacings.spacer}},z.default.createElement(c.Grid.Col,{semilarge:{span:_?5.7/8:1}},u&&z.default.createElement(R,{size:"heading-2",isInverted:y},u),p.isValidArray(g,!1)&&z.default.createElement(V,{isInverted:y,facts:g,customFact:b}),m&&z.default.createElement(D,{size:"medium",type:"copy-b",isInverted:y,innerHTML:m}),f&&z.default.createElement(D,{size:"medium",isInverted:y,innerHTML:f})),_&&z.default.createElement(c.Grid.Col,{semilarge:{span:2.3/8}},z.default.createElement(d.InfoList,{isInverted:y,items:h})))))})),H=function(e,n){return n?null==n?void 0:n.filter((function(n){return!e.find((function(e){return e.item.id===n.id}))})):[]},U=function(e,n){var t=[];if(!p.isValidArray(null==n?void 0:n.filter((function(e){return void 0!==e.id})),!1))return t;var i=null==n?void 0:n.filter(function(e){return function(n){return new RegExp(e).test(n.name)}}(e));p.isValidArray(i,!1)&&t.push.apply(t,i.map((function(e){return{item:e,priority:1}})));var r=H(t,null==n?void 0:n.filter(function(e){return function(n){var t=e.toLowerCase().replace(/\s/g,""),i=n.name.toLowerCase().replace(/\s/g,"");return new RegExp(t).test(i)}}(e)));p.isValidArray(r,!1)&&t.push.apply(t,r.map((function(e){return{item:e,priority:2}})));var a=H(t,null==n?void 0:n.filter(function(e){return function(n){if(!p.isValidArray(n.facts,!1))return!1;var t=e.toLowerCase().replace(/\s/g,""),i=new RegExp(t);return!!n.facts.find((function(e){var n=e.toLowerCase().replace(/\s/g,"");return i.test(n)}))}}(e)));p.isValidArray(a,!1)&&t.push.apply(t,a.map((function(e){return{item:e,priority:3}})));var o=H(t,null==n?void 0:n.filter(function(e){return function(n){if(!p.isValidArray(null==n?void 0:n.infos,!1))return!1;var t=e.toLowerCase().replace(/\s/g,""),i=new RegExp(t);return!!n.infos.find((function(e){if(!e.text)return!1;var n=e.text.toLowerCase().replace(/\s/g,"");return i.test(n)}))}}(e)));p.isValidArray(o,!1)&&t.push.apply(t,o.map((function(e){return{item:e,priority:4}})));var l=H(t,null==n?void 0:n.filter(function(e){return function(n){if(!n.shortDescription)return!1;var t=e.toLowerCase().replace(/\s/g,""),i=n.shortDescription.toLowerCase().replace(/\s/g,"");return new RegExp(t).test(i)}}(e)));return p.isValidArray(l,!1)&&t.push.apply(t,l.map((function(e){return{item:e,priority:5}}))),t},W=function(e,n,t){var i,r=new Map;if(!e&&!n.length)for(var a=0,o=t;a<o.length;a++){var l=o[a];r.set(l.id,{item:l,priority:0})}for(var s=0,c=t;s<c.length;s++){(null===(i=(l=c[s]).facts)||void 0===i?void 0:i.some((function(e){return n.includes(e)})))&&r.set(l.id,{item:l,priority:1})}for(var d=0,u=e?U(f.escapeRegExp(e),t||[]):[];d<u.length;d++){var p=u[d];r.has(p.item.id)||r.set(p.item.id,p)}return r},Z=function(n){var t=n.hasBorders,i=n.value,r=n.onChange,a=n.textFilter,o=n.categoryFilter,l=n.mobileSubmitLabel,s=n.closeIcon,c=n.toggleLabel,d=n.filterIcon,p=n.indicator,m=n.isInverted,f=n.className;return z.default.createElement(u.FilterBar,{isInverted:m,hasBorders:t,value:i,onChange:r,textFilter:a?{placeholder:a.placeholder||"Search...",icon:a.icon?a.icon:function(){return z.default.createElement(e.Magnifier,{width:18,height:18})},submitIcon:a.submitIcon?a.submitIcon:function(){return null},clearIcon:a.clearIcon?a.clearIcon:function(){return z.default.createElement(e.CrossBubble,null)}}:void 0,categoryFilter:o?{label:o.label||"Categories",items:o.items||[],resetLabel:o.resetLabel||"reset selection"}:void 0,mobileSubmitLabel:l||"Apply filters",closeIcon:s||function(){return z.default.createElement(e.Cross,null)},toggleLabel:c||"Search & Filter",filterIcon:d||function(){return z.default.createElement(e.Filter,null)},indicator:p,className:f})},Q=Object.freeze({__proto__:null,PoiFilterBar:Z}),J=A.default(i.Section).withConfig({displayName:"PointOfInterestOverview__POISection",componentId:"sc-epctuk-0"})(I||(I=e.__makeTemplateObject(["\n overflow: visible;\n"],["\n overflow: visible;\n"]))),K=A.default.div.withConfig({displayName:"PointOfInterestOverview__Content",componentId:"sc-epctuk-1"})(C||(C=e.__makeTemplateObject(["\n & > * + * {\n margin-top: ","px;\n }\n\n @media "," {\n & > * + * {\n margin-top: ","px;\n }\n }\n"],["\n & > * + * {\n margin-top: ","px;\n }\n\n @media "," {\n & > * + * {\n margin-top: ","px;\n }\n }\n"])),5*l.spacings.nudge,l.mq.large,3*l.spacings.nudge),X=A.default(Z).withConfig({displayName:"PointOfInterestOverview__PoiOverviewFilterBar",componentId:"sc-epctuk-2"})(F||(F=e.__makeTemplateObject(["\n // margin to show prevent section overflow outline\n margin-top: 2px;\n border: solid 1px\n ",";\n border-radius: ",";\n\n &:not(:last-child) {\n margin-bottom: ","px;\n }\n\n @media "," {\n border: none;\n }\n"],["\n // margin to show prevent section overflow outline\n margin-top: 2px;\n border: solid 1px\n ",";\n border-radius: ",";\n\n &:not(:last-child) {\n margin-bottom: ","px;\n }\n\n @media "," {\n border: none;\n }\n"])),(function(e){var n=e.theme;return e.isInverted?l.getColors(n).elementBg.light:l.getColors(n).elementBg.dark}),(function(e){return e.theme.globals.sections.edgeRadius}),5*l.spacings.nudge,l.mq.medium),Y=s.withLibTheme((function(t){var a,o=t.anchorId,l=t.bgMode,c=t.pois,d=t.initialPoiFilters,f=t.poiFilters,g=t.customPoiFilters,h=s.useLibTheme(),v=h.colors,b=h.globals,x=b.sections.poiFilterName,y=b.sections.poiFactFilterName,w="inverted"===l,_="full"===l,I=n.useState(d||{categoryFilter:[],textFilter:""}),C=I[0],F=I[1],k=n.useMemo((function(){return null==c?void 0:c.reduce((function(n,t){for(var i=e.__spreadArray([],n,!0),r=0,a=t.facts||[];r<a.length;r++){var o=a[r];i.includes(o)||i.push(o)}return i}),[])}),[c]),j=n.useMemo((function(){var e=W((null==C?void 0:C.textFilter)||"",(null==C?void 0:C.categoryFilter)||[],c||[])||c;return Array.from(e).map((function(e){return e[1]}))}),[null==C?void 0:C.textFilter,null==C?void 0:C.categoryFilter,c]);return n.useEffect((function(){C.textFilter?m.setUrlParam(x,C.textFilter):m.deleteUrlParam(x),p.isValidArray(C.categoryFilter,!1)?m.setUrlParam(y,C.categoryFilter.join(",")):m.deleteUrlParam(y)}),[x,y,C.textFilter,C.categoryFilter]),z.default.createElement(J,{addSeperation:!0,anchorId:o,bgColor:w?v.sectionBg.dark:_?v.sectionBg.medium:v.sectionBg.light,bgMode:i.mapToBgMode(l,!0)},z.default.createElement(r.Wrapper,{addWhitespace:!0},f?g?null==g?void 0:g({filters:C,setFilters:F,pois:c||[],settings:f}):z.default.createElement(X,{hasBorders:!0,value:C,onChange:F,textFilter:(null==f?void 0:f.textFilter)||void 0,categoryFilter:(null==f?void 0:f.categoryFilter)?e.__assign(e.__assign({},f.categoryFilter),{items:null==k?void 0:k.map((function(e){return{value:e,label:e}||[]}))}):void 0,mobileSubmitLabel:null==f?void 0:f.mobileSubmitLabel,closeIcon:null==f?void 0:f.closeIcon,toggleLabel:null==f?void 0:f.toggleLabel,filterIcon:null==f?void 0:f.filterIcon,indicator:null==f?void 0:f.indicator,isInverted:w}):null,z.default.createElement(K,null,null===(a=null==j?void 0:j.sort((function(e,n){return e.priority-n.priority})))||void 0===a?void 0:a.map((function(n,t){return z.default.createElement(u.POICard,e.__assign({key:t},n.item,{isInverted:w}))})))))})),$=A.default(i.Section).withConfig({displayName:"PointOfInterestMap__PoiMapSection",componentId:"sc-1ke8oz0-0"})(E||(E=e.__makeTemplateObject(["\n position: relative;\n ","\n\n header + & {\n ","\n ","\n }\n"],["\n position: relative;\n ","\n\n header + & {\n ","\n ","\n }\n"])),(function(n){return n.isLarge&&t.css(j||(j=e.__makeTemplateObject(["\n // Doing some crazy shit to calculate curent navbar height in CSS\n ","\n"],["\n // Doing some crazy shit to calculate curent navbar height in CSS\n ","\n"])),(function(n){var i=n.theme,r=h.generateNavbarIdent({pageFlow:"beforeContent",hasMain:!0}),a=h.generateNavbarIdent({pageFlow:"beforeContent",hasMain:!0,hasTop:!0}),o=h.generateNavbarIdent({pageFlow:"beforeContent",hasMain:!0,hasBottom:!0}),s=h.generateNavbarIdent({pageFlow:"beforeContent",hasTop:!0,hasMain:!0,hasBottom:!0}),c=h.getFullNavbarHeights(i,r).large,d=h.getFullNavbarHeights(i,a).large,u=h.getFullNavbarHeights(i,o).large,p=h.getFullNavbarHeights(i,s).large,m=function(e){return e.map((function(e){return"[data-navbar-ident*='".concat(e,"']")})).join("")},f="100vh";return t.css(k||(k=e.__makeTemplateObject(["\n "," {\n height: ",";\n }\n\n // with main navbar element\n header"," ~ & {\n "," {\n height: calc("," - ","px);\n }\n }\n\n // with main and top navbar elements\n header"," ~ & {\n "," {\n height: calc("," - ","px);\n }\n }\n\n // with main and bottom navbar elements\n header"," ~ & {\n "," {\n height: calc("," - ","px);\n }\n }\n\n // with all navbar elements\n header"," ~ & {\n "," {\n height: calc("," - ","px);\n }\n }\n\n @media "," {\n // with main navbar element\n header"," ~ & {\n "," {\n height: calc("," - ","px);\n }\n }\n\n // with main and top navbar elements\n header"," ~ & {\n "," {\n height: calc("," - ","px);\n }\n }\n\n // with main and bottom navbar elements\n header"," ~ & {\n "," {\n height: calc(\n "," - ","px\n );\n }\n }\n\n // with all navbar elements\n header"," ~ & {\n "," {\n height: calc("," - ","px);\n }\n }\n }\n "],["\n "," {\n height: ",";\n }\n\n // with main navbar element\n header"," ~ & {\n "," {\n height: calc("," - ","px);\n }\n }\n\n // with main and top navbar elements\n header"," ~ & {\n "," {\n height: calc("," - ","px);\n }\n }\n\n // with main and bottom navbar elements\n header"," ~ & {\n "," {\n height: calc("," - ","px);\n }\n }\n\n // with all navbar elements\n header"," ~ & {\n "," {\n height: calc("," - ","px);\n }\n }\n\n @media "," {\n // with main navbar element\n header"," ~ & {\n "," {\n height: calc("," - ","px);\n }\n }\n\n // with main and top navbar elements\n header"," ~ & {\n "," {\n height: calc("," - ","px);\n }\n }\n\n // with main and bottom navbar elements\n header"," ~ & {\n "," {\n height: calc(\n "," - ","px\n );\n }\n }\n\n // with all navbar elements\n header"," ~ & {\n "," {\n height: calc("," - ","px);\n }\n }\n }\n "])),ne,f,m(r.split("-")),ne,f,c[0],m(a.split("-")),ne,f,d[0],m(o.split("-")),ne,f,u[0],m(s.split("-")),ne,f,p[0],l.mq.semilarge,m(r.split("-")),ne,f,c[1],m(a.split("-")),ne,f,d[1],m(o.split("-")),ne,f,u[1],m(s.split("-")),ne,f,p[1])}))}),l.withRange([0],"padding-top"),l.withRange([0],"margin-top")),ee=A.default.div.withConfig({displayName:"PointOfInterestMap__MapContainer",componentId:"sc-1ke8oz0-1"})(P||(P=e.__makeTemplateObject(["\n position: relative;\n"],["\n position: relative;\n"]))),ne=A.default.div.withConfig({displayName:"PointOfInterestMap__Map",componentId:"sc-1ke8oz0-2"})(M||(M=e.__makeTemplateObject(["\n min-height: 360px;\n height: 360px;\n max-height: 1300px;\n z-index: 0;\n\n @media "," {\n height: 600px;\n min-height: 600px;\n }\n"],["\n min-height: 360px;\n height: 360px;\n max-height: 1300px;\n z-index: 0;\n\n @media "," {\n height: 600px;\n min-height: 600px;\n }\n"])),l.mq.medium),te=A.default.button.withConfig({displayName:"PointOfInterestMap__RequestGeolocationBtn",componentId:"sc-1ke8oz0-3"})(O||(O=e.__makeTemplateObject(["\n background-color: transparent;\n border: none;\n padding: ","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 ",";\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 background-color: transparent;\n border: none;\n padding: ","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 ",";\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"])),l.spacings.nudge,(function(e){var n=e.theme;return l.getColors(n).primary.default})),ie=A.default.div.withConfig({displayName:"PointOfInterestMap__CardStage",componentId:"sc-1ke8oz0-4"})(L||(L=e.__makeTemplateObject(["\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 "," {\n position: absolute;\n background-color: transparent;\n padding: ","px;\n padding-bottom: ","px;\n\n pointer-events: none;\n }\n"],["\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 "," {\n position: absolute;\n background-color: transparent;\n padding: ","px;\n padding-bottom: ","px;\n\n pointer-events: none;\n }\n"])),l.mq.medium,2*l.spacings.nudge,3*l.spacings.nudge),re=A.default.div.withConfig({displayName:"PointOfInterestMap__MapCardView",componentId:"sc-1ke8oz0-5"})(q||(q=e.__makeTemplateObject(["\n max-height: 100%;\n width: 100%;\n padding: ","px;\n overflow: auto;\n\n background: ",";\n box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.3);\n pointer-events: all;\n border-radius: ",";\n\n & > * + * {\n margin-top: ","px;\n }\n\n @media "," {\n max-width: 400px;\n }\n"],["\n max-height: 100%;\n width: 100%;\n padding: ","px;\n overflow: auto;\n\n background: ",";\n box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.3);\n pointer-events: all;\n border-radius: ",";\n\n & > * + * {\n margin-top: ","px;\n }\n\n @media "," {\n max-width: 400px;\n }\n"])),2*l.spacings.nudge,(function(e){var n=e.theme;return l.getColors(n).elementBg.light}),(function(e){var n=e.theme;return l.getGlobals(n).sections.edgeRadius}),3*l.spacings.nudge,l.mq.medium),ae=A.default.header.withConfig({displayName:"PointOfInterestMap__MapCardHeader",componentId:"sc-1ke8oz0-6"})(T||(T=e.__makeTemplateObject(["\n display: flex;\n align-items: center;\n"],["\n display: flex;\n align-items: center;\n"]))),oe=A.default.button.withConfig({displayName:"PointOfInterestMap__CloseBtn",componentId:"sc-1ke8oz0-7"})(N||(N=e.__makeTemplateObject(["\n display: inline-block;\n border: none;\n background-color: transparent;\n cursor: pointer;\n margin-left: auto;\n padding: ","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 ",";\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 display: inline-block;\n border: none;\n background-color: transparent;\n cursor: pointer;\n margin-left: auto;\n padding: ","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 ",";\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"])),l.spacings.nudge,(function(e){var n=e.theme;return l.getColors(n).primary.default})),le=A.default.div.withConfig({displayName:"PointOfInterestMap__Overlay",componentId:"sc-1ke8oz0-8"})(S||(S=e.__makeTemplateObject(["\n position: absolute;\n top: ","px;\n left: ","px;\n width: 100%;\n\n display: flex;\n align-items: center;\n\n & > * + * {\n margin-left: ","px;\n }\n"],["\n position: absolute;\n top: ","px;\n left: ","px;\n width: 100%;\n\n display: flex;\n align-items: center;\n\n & > * + * {\n margin-left: ","px;\n }\n"])),2*l.spacings.nudge,2*l.spacings.nudge,2*l.spacings.nudge),se=function(n){var t=n.name,i=n.facts,r=n.description,a=n.infos,l=n.action,c=n.customFact,m=n.customClose,f=n.onClose,g=n.className,h=s.useLibTheme().colors;return z.default.createElement(re,{className:g},z.default.createElement(ae,null,t&&z.default.createElement(o.Copy,{type:"copy-b",size:"big"},t),z.default.createElement(oe,{onClick:f},m||z.default.createElement(e.Cross,{iconColor:h.text.default}))),p.isValidArray(i,!1)&&z.default.createElement(u.POIFacts,{facts:i,customFact:c}),r&&z.default.createElement(o.Copy,{type:"copy",size:"small",innerHTML:r}),p.isValidArray(a,!1)&&z.default.createElement(d.InfoList,{items:[{items:a}]}),l&&l)},ce=s.withLibTheme((function(t){var i=t.anchorId,a=t.size,o=t.pois,c=t.initialPointOfInterest,d=void 0===c?"":c,u=t.provider,f=t.attribution,h=t.center,b=void 0===h?[51.505,-.09]:h,x=t.zoom,y=void 0===x?5:x,w=t.fitBoundsPadding,_=t.allMarkersOnInit,I=void 0!==_&&_,C=t.restrictToMarkersArea,F=void 0===C||C,k=t.showOwnPosition,j=t.flyToZoom,E=t.customFact,P=t.currentPosMarker,M=t.customCardClose,O=t.customLocationRequest,L=t.initialPoiFilters,q=t.poiFilters,T=t.customPoiFilters,N="large"===a,S=s.useLibTheme(),A=S.colors,B=S.globals,V=n.useState(d||""),R=V[0],D=V[1],G=n.useState(!1),H=G[0],U=G[1],Q=n.useState(L||{categoryFilter:[],textFilter:""}),J=Q[0],K=Q[1],X=n.useMemo((function(){return null==o?void 0:o.reduce((function(n,t){for(var i=e.__spreadArray([],n,!0),r=0,a=t.facts||[];r<a.length;r++){var o=a[r];i.includes(o)||i.push(o)}return i}),[])}),[o]),Y=n.useMemo((function(){var e=W((null==J?void 0:J.textFilter)||"",(null==J?void 0:J.categoryFilter)||[],o||[])||o;return Array.from(e).map((function(e){return e[1].item}))}),[null==J?void 0:J.textFilter,null==J?void 0:J.categoryFilter,o]),re=n.useMemo((function(){return null==Y?void 0:Y.find((function(e){return e.id===R}))}),[R,Y]),ae=v.useGeolocation(!0,!1),oe=ae.isSupported,ce=ae.location,de=ae.reset,ue=n.useMemo((function(){var n,t={size:[28,28],anchor:[14,28],sizeActive:[70,70],anchorActive:[35,70],url:l.getSVGDataImg(z.default.createElement(e.LocationPin,null))},i={size:[24,24],anchor:[12,12],sizeActive:[24,24],anchorActive:[12,12],url:l.getSVGDataImg(z.default.createElement(e.CurrentLocation,{iconColor:"#5383EC"}))},r=(null===(n=null==Y?void 0:Y.filter((function(e){return void 0!==e.id})))||void 0===n?void 0:n.map((function(e){return{id:e.id,position:e.position,icon:e.icon||t,isInteractive:!0}})))||[];return oe&&(null==ce?void 0:ce.coords.latitude)&&(null==ce?void 0:ce.coords.longitude)&&r.push({id:"my-current-position-123456789",position:[ce.coords.latitude,ce.coords.longitude],icon:P||i}),r}),[P,oe,null==ce?void 0:ce.coords.latitude,null==ce?void 0:ce.coords.longitude,Y]),pe=g.useLeafletMap({url:u,attribution:f,center:b,zoom:y,activeMarkerId:R,markers:ue,fitBoundsPadding:w,restrictToMarkersArea:F,showZoomControls:!0,zoomControlPosition:"bottomleft",onMarkerClick:function(e){D((function(n){return n===e?"":e}))}}),me=pe.isLoaded,fe=pe.setContainer,ge=pe.flyToActive,he=pe.showAllMarkers,ve=pe.flyToPosition,be=pe.getCurrentZoom;n.useEffect((function(){if(me&&!H)I&&he();else{var e=be(),n=j;void 0!==j&&e>j&&(n=e),ge(n)}}),[R,I,ge,j,be,d,H,me,he]),n.useEffect((function(){H||R===d||U(!0)}),[R,d,H]);var xe=B.sections.poiFilterName,ye=B.sections.poiFactFilterName;return n.useEffect((function(){J.textFilter?m.setUrlParam(xe,J.textFilter):m.deleteUrlParam(xe),p.isValidArray(J.categoryFilter,!1)?m.setUrlParam(ye,J.categoryFilter.join(",")):m.deleteUrlParam(ye)}),[xe,ye,J.textFilter,J.categoryFilter]),n.useEffect((function(){D(""),U(!1)}),[J]),z.default.createElement($,{anchorId:i,bgColor:"image",bgMode:"full",isLarge:N},z.default.createElement(r.Wrapper,{clampWidth:N?"large":"normal"},z.default.createElement(ee,null,z.default.createElement(ne,{ref:fe,isLarge:"large"===a}),(k||q)&&z.default.createElement(le,null,k&&z.default.createElement(te,{onClick:function(){return e.__awaiter(void 0,void 0,void 0,(function(){var n,t,i,r;return e.__generator(this,(function(e){switch(e.label){case 0:return(null===(i=null==ce?void 0:ce.coords)||void 0===i?void 0:i.latitude)&&(null===(r=null==ce?void 0:ce.coords)||void 0===r?void 0:r.longitude)?(n=be(),t=j,void 0!==j&&n>j&&(t=n),ve([ce.coords.latitude,ce.coords.longitude],t),[3,4]):[3,1];case 1:return e.trys.push([1,3,,4]),[4,de()];case 2:return e.sent()&&he(),[3,4];case 3:return e.sent(),[3,4];case 4:return[2]}}))}))}},O||z.default.createElement(e.MyLocation,{iconColor:A.text.default})),q?T?T({filters:J,setFilters:K,pois:o||[],settings:q}):z.default.createElement(Z,{value:J,onChange:K,textFilter:(null==q?void 0:q.textFilter)||void 0,categoryFilter:(null==q?void 0:q.categoryFilter)?e.__assign(e.__assign({},q.categoryFilter),{items:null==X?void 0:X.map((function(e){return{value:e,label:e}||[]}))}):void 0,mobileSubmitLabel:null==q?void 0:q.mobileSubmitLabel,closeIcon:null==q?void 0:q.closeIcon,toggleLabel:null==q?void 0:q.toggleLabel,filterIcon:null==q?void 0:q.filterIcon,indicator:null==q?void 0:q.indicator}):null),re&&re.name&&z.default.createElement(ie,{onClick:function(e){e.target===e.currentTarget&&D("")}},z.default.createElement(se,e.__assign({},re,{onClose:function(){return D("")},customFact:E,customClose:M}))))))}));exports.PoiPartials=Q,exports.PointOfInterestDetail=G,exports.PointOfInterestMap=ce,exports.PointOfInterestOverview=Y;
|
|
2
2
|
//# sourceMappingURL=sections.pois.js.map
|
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\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","PointOfInterestOverview$1","initialPoiFilters","poiFilters","customPoiFilters","globals","filterName","sections","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","edgeRadius","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":"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"}
|
|
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"}
|
package/esm/sections.pois.js
CHANGED
|
@@ -356,10 +356,13 @@ var Content = styled.div.withConfig({
|
|
|
356
356
|
var PoiOverviewFilterBar = styled(PoiFilterBar).withConfig({
|
|
357
357
|
displayName: "PointOfInterestOverview__PoiOverviewFilterBar",
|
|
358
358
|
componentId: "sc-epctuk-2"
|
|
359
|
-
})(templateObject_3$1 || (templateObject_3$1 = __makeTemplateObject(["\n // margin to show prevent section overflow outline\n margin-top: 2px;\n border: solid 1px\n ", ";\n\n &:not(:last-child) {\n margin-bottom: ", "px;\n }\n\n @media ", " {\n border: none;\n }\n"], ["\n // margin to show prevent section overflow outline\n margin-top: 2px;\n border: solid 1px\n ", ";\n\n &:not(:last-child) {\n margin-bottom: ", "px;\n }\n\n @media ", " {\n border: none;\n }\n"])), function (_a) {
|
|
359
|
+
})(templateObject_3$1 || (templateObject_3$1 = __makeTemplateObject(["\n // margin to show prevent section overflow outline\n margin-top: 2px;\n border: solid 1px\n ", ";\n border-radius: ", ";\n\n &:not(:last-child) {\n margin-bottom: ", "px;\n }\n\n @media ", " {\n border: none;\n }\n"], ["\n // margin to show prevent section overflow outline\n margin-top: 2px;\n border: solid 1px\n ", ";\n border-radius: ", ";\n\n &:not(:last-child) {\n margin-bottom: ", "px;\n }\n\n @media ", " {\n border: none;\n }\n"])), function (_a) {
|
|
360
360
|
var theme = _a.theme,
|
|
361
361
|
isInverted = _a.isInverted;
|
|
362
362
|
return isInverted ? getColors(theme).elementBg.light : getColors(theme).elementBg.dark;
|
|
363
|
+
}, function (_a) {
|
|
364
|
+
var theme = _a.theme;
|
|
365
|
+
return theme.globals.sections.edgeRadius;
|
|
363
366
|
}, spacings.nudge * 5, mq.medium);
|
|
364
367
|
|
|
365
368
|
var PointOfInterestOverview = function (_a) {
|
package/esm/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\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","templateObject_1","__makeTemplateObject","spacings","spacer","Facts","POIFacts","templateObject_2","PoiTitle","Heading","templateObject_3","nudge","PoiText","Copy","templateObject_4","PointOfInterestDetail","_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","withLibTheme","poiExactNameFilter","filterQuery","value","regex","RegExp","test","name","poiSoftNameFilter","preparedQuery","toLowerCase","replace","preparedName","poiFactFilter","result","find","fact","preparedFact","poiInfoFilter","preparedText","poiDescriptionFilter","shortDescription","preparedDesc","removeMatchIntersections","array","item","m","prioItem","id","filterPois","pois","prioList","poi","undefined","exactNameMatches","push","apply","map","match","priority","nameMatches","factMatches","infoMatches","descMatches","getFilterMatches","categoryFilters","searchMatches","Map","length","items_1","_i","set","items_2","_b","some","includes","matches","escapeRegExp","matches_1","_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","PointOfInterestOverview","initialPoiFilters","poiFilters","customPoiFilters","globals","filterName","sections","poiFilterName","factFiltername","poiFactFilterName","_d","useState","filters","setFilters","categories","reduce","acc","newCategories","__spreadArray","poiMatches","Array","from","useEffect","setUrlParam","deleteUrlParam","join","settings","cat","sort","a","b","i","POICard","__assign","key","genHeightStyles","css","mainIdent","genIdent","pageFlow","hasMain","mainTopIdent","hasTop","mainBottomIdent","hasBottom","fullIdent","navMainHeight","getNavHeight","navMainTopHeight","navMainBottomHeight","navFullHeight","mapToSelector","idents","concat","refHeight","split","PoiMapSection","isLarge","withRange","MapContainer","templateObject_5","RequestGeolocationBtn","button","primary","default","CardStage","templateObject_7","MapCardView","global","edgeRadius","MapCardHeader","header","templateObject_9","CloseBtn","Overlay","templateObject_11","MapCard","description","action","customClose","onClose","onClick","iconColor","PointOfInterestMap","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","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","__awaiter","zoom_2","sent","clampWidth","ref","MyLocation","ev","target","currentTarget"],"mappings":"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"}
|
|
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","templateObject_1","__makeTemplateObject","spacings","spacer","Facts","POIFacts","templateObject_2","PoiTitle","Heading","templateObject_3","nudge","PoiText","Copy","templateObject_4","PointOfInterestDetail","_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","withLibTheme","poiExactNameFilter","filterQuery","value","regex","RegExp","test","name","poiSoftNameFilter","preparedQuery","toLowerCase","replace","preparedName","poiFactFilter","result","find","fact","preparedFact","poiInfoFilter","preparedText","poiDescriptionFilter","shortDescription","preparedDesc","removeMatchIntersections","array","item","m","prioItem","id","filterPois","pois","prioList","poi","undefined","exactNameMatches","push","apply","map","match","priority","nameMatches","factMatches","infoMatches","descMatches","getFilterMatches","categoryFilters","searchMatches","Map","length","items_1","_i","set","items_2","_b","some","includes","matches","escapeRegExp","matches_1","_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","initialPoiFilters","poiFilters","customPoiFilters","filterName","poiFilterName","factFiltername","poiFactFilterName","_d","useState","filters","setFilters","categories","reduce","acc","newCategories","__spreadArray","poiMatches","Array","from","useEffect","setUrlParam","deleteUrlParam","join","settings","cat","sort","a","b","i","POICard","__assign","key","genHeightStyles","css","mainIdent","genIdent","pageFlow","hasMain","mainTopIdent","hasTop","mainBottomIdent","hasBottom","fullIdent","navMainHeight","getNavHeight","navMainTopHeight","navMainBottomHeight","navFullHeight","mapToSelector","idents","concat","refHeight","split","PoiMapSection","isLarge","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","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","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","__awaiter","zoom_2","sent","clampWidth","ref","MyLocation","ev","target","currentTarget"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PointOfInterestOverview.d.ts","sourceRoot":"","sources":["../../../../src/components/sections/pois/PointOfInterestOverview.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,8BAAmC;AAClD,OAAgB,EAAE,YAAY,EAAE,6BAAkC;AAClE,OAAO,KAAuC,MAAM,OAAO,CAAC;AAM5D,OAAO,EAAE,WAAW,EAAE,+BAAoC;
|
|
1
|
+
{"version":3,"file":"PointOfInterestOverview.d.ts","sourceRoot":"","sources":["../../../../src/components/sections/pois/PointOfInterestOverview.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,8BAAmC;AAClD,OAAgB,EAAE,YAAY,EAAE,6BAAkC;AAClE,OAAO,KAAuC,MAAM,OAAO,CAAC;AAM5D,OAAO,EAAE,WAAW,EAAE,+BAAoC;AAuC1D,UAAU,SAAU,SAAQ,YAAY;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,KAAK,CAAC,IAAI,GAAG;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACtD;AAED,oBAAY,2BAA2B,GAAG,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AAExE,MAAM,WAAW,kBAAkB;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,UAAU,CAAC,EAAE;QACT,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,OAAO,KAAK,KAAK,CAAC,SAAS,CAAC;QACjD,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,OAAO,KAAK,KAAK,CAAC,SAAS,CAAC;QACvD,SAAS,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,OAAO,KAAK,KAAK,CAAC,SAAS,CAAC;KACzD,CAAC;IACF,SAAS,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,OAAO,KAAK,KAAK,CAAC,SAAS,CAAC;IACtD,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,OAAO,KAAK,KAAK,CAAC,SAAS,CAAC;IACvD,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE;QAChB,MAAM,EAAE,OAAO,CAAC;QAChB,UAAU,CAAC,EAAE,OAAO,CAAC;KACxB,KAAK,KAAK,CAAC,SAAS,CAAC;CACzB;AA4JD,eAAO,MAAM,gCAAgC;IAzJzC,wDAAwD;;IAGxD,iCAAiC;;IAGjC,yBAAyB;;IAGzB,gCAAgC;;IAGhC,0BAA0B;;gCAEC;QACvB,IAAI,EAAE,2BAA2B,EAAE,CAAC;QACpC,OAAO,EAAE,WAAW,CAAC;QACrB,UAAU,EAAE,MAAM,QAAQ,CAAC,MAAM,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC;QAC9D,QAAQ,CAAC,EAAE,kBAAkB,CAAC;KACjC,KAAK,MAAM,SAAS;EAsI8C,CAAC;;IAzJpE,wDAAwD;;IAGxD,iCAAiC;;IAGjC,yBAAyB;;IAGzB,gCAAgC;;IAGhC,0BAA0B;;;;;;;;;;;AA8I9B,wBAAqD"}
|