{"version":3,"file":"static/js/991.e80e466b.chunk.js","mappings":"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","sources":["webpack://frontend/./src/components/standDrawer/standDrawer.module.less?0c83","components/standDrawer/standDrawer.tsx","webpack://frontend/./src/components/map/map.module.less?0dbe","pages/home/home.strings.ts","components/resizableMarker/resizableMarker.ts","components/map/mapHelpers.ts","components/map/map.tsx","helpers/localizableHelper.tsx","pages/allStands/allStands.strings.ts","pages/components/localizableInput/localizableInput.tsx","pages/components/zoneIllustrationAvatar/zoneIllustrationAvatar.tsx"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"zoneName\":\"standDrawer_zoneName__7nqjG\",\"standPill\":\"standDrawer_standPill__oA4da\",\"drawer\":\"standDrawer_drawer__2dT2c\",\"applicationNumber\":\"standDrawer_applicationNumber__FOPG0\",\"institutionName\":\"standDrawer_institutionName__1rOaa\",\"institutionDescription\":\"standDrawer_institutionDescription__kykFf\",\"demonstrationsHeader\":\"standDrawer_demonstrationsHeader__q-0M1\",\"drawerTitle\":\"standDrawer_drawerTitle__n-dz8\",\"noZone\":\"standDrawer_noZone__ABEmv\",\"subtitle\":\"standDrawer_subtitle__bIh4l\",\"title\":\"standDrawer_title__dTw8w\",\"demonstrationWrapper\":\"standDrawer_demonstrationWrapper__-aw4K\",\"drawerTitleWrapper\":\"standDrawer_drawerTitleWrapper__ZKHd2\",\"handle\":\"standDrawer_handle__JIg5W\",\"closeButton\":\"standDrawer_closeButton__s5CHd\",\"addButton\":\"standDrawer_addButton__FKtx3\"};","import {Drawer, message} from \"antd\";\nimport {ApplicationUserApi, DemonstrationDto, StandDto, StandWithZoneDto, ZoneDto} from \"../../api\";\nimport {useEffect, useRef, useState} from \"react\";\nimport styles from './standDrawer.module.less';\nimport {useSelector} from \"react-redux\";\nimport {getGlobalLanguage} from \"../../redux/languageSlice\";\nimport {getEntryValueForLanguageOrDefault} from \"../../pages/components/localizableInput/localizableInput\";\nimport Paragraph from \"antd/lib/typography/Paragraph\";\nimport {ArrowsAltOutlined, CheckOutlined, CloseOutlined, DeleteOutlined} from \"@ant-design/icons\";\nimport {useInjection} from \"inversify-react\";\nimport ApiService from \"../../services/apiService\";\nimport {AsyncButton} from \"digimuth-components/dist\";\nimport allStandsStrings from \"../../pages/allStands/allStands.strings\";\nimport {useAuth} from \"oidc-react\";\nimport {useNavigate} from \"react-router-dom\";\nimport {RoutingPaths} from \"../../pages/routing/routingContainer\";\nimport ReactGA from \"react-ga4\";\nimport ImageAvatar from \"../../pages/components/zoneIllustrationAvatar/zoneIllustrationAvatar\";\n\nfunction getInitialHeight(stand?: StandDto) {\n return window.innerHeight * (stand?.institution || (stand?.demonstrations?.length || 0) > 0 ? .6 : .4);\n}\n\nexport default function StandDrawer(props: StandDrawerProps) {\n const [open, setOpen] = useState(false);\n const language = useSelector(getGlobalLanguage);\n const apiService = useInjection(ApiService);\n const [hoveringOnRemoveButton, setHoveringOnRemoveButton] = useState(false);\n const auth = useAuth();\n const navigate = useNavigate();\n\n const onAddToFavourites = async (record: StandDto) => {\n\n if (!auth.userData) {\n navigate(RoutingPaths.login.route);\n return;\n }\n\n try {\n await apiService.getApi(ApplicationUserApi).standIdAddToFavouritesPost(record.id!)\n await props.refreshStandList();\n message.success(\"Pomyślnie dodano wpis do ścieżki zwiedzania\");\n ReactGA.event({\n category: \"Favourites\",\n action: \"add\",\n label: record.standNumber!\n })\n } catch (e: any) {\n console.log(e.response.data);\n }\n }\n\n const onRemoveFromFavouritesClicked = async (record: StandWithZoneDto) => {\n try {\n await apiService.getApi(ApplicationUserApi).standIdRemoveFromFavouritesDelete(record.id!)\n await props.refreshStandList();\n message.success(\"Pomyślnie usunięto wpis ze ścieżki zwiedzania\");\n ReactGA.event({\n category: \"Favourites\",\n action: \"remove\",\n label: record.standNumber!\n });\n } catch (e: any) {\n console.log(e.response.data);\n }\n }\n\n useEffect(() => {\n if (props.stands?.length) {\n ReactGA.event({\n category: \"Stand\",\n action: \"standOpened\",\n label: props.stands[0].standNumber!\n })\n setOpen(true);\n }\n }, [props.stands]);\n\n useEffect(() => {\n if (!open) {\n props.onClose();\n }\n }, [open]);\n\n if (!props.stands?.length) {\n // return empty drawer to preserve the closing animation\n return setOpen(false)} mask={false}\n />;\n }\n\n const stands = props.stands.sort((a, b) => getEntryValueForLanguageOrDefault(\"pl-PL\", a.institution?.name || []).localeCompare(getEntryValueForLanguageOrDefault(\"pl-PL\", b.institution?.name || [])));\n const zone = props.zone;\n\n return setOpen(false)} mask={false}\n title={ {\n setOpen(false)\n props.onClose();\n }}\n stand={stands[0]}\n description={getEntryValueForLanguageOrDefault(language, stands[0]?.description || [])}\n />}\n height={getInitialHeight(stands[0])}\n footer={!props.isInPath ?\n onAddToFavourites(stands![0])}\n className={styles.addButton}\n disabled={!stands[0].zoneId}\n >\n {allStandsStrings.addToFavourites[language]}\n : onRemoveFromFavouritesClicked(stands![0])}\n icon={hoveringOnRemoveButton ? : }\n className={styles.addButton}\n onMouseEnter={() => setHoveringOnRemoveButton(true)}\n onMouseLeave={() => setHoveringOnRemoveButton(false)}\n >\n {hoveringOnRemoveButton ? allStandsStrings.removeFromFavourites[language] : allStandsStrings.inFavourites[language]}\n }\n >\n {stands.map((stand, i) => <>\n \n {getEntryValueForLanguageOrDefault(language, stand.institution?.name || []) || getEntryValueForLanguageOrDefault(language, stand?.description || [])}\n \n \n {(zone && stand.institution) &&\n
{allStandsStrings.individualStand[language]}: {stand.standNumber}
}\n {language == \"pl-PL\" && \n }}\n >\n {stand.institution?.description}\n }\n {(stand.demonstrations?.length || 0) > 0 && <>\n {allStandsStrings.demonstrationsOnStand[language]}\n {stand.demonstrations?.map(d => )}\n }\n )}\n \n}\n\nfunction DemonstrationEntry(props: { demonstration: DemonstrationDto }) {\n const language = useSelector(getGlobalLanguage);\n\n return
\n {getEntryValueForLanguageOrDefault(language, props.demonstration.title!)}\n }}>\n {getEntryValueForLanguageOrDefault(language, props.demonstration.description!)}\n \n
\n}\n\nfunction getZoneIllustrationUrl(illustrationId: number): string {\n return `${process.env.REACT_APP_URL}/api/Image/${illustrationId.toString()}/FileStream`;\n}\n\nfunction DrawerTitle(props: { zone?: ZoneDto, onClose: () => any, description?: string, stand?: StandDto }) {\n const language = useSelector(getGlobalLanguage);\n const [mouseDown, setMouseDown] = useState(false);\n const el = useRef();\n const height = useRef(getInitialHeight(props.stand));\n\n const onTouch = (e: TouchEvent) => {\n height.current = window.innerHeight - e.touches[0].clientY;\n e.preventDefault();\n e.stopPropagation();\n }\n\n const onTouchEnd = () => {\n document.removeEventListener(\"touchmove\", onTouch);\n document.removeEventListener(\"touchend\", onTouchEnd);\n setMouseDown(false);\n }\n\n const onPointerMove = (e: MouseEvent) => {\n if (!e.buttons) {\n document.removeEventListener(\"mousemove\", onPointerMove);\n setMouseDown(false);\n return;\n }\n\n height.current = window.innerHeight - e.clientY;\n e.stopPropagation();\n }\n\n useEffect(() => {\n document.body.style.cursor = mouseDown ? \"grabbing\" : \"auto\";\n document.body.style.userSelect = mouseDown ? \"none\" : \"auto\";\n document.body.style.overscrollBehavior = mouseDown ? \"none\" : \"auto\";\n document.body.style.touchAction = mouseDown ? \"none\" : \"auto\";\n if (el.current) {\n (el.current as any).style.transition = mouseDown ? \"none\" : \"all .3s\";\n }\n\n if (!mouseDown) {\n if (height.current < 150) {\n height.current = getInitialHeight(props.stand);\n props.onClose();\n\n setTimeout(() => {\n if (el.current) {\n el.current!.setAttribute(\"style\", `height:${height.current}px`);\n }\n }, 200);\n }\n\n return;\n }\n\n const interval = setInterval(() => {\n if (el.current) {\n el.current!.setAttribute(\"style\", `height:${height.current}px;transition:none;`);\n }\n }, 16);\n\n return () => clearInterval(interval);\n }, [mouseDown, props.stand]);\n\n const onPointerDown = (e: React.PointerEvent) => {\n\n if (window.innerWidth - e.pageX < 80) {\n return;\n }\n\n el.current = document.getElementsByClassName(\"ant-drawer-content-wrapper\")[0];\n document.addEventListener(\"mousemove\", onPointerMove);\n document.addEventListener(\"touchmove\", onTouch, {passive: false});\n document.addEventListener(\"touchend\", onTouchEnd);\n document.body.ontouchmove = e => e.preventDefault();\n setMouseDown(true);\n }\n\n const onPointerUp = () => {\n document.removeEventListener(\"mousemove\", onPointerMove);\n document.removeEventListener(\"touchmove\", onTouch);\n document.body.ontouchmove = undefined;\n setMouseDown(false);\n }\n\n return
\n
\n props.onClose()}/>\n
\n {props.zone ? <>\n \n
\n \n {allStandsStrings.zone[language]} {props.zone.zoneIdentifier}\n \n \n {getEntryValueForLanguageOrDefault(language, props.zone.name!)}\n \n
\n :
\n \n {props.description}\n \n
}\n
\n
\n}\n\ninterface StandDrawerProps {\n refreshStandList: () => Promise,\n stands?: StandDto[],\n zone?: ZoneDto,\n onClose: () => any,\n isInPath: boolean\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"mapContainer\":\"map_mapContainer__MDGtD\",\"pageContainer\":\"map_pageContainer__N9HN2\",\"activeMarker\":\"map_activeMarker__aclkp\",\"favouriteStand\":\"map_favouriteStand__I94xh\",\"youAreHereMarker\":\"map_youAreHereMarker__ieezK\",\"subtitle\":\"map_subtitle__N+LnU\"};","const homeStrings = {\n youAreHere: {\n \"pl-PL\": \"Tu jesteś!\",\n \"uk-UA\": \"ти тут!\"\n }\n}\n\nexport default homeStrings;\n","import maplibregl from \"maplibre-gl\";\n\nconst baseMarkerSize = 32;\n\nexport class ResizableMarker extends maplibregl.Marker {\n baseSize?: number;\n backgroundColor?: string;\n childrenElement?: HTMLElement;\n timeout?: NodeJS.Timeout;\n\n _update(e?: { type: 'move' | 'moveend'; } | undefined): void {\n super._update(e);\n\n if (!this._map) {\n return;\n }\n\n const zoom = this._map.getZoom();\n const scale = Math.pow(2, zoom - 11);\n const constrainedScale = scale / (Math.min(2, zoom - 12) + 3.5);\n const opacity = Math.min(1, Math.max(0, (14 - zoom) * 2));\n\n if (!this.baseSize) {\n if (this.childrenElement) {\n if (opacity === 0) {\n this.childrenElement!.style.display = \"none\";\n } else {\n this.childrenElement!.style.display = \"flex\";\n this.childrenElement!.style.scale = constrainedScale.toString();\n this.childrenElement!.style.opacity = opacity.toString();\n }\n \n return;\n } else {\n clearTimeout(this.timeout);\n\n this.timeout = setTimeout(() => {\n const markerSize = baseMarkerSize * scale / (Math.min(2, zoom - 12) + 3.5);\n this._element.style.width = markerSize + \"px\";\n this._element.style.height = markerSize + \"px\";\n }, 5);\n\n return;\n }\n }\n\n if (e?.type == \"move\") {\n const size = this.baseSize * scale;\n\n (this._element as any).height = size;\n (this._element as any).width = size;\n\n return;\n }\n\n let size = Math.floor(this.baseSize * scale);\n\n if (size % 2 != 0) {\n ++size;\n }\n\n (this._element as any).height = size;\n (this._element as any).width = size;\n }\n}","import { ZoneDto } from \"../../api\";\nimport { ResizableMarker } from \"../resizableMarker/resizableMarker\";\nimport illustrations from './illustrations.json';\nimport markersOthers from './markers-others.json';\nimport wheelchairMarkers from './wheelchair-markers.json';\nimport disabledRoutes from './disabled-routes.json';\n\nexport const animationSpeed = 2;\nexport const animationFlyCurve = 1.2;\n\nexport function attachZoneMarker(map: maplibregl.Map, zone: IZone, highContrast: boolean) {\n function createMarkers() {\n const elIdentifier = document.createElement(\"div\");\n elIdentifier.className = \"zone-identifier\";\n elIdentifier.innerHTML = zone.identifier ?? \"\";\n\n const elLabel = document.createElement(\"div\");\n elLabel.className = \"zone-label\";\n \n const splitZoneName = (zone.name ?? \"\").split(' ');\n const zoneName = `${splitZoneName[0]} ${splitZoneName.slice(1).join(\" \")}`;\n elLabel.innerHTML = zoneName;\n\n const backgroundColor = !highContrast ? zone.primaryColor : \"#FFFFFF\";\n\n const elContainer = document.createElement(\"div\");\n elContainer.setAttribute(\"class\", \"zone-container\");\n elContainer.setAttribute(\"style\", `background:${backgroundColor}`);\n\n elContainer.onclick = (ev) => {\n if (+elContainer.style.opacity > 0) {\n\n map.setPadding({left: 0, right: 0, top: 0, bottom: 0});\n map.fitBounds(zone.bounds, {\n maxZoom: 15,\n padding: {left: 30, right: 30, top: 30, bottom: 30},\n linear: false,\n speed: animationSpeed / 2,\n curve: animationFlyCurve\n });\n\n ev.stopImmediatePropagation();\n ev.stopPropagation();\n ev.preventDefault();\n }\n }\n\n const elWrapper = document.createElement(\"div\");\n elWrapper.setAttribute(\"class\", \"zone-wrapper-\" + zone.identifier.toLowerCase());\n\n elContainer.appendChild(elIdentifier);\n elContainer.appendChild(elLabel);\n elWrapper.appendChild(elContainer);\n\n const marker = new ResizableMarker({element: elWrapper})\n .setLngLat(zone.coordinates);\n\n marker.backgroundColor = backgroundColor;\n marker.childrenElement = elContainer;\n\n marker.addTo(map);\n }\n\n createMarkers();\n}\n\nexport function createIllustrationMarkers(map: maplibregl.Map) {\n\n function createMarkers() {\n const features = illustrations.features;\n\n for (let i = 0; i < features.length; i++) {\n const props = features[i].properties;\n\n const point = (features[i].geometry as any).coordinates as number[];\n\n const id = props.kind as string;\n\n const elImage = document.createElement(\"img\");\n const scale = Math.pow(2, map.getZoom() - 11);\n elImage.height = props.size * scale;\n elImage.width = props.size * scale;\n elImage.alt = '';\n elImage.className = `illustration illustration-${props.kind}`;\n elImage.src = `/2024/images/illustrations/${props.kind}.svg`;\n\n const marker = new ResizableMarker({\n element: elImage,\n rotationAlignment: \"map\",\n pitchAlignment: \"map\",\n anchor: \"center\"\n })\n .setLngLat([point[0], point[1]]);\n\n marker.baseSize = props.size;\n\n marker.addTo(map);\n }\n }\n\n createMarkers();\n}\n\nexport function loadSymbolByName(name: string, map: maplibregl.Map, highContrast: boolean): Promise {\n return new Promise((resolve, reject) => {\n const el = document.createElement(\"img\");\n el.src = `2024/images/symbols${highContrast ? \"-contrast\" : \"\"}/${name}.svg`;\n el.onload = () => {\n map.addImage(name, el, {pixelRatio: 2});\n resolve();\n }\n });\n}\n\nexport async function addOtherMarkers(map: maplibregl.Map, highContrast: boolean, showFacilities: boolean) {\n const promises = [\"bus\", \"blood\", \"cafe\", \"club\", \"food\", \"food-small\", \"games\", \"ice-cream\", \"info\", \"robodog\", \"locker\", \"medic\", \"metro\", \"parking\", \"relax\", \"stairs\", \"photobooth\", \"stage\", \"train\", \"tram\", \"wc\", \"water\", \"wheelchair-entrance\", \"wheelchair-elevator\", \"wheelchair-ramp\", \"wheelchair-ramp-reverse\", \"wheelchair-ramp-1\", \"wheelchair-ramp-2\", \"wheelchair-ramp-3\"]\n .map(v => loadSymbolByName(v, map, highContrast));\n\n await Promise.all(promises);\n\n map.addSource('wheelchair-markers', {\n type: \"geojson\",\n data: wheelchairMarkers\n })\n\n map.addSource('disabled-routes', {\n type: \"geojson\",\n data: disabledRoutes\n })\n\n map.addSource('markers-others', {\n \"type\": \"geojson\",\n data: markersOthers\n });\n\n map.addLayer({\n 'id': 'points-others',\n 'type': 'symbol',\n 'source': 'markers-others',\n 'layout': {\n \"symbol-z-order\": \"source\",\n 'icon-image': ['get', 'type'],\n 'icon-size': ['interpolate', ['exponential', 2], ['zoom'], 12, 0.35, 16, 3],\n 'icon-overlap': 'always'\n },\n });\n\n map.addLayer({\n 'id': 'lines-disabled-routes-shadow',\n 'type': 'line',\n 'source': 'disabled-routes',\n 'paint': {\n 'line-color': '#000000',\n 'line-width': 4,\n 'line-dasharray': [2, 1],\n 'line-translate': [1, 1],\n 'line-opacity': .8\n }\n });\n\n map.addLayer({\n 'id': 'lines-disabled-routes',\n 'type': 'line',\n 'source': 'disabled-routes',\n 'paint': {\n 'line-color': '#bb70ef',\n 'line-width': 4,\n 'line-dasharray': [2, 1],\n 'line-opacity': .8\n }\n });\n\n map.addLayer({\n 'id': 'points-wheelchairs',\n 'type': 'symbol',\n 'source': 'wheelchair-markers',\n 'layout': {\n \"symbol-z-order\": \"source\",\n 'icon-image': ['get', 'type'],\n 'icon-size': ['interpolate', ['exponential', 2], ['zoom'], 12, 0.15, 16, 2.25],\n 'icon-overlap': 'always'\n }\n });\n\n if (!showFacilities) {\n map.setLayoutProperty('points-wheelchairs', 'visibility', 'none');\n map.setLayoutProperty('lines-disabled-routes', 'visibility', 'none');\n map.setLayoutProperty('lines-disabled-routes-shadow', 'visibility', 'none');\n }\n}\n\nexport interface IMapProps {\n map: React.MutableRefObject,\n clickDisabled?: boolean;\n onMapLoaded?: () => any\n}\n\nexport interface IZone {\n zoneId: number | undefined,\n identifier: string,\n name: string | null | undefined,\n coordinates: [number, number],\n features: any[],\n bounds: [[number, number], [number, number]],\n dto: ZoneDto,\n primaryColor: string;\n}\n","import React, {useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState} from 'react';\nimport ApiService from \"../../services/apiService\";\nimport maplibregl, {GeoJSONSource, MapMouseEvent} from 'maplibre-gl';\nimport allZonesGeoJson from './zones.json';\nimport markersAll from './markers-all.json';\nimport {useInjection} from \"inversify-react\";\nimport {StandApi, StandDto, YouAreHereApi, YouAreHereDto, ZoneApi, ZoneDto} from \"../../api\";\nimport {getGlobalLanguage} from \"../../redux/languageSlice\";\nimport {useSelector} from \"react-redux\";\nimport 'maplibre-gl/dist/maplibre-gl.css';\nimport StandDrawer from '../standDrawer/standDrawer';\nimport {useAuth} from 'oidc-react';\nimport {useLocation, useParams} from \"react-router-dom\";\nimport styles from \"./map.module.less\"\nimport {loadingSpin} from '../../pages/routing/routingContainer';\nimport {getContrast, getFacilities} from '../../redux/settingsSlice';\nimport homeStrings from '../../pages/home/home.strings';\nimport {getEntryValueForLanguageOrDefault} from '../../pages/components/localizableInput/localizableInput';\nimport {ResizableMarker} from '../resizableMarker/resizableMarker';\nimport { IMapProps, IZone, addOtherMarkers, animationFlyCurve, animationSpeed, attachZoneMarker, createIllustrationMarkers } from './mapHelpers';\n\nlet activeMarker: ResizableMarker | undefined;\n\nconst lng = 0.21;\nconst lat = -0.14;\nconst zoom = 12;\n\nexport default function Map(props: IMapProps) {\n const globalLanguage = useSelector(getGlobalLanguage);\n const apiService = useInjection(ApiService);\n const zoneApi = useMemo(() => apiService.getApi(ZoneApi), [apiService]);\n const standApi = useMemo(() => apiService.getApi(StandApi), [apiService]);\n const auth = useAuth();\n const mapContainer = useRef(null);\n const youAreHereAdded = useRef(false);\n const map = props.map;\n const location = useLocation();\n\n const [isLoading, setIsLoading] = useState(true);\n const [fullyLoaded, setFullyLoaded] = useState(false);\n const [allStands, setAllStands] = useState();\n const [allZones, setAllZones] = useState();\n const [standsPath, setStandsPath] = useState([]);\n const [currentStands, setCurrentStands] = useState([]);\n const [currentZone, setCurrentZone] = useState();\n const [isCurrentMarkerInStandsPath, setIsCurrentMarkerInStandsPath] = useState(false);\n const highContrast = useSelector(getContrast);\n const facilitiesValue = useSelector(getFacilities);\n\n const {id} = useParams();\n\n const youAreHere = useRef(null);\n\n const fetchYouAreHere = useCallback(async () => {\n try {\n const response = await apiService.getApi(YouAreHereApi).apiYouAreHereIdGet(+id!);\n youAreHere.current = response.data;\n } catch (e: any) {\n return e.response?.data;\n }\n }, [apiService, id]);\n\n const handleMapClick = (stands: StandDto[], zones: ZoneDto[], bottomPadding?: number, handleAsStand?: boolean) => (ev: MapMouseEvent & any) => {\n if (!ev.features?.[0]) {\n return;\n }\n\n let closestMarker = ev.features?.[0];\n\n if (handleAsStand) {\n closestMarker = null;\n let closestDistance: number;\n markersAll.features.forEach(f => {\n const distance = (ev as MapMouseEvent).lngLat.distanceTo(new maplibregl.LngLat(f.geometry.coordinates[0], f.geometry.coordinates[1]));\n\n if (!closestMarker || closestDistance > distance) {\n closestMarker = f;\n closestDistance = distance;\n\n return;\n }\n });\n }\n\n const selectedStands = stands.filter(s => s.standNumber === closestMarker.properties?.name);\n\n if (!selectedStands.length) {\n return;\n }\n\n const coordinates = (closestMarker.geometry as any).coordinates;\n\n activeMarker?.remove();\n\n map.current!.flyTo({\n center: coordinates,\n zoom: 14.5,\n padding: {\n bottom: bottomPadding || (handleAsStand || selectedStands.length > 1|| selectedStands.some(s => s.institution) || selectedStands.some(s => s.demonstrations?.length! > 0) ? 375 : 0)\n },\n speed: animationSpeed,\n curve: animationFlyCurve\n });\n\n if (handleAsStand || selectedStands.length > 1 || selectedStands.some(s => s.institution) || selectedStands.some(s => s.demonstrations?.length! > 0) ) {\n const zone = zones.find(z => z.id == selectedStands[0].zoneId);\n\n setCurrentStands(selectedStands);\n setCurrentZone(zone);\n\n return coordinates;\n }\n\n new maplibregl.Popup()\n .setLngLat([coordinates[0], coordinates[1] + 0.0007])\n .setHTML(`${getEntryValueForLanguageOrDefault(globalLanguage, selectedStands[0].description!)}`)\n .addTo(map.current!);\n\n return coordinates;\n };\n\n const showYouAreHere = () => {\n if (youAreHere.current && !youAreHereAdded.current) {\n youAreHereAdded.current = true;\n\n const youAreHereMarker = document.createElement('div');\n youAreHereMarker.className = styles.youAreHereMarker;\n\n const arrowEl = document.createElement(\"img\");\n arrowEl.src = `/2024/images/symbols/arrow.svg`;\n arrowEl.alt = '';\n youAreHereMarker.appendChild(arrowEl);\n\n const textWrapper = document.createElement(\"div\");\n\n const textEl = document.createElement(\"span\");\n textEl.innerHTML = homeStrings.youAreHere[globalLanguage];\n textWrapper.appendChild(textEl);\n\n const textSubtitleEl = document.createElement(\"span\");\n textSubtitleEl.className = styles.subtitle;\n textSubtitleEl.innerHTML = youAreHere.current.name!;\n textWrapper.appendChild(textSubtitleEl);\n\n youAreHereMarker.appendChild(textWrapper);\n\n new ResizableMarker({element: youAreHereMarker, anchor: \"bottom-left\"})\n .setLngLat([youAreHere.current.x!, youAreHere.current.y!])\n .addTo(map.current!);\n }\n };\n\n useEffect(() => {\n if (id) {\n fetchYouAreHere().then(() => {\n if (map.current) {\n showYouAreHere();\n }\n });\n }\n }, [fetchYouAreHere, id]);\n\n useEffect(() => {\n if (map.current && map.current.isStyleLoaded()) {\n if (facilitiesValue === false) {\n map.current.setLayoutProperty('points-wheelchairs', 'visibility', 'none');\n map.current.setLayoutProperty('lines-disabled-routes', 'visibility', 'none');\n map.current.setLayoutProperty('lines-disabled-routes-shadow', 'visibility', 'none');\n } else {\n map.current.setLayoutProperty('points-wheelchairs', 'visibility', 'visible');\n map.current.setLayoutProperty('lines-disabled-routes', 'visibility', 'visible');\n map.current.setLayoutProperty('lines-disabled-routes-shadow', 'visibility', 'visible');\n }\n }\n }, [facilitiesValue]);\n\n const refreshStandsList = useCallback(async () => {\n try {\n if (!isLoading && allStands?.length && auth.userData) {\n const standsPath = await standApi.userIdStandsPathGet(+auth.userData!.profile.sub);\n setStandsPath(standsPath.data);\n await updateFavouriteMarkers(standsPath.data);\n }\n } catch (e: any) {\n console.log(e.response?.data);\n }\n }, [apiService, auth, allStands, isLoading]);\n\n useEffect(() => {\n refreshStandsList();\n }, [refreshStandsList])\n\n useEffect(() => {\n if (!currentStands?.length && map.current) {\n\n // animate padding reset\n const interval = setInterval(() => {\n\n const padding = map.current!.getPadding();\n\n if (padding.bottom > 0 || padding.left > 0 || padding.right > 0 || padding.top > 0) {\n map.current!.setPadding({left: Math.max(0, padding.left - 10), right: Math.max(0, padding.right - 10), top: Math.max(0, padding.top - 10), bottom: Math.max(0, padding.bottom - 10)});\n\n return;\n }\n\n clearInterval(interval);\n }, 1);\n }\n\n if (!standsPath) {\n setIsCurrentMarkerInStandsPath(false);\n\n return;\n }\n\n setIsCurrentMarkerInStandsPath(!!standsPath.find(s => s.id === currentStands[0]?.id));\n }, [currentStands, standsPath]);\n\n function addZone(standsGeoJson: any, stands: StandDto[], zone: ZoneDto) {\n if (standsGeoJson.features.length <= 0) {\n return;\n }\n\n map.current!.addSource('markers-stands-' + zone.id, {\n \"type\": \"geojson\",\n data: standsGeoJson\n });\n\n map.current!.addLayer({\n 'id': 'points-stands-' + zone.id,\n 'type': 'symbol',\n 'source': 'markers-stands-' + zone.id,\n 'layout': {\n \"symbol-z-order\": \"source\",\n 'icon-image': 'stand-marker',\n 'icon-size': ['interpolate', ['exponential', 2], ['zoom'], 12, 0.095, 16, 1.1],\n 'icon-overlap': 'always'\n },\n });\n\n const handleStandClick = (ev: MapMouseEvent & any) => {\n\n const coordinates = handleMapClick(stands, [zone], 400, true)(ev);\n\n if (!coordinates) {\n return;\n }\n\n if (activeMarker) {\n activeMarker.remove();\n }\n\n const el = document.createElement('div');\n el.className = 'marker ' + styles.activeMarker;\n\n activeMarker = new ResizableMarker(el)\n .setLngLat(coordinates)\n .addTo(map.current!);\n };\n\n\n if (!props.clickDisabled) {\n map.current!.on('mouseover', 'points-stands-' + zone.id, () => {\n map.current!.getCanvas().style.cursor = 'pointer'\n });\n\n map.current!.on('mouseleave', 'points-stands-' + zone.id, () => {\n map.current!.getCanvas().style.cursor = ''\n });\n\n map.current!.on('click', 'points-stands-' + zone.id, handleStandClick);\n }\n\n const standNumber = (location.state as any)?.standNumber;\n\n for (const ele of standsGeoJson.features) {\n\n if (ele.properties.name === standNumber) {\n const selectedStands = stands.filter(e => e.standNumber == ele.properties.name);\n\n setCurrentStands(selectedStands);\n setCurrentZone(zone);\n\n setTimeout(() => handleStandClick({features: [ele], lngLat: new maplibregl.LngLat(ele.geometry.coordinates[0], ele.geometry.coordinates[1])}), 250);\n }\n }\n }\n\n const updateFavouriteMarkers = async (standsPath: StandDto[]) => {\n const standFeatures = markersAll.features.map((f: any) => ({\n stand: allStands?.find(e => e.standNumber == f.properties.name),\n feature: f\n })).filter((sf: any) => sf.stand);\n\n const favouriteStandsGeoJson = {\n ...markersAll,\n features: standFeatures.filter((sf: any) => standsPath.some((s: any) => s.id === sf.stand.id)).map((sf: any) => sf.feature)\n };\n\n (map.current!.getSource('favourites-stands') as GeoJSONSource).setData(favouriteStandsGeoJson as any);\n }\n\n useLayoutEffect(() => {\n\n maplibregl.prewarm();\n\n if (map.current) {\n map.current.remove();\n }\n\n if (!mapContainer.current) {\n return;\n }\n\n setIsLoading(true);\n setFullyLoaded(false);\n\n const allCoords = markersAll.features.map(f => f.geometry.coordinates);\n const allCoordsX = allCoords.map(c => c[0]);\n const allCoordsY = allCoords.map(c => c[1]);\n\n map.current = new maplibregl.Map({\n container: mapContainer.current!,\n style: {\n \"version\": 8,\n \"name\": \"Raster tiles\",\n \"center\": [0, 0],\n \"zoom\": 0,\n \"sources\": {\n \"raster-tiles\": {\n \"type\": \"raster\",\n \"tiles\": [\n `2024/map${highContrast ? \"-contrast\" : \"\"}/{z}/{x}/{y}.png`,\n ],\n \"tileSize\": 512,\n \"minzoom\": 10,\n \"maxzoom\": 16,\n }\n },\n \"layers\": [\n {\n \"id\": \"background\",\n \"type\": \"background\",\n \"paint\": {\n \"background-color\": highContrast ? \"#e0e0e0\" : \"#b8e8c7\"\n }\n },\n {\n \"id\": \"simple-tiles\",\n \"type\": \"raster\",\n \"source\": \"raster-tiles\"\n }\n ]\n },\n center: [lng, lat],\n antialias: false,\n bearing: 0,\n zoom: zoom,\n minZoom: 10,\n maxZoom: 16,\n maxPitch: 30,\n crossSourceCollisions: false,\n touchPitch: true,\n pitch: 0,\n maxBounds: [[0, -0.3], [0.32, 0.15]],\n fadeDuration: 150,\n pixelRatio: Math.max(2, devicePixelRatio),\n bounds: [[Math.min(...allCoordsX) - 0.022, Math.min(...allCoordsY) - 0.052], [Math.max(...allCoordsX) + 0.022, Math.max(...allCoordsY) + 0.022]]\n });\n\n const loadData = async (): Promise<{ zones: ZoneDto[], stands: StandDto[] }> => {\n\n if (allStands && allZones) {\n return {stands: allStands, zones: allZones};\n }\n\n const tasks = [];\n\n tasks.push(standApi.apiStandGet());\n tasks.push(zoneApi.apiZoneGet());\n\n const [standsResponse, zonesResponse] = await Promise.all(tasks);\n\n return { stands: standsResponse.data, zones: zonesResponse.data };\n };\n\n loadData().then(e => {\n\n const favouriteStandsGeoJson = {\n ...markersAll,\n features: []\n };\n \n setAllStands(e.stands);\n setAllZones(e.zones);\n\n youAreHereAdded.current = false;\n\n const initMap = () => {\n\n map.current!.addSource('favourites-stands', {\n \"type\": \"geojson\",\n data: favouriteStandsGeoJson\n });\n\n setIsLoading(false);\n\n map.current!.addControl(new maplibregl.NavigationControl({}), 'top-left');\n\n if (!highContrast) {\n createIllustrationMarkers(map.current!);\n }\n\n const zones: IZone[] = [];\n\n for (const zoneDto of e.zones) {\n const zoneStands = e.stands.filter(e => e.zoneId == zoneDto.id);\n const zoneStandNumbers = zoneStands.map(s => s.standNumber);\n const zoneStandFeatures = markersAll.features.filter(f => zoneStandNumbers.includes(f.properties.name));\n\n const zone: IZone = {\n zoneId: zoneDto.id!,\n name: zoneDto?.name?.find(e => e.locale == globalLanguage)?.value,\n features: zoneStandFeatures,\n bounds: [[Math.min(...zoneStandFeatures.map(f => f.geometry.coordinates[0])), Math.min(...zoneStandFeatures.map(f => f.geometry.coordinates[1]))], [Math.max(...zoneStandFeatures.map(f => f.geometry.coordinates[0])), Math.max(...zoneStandFeatures.map(f => f.geometry.coordinates[1]))]],\n coordinates: allZonesGeoJson.features.find((f: any) => f.properties.name === zoneDto?.zoneIdentifier)?.geometry.coordinates as [number, number] || [0, 0],\n identifier: zoneDto?.zoneIdentifier || \"\",\n dto: zoneDto,\n primaryColor: zoneDto.primaryColor!\n };\n\n zones.push(zone);\n attachZoneMarker(map.current!, zone, highContrast);\n }\n\n for (const stand of e.stands) {\n const zoneItem = zones.find(e => e.zoneId == stand.zoneId);\n const standFeatures = markersAll.features.find(e => e.properties.name == stand.standNumber);\n if (standFeatures) {\n zoneItem?.features.push(standFeatures)\n }\n }\n\n map.current!.loadImage(\"/2024/images/stand-marker.png\", (error, image) => {\n if (error) throw error;\n\n map.current!.addImage(\"stand-marker\", image!);\n\n for (const zone of zones) {\n addZone({\n type: \"FeatureCollection\",\n name: \"markers-\" + zone.zoneId,\n crs: {\"type\": \"name\", \"properties\": {\"name\": \"urn:ogc:def:crs:OGC:1.3:CRS84\"}},\n features: zone.features\n }, e.stands, zone.dto);\n }\n });\n\n map.current!.loadImage(\"/2024/images/favourite-marker.png\", (error, image) => {\n if (error) throw error;\n\n map.current!.addImage(\"favourite-marker\", image!);\n\n map.current!.addLayer({\n 'id': 'points-favourite-stands',\n 'type': 'symbol',\n 'source': 'favourites-stands',\n 'layout': {\n \"symbol-z-order\": \"source\",\n 'icon-image': 'favourite-marker',\n 'icon-size': ['interpolate', ['exponential', 2], ['zoom'], 12, 0.15, 16, .9],\n 'icon-overlap': 'always'\n },\n });\n });\n\n addOtherMarkers(map.current!, highContrast, facilitiesValue);\n\n map.current!.on('mouseover', 'points-others', () => {\n map.current!.getCanvas().style.cursor = 'pointer'\n });\n\n map.current!.on('mouseleave', 'points-others', () => {\n map.current!.getCanvas().style.cursor = ''\n });\n\n map.current!.on('mouseover', 'points-wheelchairs', () => {\n map.current!.getCanvas().style.cursor = 'pointer'\n });\n\n map.current!.on('mouseleave', 'points-wheelchairs', () => {\n map.current!.getCanvas().style.cursor = ''\n });\n\n map.current!.on('click', 'points-others', handleMapClick(e.stands, e.zones));\n map.current!.on('click', 'points-wheelchairs', handleMapClick(e.stands, e.zones));\n\n setTimeout(showYouAreHere, 1);\n\n props.onMapLoaded?.();\n setFullyLoaded(true);\n };\n\n let completed = false;\n\n map.current!.once(\"load\", () => {\n if (!completed) {\n completed = true;\n initMap();\n }\n });\n\n if (map.current?.isStyleLoaded() && !completed) {\n completed = true;\n initMap();\n }\n });\n }, [globalLanguage, highContrast]);\n\n const onStandDrawerClose = () => {\n setCurrentStands([]);\n setCurrentZone(undefined);\n\n activeMarker?.remove();\n activeMarker = undefined;\n }\n\n return
\n {!fullyLoaded &&
{loadingSpin}
}\n
\n \n
\n}\n","import {Language} from \"../pages/components/languageSelector/languageSelector\";\n\nexport default class LocalizableHelper {\n static getEntryForLanguage(language: Language, input: { locale?: string | null, value?: any }[]): { locale?: string | null, value?: any } | undefined {\n return input.find(dto => dto.locale === language);\n }\n}\n","const allStandsStrings = {\n title: {\n \"pl-PL\": \"Strefy\",\n \"uk-UA\": \"Зони\"\n },\n description: {\n \"pl-PL\": \"Lista dostępnych stref i stanowisk dostępnych w ramach 27. Pikniku Naukowego\",\n \"uk-UA\": \"Перелік доступних зон та стендів у рамках 27-го Наукового пікніка\"\n },\n searchInputPlaceholder: {\n \"pl-PL\": \"Szukaj pokazu...\",\n \"uk-UA\": \"Пошук шоу...\"\n },\n institutionSelectPlaceholder: {\n \"pl-PL\": \"Wybierz instytucję...\",\n \"uk-UA\": \"Виберіть установу..\"\n },\n seeMoreButton: {\n \"pl-PL\": \"Zobacz więcej\",\n \"uk-UA\": \"Побачити більше\"\n },\n stands: {\n \"pl-PL\": \"Stanowiska\",\n \"uk-UA\": \"Стенды\"\n },\n individualStand: {\n \"pl-PL\": \"Stanowisko\",\n \"uk-UA\": \"Стенд\"\n },\n institutionDescriptionAlt: {\n \"pl-PL\": \"Rozwiń pełny tekst\",\n \"uk-UA\": \"Розгорнути повний текст\"\n },\n demonstrations: {\n \"pl-PL\":\"Pokazy\",\n \"uk-UA\": \"Покази\"\n },\n demonstrationsOnStand: {\n \"pl-PL\": \"Pokazy na stanowisku\",\n \"uk-UA\": \"Покази на стендах\"\n },\n showOnMap: {\n \"pl-PL\": \"Pokaż na mapie\",\n \"uk-UA\": \"Показати на карті\"\n },\n addToFavourites: {\n \"pl-PL\": \"Dodaj do ścieżki zwiedzania\",\n \"uk-UA\": \"Додати до маршруту\"\n },\n removeFromFavourites: {\n \"pl-PL\": \"Usuń ze ścieżki zwiedzania\",\n \"uk-UA\": \"Зняти з маршруту\"\n },\n inFavourites: {\n \"pl-PL\": \"Na ścieżce zwiedzania\",\n \"uk-UA\": \"На маршруті\"\n },\n zone: {\n \"pl-PL\": \"Strefa\", \n \"uk-UA\": \"Зона\"\n }\n}\n\nexport default allStandsStrings; \n","import {Input} from \"antd\";\nimport {useEffect, useState} from \"react\";\nimport {LocalizableStringDto} from \"../../../api\";\nimport LanguageSelector, {Language} from \"../languageSelector/languageSelector\";\nimport LocalizableHelper from \"../../../helpers/localizableHelper\";\nimport {useSelector} from \"react-redux\";\nimport {getGlobalLanguage} from \"../../../redux/languageSlice\";\n\nexport function getEntryValueForLanguageOrEmptyString(language: Language, value: LocalizableStringDto[] | undefined): string {\n return LocalizableHelper.getEntryForLanguage(language, value || [])?.value || \"\";\n}\n\nexport function getEntryValueForLanguageOrDefault(language: Language, value: LocalizableStringDto[] | undefined): string {\n return LocalizableHelper.getEntryForLanguage(language, value || [])?.value || LocalizableHelper.getEntryForLanguage(\"pl-PL\", value || [])?.value || \"\";\n}\n\nexport default function LocalizableInput(props: LocalizableInputProps) {\n const defaultLanguage = useSelector(getGlobalLanguage);\n const [currentLanguage, setCurrentLanguage] = useState(defaultLanguage);\n const [currentValue, setCurrentValue] = useState(props.value || []);\n const [currentTextValue, setCurrentTextValue] = useState(\n getEntryValueForLanguageOrEmptyString(currentLanguage, currentValue));\n\n useEffect(() => {\n setCurrentValue(JSON.parse(JSON.stringify(props.value || [])));\n }, [props.value]);\n\n useEffect(() => {\n setCurrentTextValue(getEntryValueForLanguageOrEmptyString(currentLanguage, currentValue))\n }, [currentValue, currentLanguage]);\n\n useEffect(() => {\n setCurrentLanguage(defaultLanguage);\n }, [defaultLanguage])\n\n const onLanguageSelected = (value: Language) => {\n setCurrentLanguage(value as any);\n props.onLanguageChange?.(value);\n setCurrentTextValue(getEntryValueForLanguageOrEmptyString(value, currentValue));\n };\n\n const onInputChange = (value: string) => {\n const localizableString = LocalizableHelper.getEntryForLanguage(currentLanguage, currentValue);\n setCurrentTextValue(value);\n\n if (!localizableString) {\n currentValue.push({\n locale: currentLanguage,\n value: value\n });\n } else {\n localizableString.value = value;\n }\n\n setCurrentValue(currentValue);\n props.onChange?.(currentValue);\n }\n\n const languageSelector = \n\n if (props.customRenderer) {\n return props.customRenderer(languageSelector, onInputChange, currentTextValue);\n }\n\n return props.multiline\n ?
\n {languageSelector}\n onInputChange(event.target.value)}\n value={currentTextValue} style={{alignSelf: \"stretch\"}} rows={8}/>\n
\n : onInputChange(event.target.value)}\n value={currentTextValue}/>;\n}\n\ninterface LocalizableInputProps {\n value?: LocalizableStringDto[],\n onChange?: (value: LocalizableStringDto[]) => void,\n onLanguageChange?: (value: Language) => void,\n multiline?: boolean,\n customRenderer?: (languageSelector: JSX.Element, onInputChange: (value: string) => any, value: string) => JSX.Element,\n}\n","import {useInjection} from \"inversify-react\";\nimport ApiService from \"../../../services/apiService\";\nimport {useCallback, useEffect, useState} from \"react\";\nimport {ImageApi} from \"../../../api\";\nimport {Avatar} from \"antd\";\n\nexport default function ImageAvatar(props: ZoneAvatarProps) {\n const apiService = useInjection(ApiService);\n\n const [zoneIllustration, setZoneIllustration] = useState(null);\n\n const fetchZoneIllustration = useCallback(async () => {\n\n try {\n const illustration = await apiService.getApi(ImageApi)\n .apiImageIdFileStreamGet(props.imageId!, {responseType: \"blob\"});\n setZoneIllustration(URL.createObjectURL(illustration.data!));\n } catch (e: any) {\n return e.response?.data;\n }\n }, [apiService, props.imageId]);\n\n useEffect(() => {\n if (props.imageId) {\n fetchZoneIllustration();\n }\n }, [fetchZoneIllustration, props.imageId]);\n\n return <>\n {(props.imageId && zoneIllustration) ? : null}\n \n}\n\ninterface ZoneAvatarProps {\n imageId?: number | null;\n isSquare?: boolean;\n size?: number;\n}\n"],"names":["getInitialHeight","stand","StandDrawer","props","open","setOpen","language","apiService","hoveringOnRemoveButton","setHoveringOnRemoveButton","auth","navigate","onAddToFavourites","record","message","e","onRemoveFromFavouritesClicked","_a","stands","a","b","_b","zone","DrawerTitle","DeleteOutlined","CheckOutlined","i","Paragraph","ArrowsAltOutlined","d","DemonstrationEntry","getZoneIllustrationUrl","illustrationId","mouseDown","setMouseDown","el","height","onTouch","onTouchEnd","onPointerMove","interval","onPointerDown","onPointerUp","CloseOutlined","baseMarkerSize","ResizableMarker","zoom","scale","constrainedScale","opacity","markerSize","size","animationSpeed","animationFlyCurve","attachZoneMarker","map","highContrast","createMarkers","elIdentifier","elLabel","splitZoneName","zoneName","backgroundColor","elContainer","ev","elWrapper","marker","createIllustrationMarkers","features","point","id","elImage","loadSymbolByName","name","resolve","reject","addOtherMarkers","showFacilities","promises","v","activeMarker","lng","lat","Map","globalLanguage","zoneApi","standApi","mapContainer","youAreHereAdded","location","isLoading","setIsLoading","fullyLoaded","setFullyLoaded","allStands","setAllStands","allZones","setAllZones","standsPath","setStandsPath","currentStands","setCurrentStands","currentZone","setCurrentZone","isCurrentMarkerInStandsPath","setIsCurrentMarkerInStandsPath","facilitiesValue","youAreHere","fetchYouAreHere","response","handleMapClick","zones","bottomPadding","handleAsStand","closestMarker","closestDistance","f","distance","selectedStands","s","coordinates","z","showYouAreHere","youAreHereMarker","arrowEl","textWrapper","textEl","textSubtitleEl","refreshStandsList","updateFavouriteMarkers","padding","addZone","standsGeoJson","handleStandClick","standNumber","ele","standFeatures","sf","favouriteStandsGeoJson","allCoords","allCoordsX","c","allCoordsY","tasks","standsResponse","zonesResponse","initMap","zoneDto","zoneStandNumbers","zoneStandFeatures","zoneItem","error","image","completed","onStandDrawerClose","LocalizableHelper","input","dto","allStandsStrings","getEntryValueForLanguageOrEmptyString","value","getEntryValueForLanguageOrDefault","LocalizableInput","defaultLanguage","currentLanguage","setCurrentLanguage","currentValue","setCurrentValue","currentTextValue","setCurrentTextValue","onLanguageSelected","onInputChange","localizableString","languageSelector","event","ImageAvatar","zoneIllustration","setZoneIllustration","fetchZoneIllustration","illustration"],"sourceRoot":""}