@davi-ai/retorik-framework 4.0.3 → 5.0.0

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.
Files changed (84) hide show
  1. package/README.md +13 -0
  2. package/dist/{AttachmentDetail.637ad44f.js → AttachmentDetail.3f9c113d.js} +15 -6
  3. package/dist/AttachmentDetail.3f9c113d.js.map +1 -0
  4. package/dist/{AttachmentDetail.83788045.js → AttachmentDetail.57c5579a.js} +15 -6
  5. package/dist/AttachmentDetail.57c5579a.js.map +1 -0
  6. package/dist/{CustomView.bf84bdf3.js → CustomView.6b96f53f.js} +8 -4
  7. package/dist/CustomView.6b96f53f.js.map +1 -0
  8. package/dist/{CustomView.9930c671.js → CustomView.b32a608f.js} +8 -4
  9. package/dist/CustomView.b32a608f.js.map +1 -0
  10. package/dist/{Emergency.1e63c85f.js → Emergency.43605d14.js} +16 -7
  11. package/dist/Emergency.43605d14.js.map +1 -0
  12. package/dist/{Emergency.89b4d9ed.js → Emergency.f1287bd5.js} +16 -7
  13. package/dist/Emergency.f1287bd5.js.map +1 -0
  14. package/dist/FullScreenImage.17df27bf.js.map +1 -1
  15. package/dist/FullScreenImage.99e19e10.js.map +1 -1
  16. package/dist/{HistoryList.3b4b1ffb.js → HistoryList.c19556a7.js} +8 -2
  17. package/dist/HistoryList.c19556a7.js.map +1 -0
  18. package/dist/{HistoryList.e5c01f21.js → HistoryList.e7262d62.js} +8 -2
  19. package/dist/HistoryList.e7262d62.js.map +1 -0
  20. package/dist/{LanguageChoice.1d866cfa.js → LanguageChoice.54fae1dc.js} +19 -8
  21. package/dist/LanguageChoice.54fae1dc.js.map +1 -0
  22. package/dist/{LanguageChoice.cce361a3.js → LanguageChoice.6e8b74f6.js} +19 -8
  23. package/dist/LanguageChoice.6e8b74f6.js.map +1 -0
  24. package/dist/LittleWeatherContainer.7e41105e.js.map +1 -1
  25. package/dist/LittleWeatherContainer.ee087e22.js.map +1 -1
  26. package/dist/{MapContainer.14c28128.js → MapContainer.25c8f4b4.js} +20 -5
  27. package/dist/MapContainer.25c8f4b4.js.map +1 -0
  28. package/dist/{MapContainer.f22ad81f.js → MapContainer.d00ab5b2.js} +20 -5
  29. package/dist/MapContainer.d00ab5b2.js.map +1 -0
  30. package/dist/{NewsContainer.c0a24775.js → NewsContainer.a39630c3.js} +33 -26
  31. package/dist/NewsContainer.a39630c3.js.map +1 -0
  32. package/dist/{NewsContainer.c3331d80.js → NewsContainer.ec15c3bb.js} +33 -26
  33. package/dist/NewsContainer.ec15c3bb.js.map +1 -0
  34. package/dist/PrintingPreview.375e62b0.js.map +1 -1
  35. package/dist/PrintingPreview.c0ca7706.js.map +1 -1
  36. package/dist/RecognitionManager.c58b8a3d.js +298 -0
  37. package/dist/RecognitionManager.c58b8a3d.js.map +1 -0
  38. package/dist/RecognitionManager.cdfb39fc.js +314 -0
  39. package/dist/RecognitionManager.cdfb39fc.js.map +1 -0
  40. package/dist/SpiritEngineWrapper.21ea10d4.js.map +1 -1
  41. package/dist/SpiritEngineWrapper.39627300.js.map +1 -1
  42. package/dist/SynthesisPonyfillManager.10888d6d.js +888 -0
  43. package/dist/SynthesisPonyfillManager.10888d6d.js.map +1 -0
  44. package/dist/SynthesisPonyfillManager.f9f9a915.js +920 -0
  45. package/dist/SynthesisPonyfillManager.f9f9a915.js.map +1 -0
  46. package/dist/{ThreeJsWrapper.dd4906ff.js → ThreeJsWrapper.0285d280.js} +24 -12
  47. package/dist/ThreeJsWrapper.0285d280.js.map +1 -0
  48. package/dist/{ThreeJsWrapper.c02a077f.js → ThreeJsWrapper.ad746197.js} +24 -11
  49. package/dist/ThreeJsWrapper.ad746197.js.map +1 -0
  50. package/dist/{VeilleManager.72cf0e9c.js → VeilleManager.0b3f2454.js} +18 -17
  51. package/dist/VeilleManager.0b3f2454.js.map +1 -0
  52. package/dist/{VeilleManager.26dcadac.js → VeilleManager.340a7825.js} +18 -17
  53. package/dist/VeilleManager.340a7825.js.map +1 -0
  54. package/dist/{Weather.bb414852.js → Weather.abc13d88.js} +25 -77
  55. package/dist/Weather.abc13d88.js.map +1 -0
  56. package/dist/{Weather.ced9b467.js → Weather.b9d9f82e.js} +25 -77
  57. package/dist/Weather.b9d9f82e.js.map +1 -0
  58. package/dist/index.d.ts +22 -929
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/index.js +53286 -33038
  61. package/dist/index.js.map +1 -1
  62. package/dist/index.modern.js +51651 -31410
  63. package/dist/index.modern.js.map +1 -1
  64. package/package.json +20 -21
  65. package/dist/AttachmentDetail.637ad44f.js.map +0 -1
  66. package/dist/AttachmentDetail.83788045.js.map +0 -1
  67. package/dist/CustomView.9930c671.js.map +0 -1
  68. package/dist/CustomView.bf84bdf3.js.map +0 -1
  69. package/dist/Emergency.1e63c85f.js.map +0 -1
  70. package/dist/Emergency.89b4d9ed.js.map +0 -1
  71. package/dist/HistoryList.3b4b1ffb.js.map +0 -1
  72. package/dist/HistoryList.e5c01f21.js.map +0 -1
  73. package/dist/LanguageChoice.1d866cfa.js.map +0 -1
  74. package/dist/LanguageChoice.cce361a3.js.map +0 -1
  75. package/dist/MapContainer.14c28128.js.map +0 -1
  76. package/dist/MapContainer.f22ad81f.js.map +0 -1
  77. package/dist/NewsContainer.c0a24775.js.map +0 -1
  78. package/dist/NewsContainer.c3331d80.js.map +0 -1
  79. package/dist/ThreeJsWrapper.c02a077f.js.map +0 -1
  80. package/dist/ThreeJsWrapper.dd4906ff.js.map +0 -1
  81. package/dist/VeilleManager.26dcadac.js.map +0 -1
  82. package/dist/VeilleManager.72cf0e9c.js.map +0 -1
  83. package/dist/Weather.bb414852.js.map +0 -1
  84. package/dist/Weather.ced9b467.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"mappings":"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","sources":["src/components/Attachments/AttachmentDetail.tsx","src/hooks/useShowPOI.ts","src/utils/mapDetailedDataFromContentItem.ts","src/components/Attachments/DetailedAttachment/DetailedTitle.tsx","src/components/Attachments/DetailedAttachment/CommentsPennant.tsx","src/components/Attachments/DetailedAttachment/DetailedText.tsx","src/components/Attachments/DetailedAttachment/DownloadSheet.tsx","src/components/Attachments/DetailedAttachment/DownloadQR.tsx","src/components/Attachments/DetailedAttachment/PrintingButton.tsx","node_modules/@parcel/runtime-js/lib/runtime-8298843c7ecb0d35.js","src/components/Attachments/DetailedAttachment/DetailedMedia.tsx","src/components/Attachments/DetailedAttachment/DetailedAddress.tsx","src/components/Attachments/DetailedAttachment/ShowPhoneNumber.tsx","src/components/Attachments/DetailedAttachment/Map.tsx","src/components/Attachments/DetailedAttachment/Routes.tsx","src/components/Attachments/DetailedAttachment/RoutesItem.tsx","src/utils/getDistanceAsString.ts","src/utils/getTimeAsString.ts","src/components/Icons/MapIcons/index.ts","src/components/Icons/MapIcons/CyclingRegularIcon.tsx","src/components/Icons/MapIcons/DrivingCarIcon.tsx","src/components/Icons/MapIcons/FootWalkingIcon.tsx","src/components/Icons/MapIcons/OpenLocationIcon.tsx","src/components/Icons/MapIcons/TriangleIcon.tsx","src/components/Attachments/DetailedAttachment/MapUser.tsx"],"sourcesContent":["import React, { useEffect, useLayoutEffect, useRef, useState } from 'react'\r\nimport { useSpring, easings } from '@react-spring/web'\r\nimport { useSelector, useDispatch } from 'react-redux'\r\nimport { RootState, storeActions, RetorikEvent } from '../../store'\r\n\r\nimport useShowPOI from '../../hooks/useShowPOI'\r\n\r\nimport type { POIContentType } from '../../models/attachmentTypes'\r\nimport { getColorFromCategoryId } from '../../utils/getColorFromCategoryId'\r\nimport { TemplateTarget } from '../../models/enums'\r\nimport preventEvents from '../../utils/preventEvents'\r\n\r\nimport TemplateGlobal from '../Templates/TemplateGlobal'\r\nimport DetailedTitle from './DetailedAttachment/DetailedTitle'\r\nimport DetailedText from './DetailedAttachment/DetailedText'\r\nimport DetailedMedia from './DetailedAttachment/DetailedMedia'\r\nimport DetailedAddress from './DetailedAttachment/DetailedAddress'\r\nimport DownloadSheet from './DetailedAttachment/DownloadSheet'\r\nimport AbsoluteLargeClosingButton from '../Utils/SubView/AbsoluteLargeClosingButton'\r\n\r\nconst springEnterDuration = 1500\r\nconst springLeaveDuration = 2500\r\n\r\nconst AttachmentDetails = (): React.JSX.Element => {\r\n const dispatch = useDispatch()\r\n const detailedItemContent = useShowPOI()\r\n const locale = useSelector((state: RootState) => state.localeReducer.locale)\r\n const baseAddress = useSelector((state: RootState) => state.localeReducer.baseAddress)\r\n const isUsedOnBorne = useSelector((state: RootState) => state.retorikReducer.configuration.isUsedOnBorne)\r\n const isMobile = useSelector((state: RootState) => state.viewReducer.isMobile)\r\n const isWidget = useSelector((state: RootState) => state.viewReducer.isWidget)\r\n const currentDeviceType = useSelector((state: RootState) => state.viewReducer.currentDeviceType)\r\n const themeColors = useSelector((state: RootState) => state.viewReducer.themeColors)\r\n const closeDetailedPOI = useSelector((state: RootState) => state.utilsReducer.closeDetailedPOI)\r\n\r\n const [content, setContent] = useState<POIContentType | undefined>(undefined)\r\n const [color, setColor] = useState<string>(themeColors.secondary)\r\n const [titleHeight, setTitleHeight] = useState<number>(0)\r\n const [spring, api] = useSpring(() => ({\r\n from: {\r\n transform: 'translateX(0%)'\r\n }\r\n }))\r\n const timerRef = useRef<NodeJS.Timer | null>(null)\r\n const divRef = useRef<HTMLDivElement>(null)\r\n\r\n useEffect(() => {\r\n setContent(detailedItemContent)\r\n if (detailedItemContent) {\r\n dispatch(storeActions.utils.setRetorikEvent(RetorikEvent.DetailViewOpen))\r\n dispatch(storeActions.utils.setModalFullscreenContent(null))\r\n }\r\n }, [detailedItemContent])\r\n\r\n useEffect(() => {\r\n closeDetailedPOI && handleClose()\r\n }, [closeDetailedPOI])\r\n\r\n useLayoutEffect(() => {\r\n if (divRef?.current) {\r\n isWidget && preventEvents(null, divRef)\r\n }\r\n })\r\n\r\n useEffect(() => {\r\n if (content) {\r\n if (timerRef.current) {\r\n clearTimeout(timerRef.current)\r\n timerRef.current = null\r\n }\r\n\r\n content.category?.id && setColor(getColorFromCategoryId(content.category.id, themeColors))\r\n api.start({\r\n from: {\r\n transform: 'translateX(-100%)'\r\n },\r\n to: {\r\n transform: 'translateX(0%)'\r\n },\r\n config: {\r\n duration: springEnterDuration,\r\n easing: easings.easeInBack\r\n }\r\n })\r\n }\r\n }, [content])\r\n\r\n const handleClose = (): void => {\r\n if (!timerRef.current) {\r\n api.start({\r\n from: {\r\n transform: 'translateX(0%)'\r\n },\r\n to: {\r\n transform: 'translateX(-100%)'\r\n },\r\n config: {\r\n duration: springLeaveDuration,\r\n easing: easings.easeOutExpo\r\n }\r\n })\r\n\r\n dispatch(storeActions.utils.setCloseDetailedPOI(false))\r\n dispatch(storeActions.utils.setRetorikEvent(RetorikEvent.DetailViewClose))\r\n\r\n timerRef.current = setTimeout(() => {\r\n dispatch(storeActions.directline.sendEvent({ name: 'Davi.CloseWindow', callback: () => dispatch(storeActions.directline.sendEvent({ name: 'Davi.CloseWindowDetailed' })) }))\r\n dispatch(storeActions.livekit.sendEvent({ name: 'Davi.CloseWindow', callback: () => dispatch(storeActions.livekit.sendEvent({ name: 'Davi.CloseWindowDetailed' })) }))\r\n setContent(undefined)\r\n timerRef.current = null\r\n }, springLeaveDuration)\r\n }\r\n }\r\n\r\n const sendPostBack = (value: any): void => {\r\n dispatch(storeActions.directline.sendMessage({ value: value }))\r\n dispatch(storeActions.livekit.sendMessage({ value: value }))\r\n }\r\n\r\n return content ? (\r\n <React.Fragment>\r\n <TemplateGlobal onClick={handleClose} remote={true} target={TemplateTarget.detailedAttachment} animation={spring}>\r\n {/* Window containing data */}\r\n <div ref={divRef} className='rf-relative rf-flex rf-flex-row vertical:rf-flex-col rf-h-full rf-overflow-y-scroll rf-scrollbar-hidden'>\r\n {detailedItemContent?.template ? (\r\n <React.Fragment>\r\n <detailedItemContent.template\r\n props={{\r\n ...content,\r\n locale: locale,\r\n isUsedOnBorne: isUsedOnBorne,\r\n baseAddress: baseAddress,\r\n sendPostBack: sendPostBack\r\n }}\r\n currentDeviceType={currentDeviceType}\r\n handleClose={handleClose}\r\n />\r\n </React.Fragment>\r\n ) : (\r\n <React.Fragment>\r\n <div className='rf-px-6 large:rf-px-8 rf-w-2/3 vertical:rf-w-full rf-mb-4 large:rf-mb-0 rf-flex rf-flex-col rf-border-r rf-border-r-silver vertical:rf-border-r-0'>\r\n {/* Title + category */}\r\n <DetailedTitle\r\n category={content.category}\r\n title={content.title}\r\n infoBanner={content.infoBanner}\r\n color={color}\r\n customerReviews={content.customerReviews}\r\n favorite={content.favorite}\r\n handleClose={handleClose}\r\n setTitleHeight={setTitleHeight}\r\n />\r\n <div className='rf-flex rf-flex-col large:rf-flex-row landscape-retorik:rf-h-full'>\r\n {/* Text + other data */}\r\n <DetailedText text={content.text} otherInformations={content.otherInformations} color={color} url={content.downloadUri} titleHeight={titleHeight} />\r\n {/* Media + comment if there is at least one media or comment */}\r\n {(content.media?.length || content.review) && <DetailedMedia media={content.media} review={content.review} color={color} />}\r\n </div>\r\n </div>\r\n <DetailedAddress\r\n address={content.addressStructured}\r\n phoneNumber={content.phoneNumber}\r\n coordinates={content.coordinates}\r\n color={color}\r\n customerReviews={content.customerReviews}\r\n url={content.downloadUri}\r\n />\r\n {isMobile && content.downloadUri && <DownloadSheet className='rf-justify-center' url={content.downloadUri} />}\r\n </React.Fragment>\r\n )}\r\n </div>\r\n </TemplateGlobal>\r\n\r\n {/* Closing button */}\r\n <AbsoluteLargeClosingButton dashboardVisible={true} onClick={handleClose} />\r\n </React.Fragment>\r\n ) : (\r\n <React.Fragment />\r\n )\r\n}\r\n\r\nexport default AttachmentDetails\r\n","import { useEffect, useState } from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { RootState } from '../store'\r\nimport type { DetailedAttachmentAction } from '../store/models/activityTypes'\r\nimport { mapDetailedDataFromContentItem } from '../utils/mapDetailedDataFromContentItem'\r\n\r\nconst useShowPOI = (): any => {\r\n const baseAddress = useSelector((state: RootState) => state.localeReducer.baseAddress)\r\n const locale = useSelector((state: RootState) => state.localeReducer.locale)\r\n const translation = useSelector((state: RootState) => state.localeReducer.currentTranslations)\r\n const lastBotActivity = useSelector((state: RootState) => state.activityReducer.lastBotActivity)\r\n const triggers = useSelector((state: RootState) => state.utilsReducer.detailedAttachmentTriggers)\r\n\r\n const [result, setResult] = useState<any>(undefined)\r\n\r\n useEffect(() => {\r\n let result: any = undefined\r\n\r\n if (lastBotActivity?.value && triggers.length) {\r\n triggers.forEach((trigger: DetailedAttachmentAction) => {\r\n if (lastBotActivity.type === trigger.type) {\r\n const clonedActivity = structuredClone(lastBotActivity)\r\n\r\n if (trigger.name && trigger.name === clonedActivity.name) {\r\n if (trigger.contentType) {\r\n if (trigger.contentType === clonedActivity.value?.contentType) {\r\n clonedActivity.value.content.template = trigger.linkedComponent\r\n result = clonedActivity.value.content\r\n }\r\n } else {\r\n const data = {\r\n id: clonedActivity.value?.contentItemId,\r\n content: clonedActivity.value?.content,\r\n contentType: clonedActivity.value?.contentType,\r\n baseAddress: baseAddress,\r\n locale: locale\r\n }\r\n const checkData = mapDetailedDataFromContentItem(data, translation)\r\n if (checkData) {\r\n result = { ...checkData, value: clonedActivity.value, template: trigger.linkedComponent }\r\n } else {\r\n clonedActivity.value.template = trigger.linkedComponent\r\n result = clonedActivity.value\r\n }\r\n }\r\n } else if (trigger.label && trigger.label === clonedActivity.label) {\r\n if (trigger.contentType) {\r\n if (trigger.contentType === clonedActivity.value?.contentType) {\r\n clonedActivity.value.content.template = trigger.linkedComponent\r\n result = clonedActivity.value.content\r\n }\r\n } else {\r\n clonedActivity.value.template = trigger.linkedComponent\r\n result = clonedActivity.value\r\n }\r\n }\r\n }\r\n })\r\n }\r\n\r\n setResult(result)\r\n }, [lastBotActivity])\r\n\r\n return result\r\n}\r\n\r\nexport default useShowPOI\r\n","import type {\r\n Coordinates,\r\n POIContentType,\r\n AddressStructured,\r\n Review\r\n} from '../models/attachmentTypes'\r\nimport type { TranslationFile } from '../store/models/translationTypes'\r\n\r\nconst infoBannerContenTypes = ['foodestablishment', 'event']\r\n\r\nconst categoryConversion = {\r\n FoodEstablishment: 'Where to eat',\r\n LodgingBusiness: 'Where to sleep',\r\n TouristDestination: 'What to see',\r\n TouristAttraction: 'What to do',\r\n Product: 'Local products',\r\n Service: 'Services',\r\n Event: 'Events',\r\n City: 'Cities',\r\n Wine: 'Wines'\r\n}\r\n\r\ninterface MappingProps {\r\n id?: string\r\n content: any\r\n contentType?: string\r\n baseAddress: string\r\n locale: string\r\n}\r\n\r\ninterface Category {\r\n id: string\r\n label: string\r\n}\r\n\r\ninterface OtherInformation {\r\n title: string\r\n content: string | Array<string>\r\n}\r\n\r\nconst getCategoryFromContentType = (\r\n contentType: string | undefined,\r\n translation: TranslationFile\r\n): Category | undefined => {\r\n if (contentType) {\r\n if (Object.keys(categoryConversion).includes(contentType)) {\r\n return {\r\n id: categoryConversion[contentType],\r\n label: translation.poi[contentType]\r\n }\r\n }\r\n\r\n return {\r\n id: 'default',\r\n label: contentType\r\n }\r\n }\r\n\r\n return undefined\r\n}\r\n\r\nconst mapDetailedDataFromContentItem = (\r\n data: MappingProps,\r\n translation: TranslationFile\r\n): POIContentType | null => {\r\n if (data.id && data.content) {\r\n try {\r\n const content = data.content\r\n // Process medias\r\n const medias: any = []\r\n content.Thing?.Image?.Paths &&\r\n content.Thing.Image.Paths.length &&\r\n content.Thing?.Image?.Paths?.forEach((path) => {\r\n medias.push({\r\n url: `${data.baseAddress}media/${path}`\r\n })\r\n })\r\n\r\n // Processed address\r\n const address: AddressStructured = {\r\n addressLocality: content.Place?.AddressLocality?.Text || '',\r\n postalCode: content.Place?.PostalCode?.Text || '',\r\n street: content.Place?.StreetAddress?.Text || ''\r\n }\r\n\r\n // Processed coordinates\r\n const coordinates: Coordinates | undefined =\r\n content.Place?.Latitude?.Value && content.Place?.Longitude?.Value\r\n ? {\r\n latitude: content.Place.Latitude.Value,\r\n longitude: content.Place.Longitude.Value\r\n }\r\n : undefined\r\n\r\n // Processed review\r\n const review: Review = {\r\n author:\r\n content.Review?.Author || content.Review?.AuthorCapacity\r\n ? {\r\n name: content.Review?.Author,\r\n capacity: content.Review?.AuthorCapacity\r\n }\r\n : undefined,\r\n comment: content.Review?.ReviewBody || '',\r\n picture: content.Review?.Picture\r\n ? {\r\n url: content.Review.Picture,\r\n description: content.Review.PictureDescription || ''\r\n }\r\n : undefined\r\n }\r\n\r\n // Process other informations\r\n const otherInformations: Array<OtherInformation> = []\r\n // Opening hours\r\n content.LocalBusiness?.OpeningHours?.Text &&\r\n otherInformations.push({\r\n title: translation.poi.openinghours,\r\n content: content.LocalBusiness.OpeningHours.Text\r\n })\r\n // Prices\r\n content.LocalBusiness?.PriceRange?.Text &&\r\n otherInformations.push({\r\n title: translation.poi.prices,\r\n content: content.LocalBusiness.PriceRange.Text\r\n })\r\n // Payment methods\r\n content.LocalBusiness?.PaymentAccepted?.Values &&\r\n content.LocalBusiness.PaymentAccepted.Values.length &&\r\n otherInformations.push({\r\n title: translation.poi.paymentmethods,\r\n content: content.LocalBusiness.PaymentAccepted.Values\r\n })\r\n\r\n // Process information banner\r\n let infoBanner: string | undefined\r\n if (\r\n data.contentType &&\r\n infoBannerContenTypes.includes(data.contentType.toLowerCase())\r\n ) {\r\n switch (data.contentType.toLowerCase()) {\r\n case 'foodestablishment':\r\n content.Place?.MaximumAttendeeCapacity?.Value &&\r\n !isNaN(parseInt(content.Place?.MaximumAttendeeCapacity?.Value)) &&\r\n (infoBanner = `${translation.poi.numberofplaces} ${parseInt(\r\n content.Place?.MaximumAttendeeCapacity?.Value\r\n )}`)\r\n break\r\n case 'event':\r\n if (\r\n content.Event &&\r\n content.Event.StartDate?.Value &&\r\n content.Event.EndDate?.value\r\n ) {\r\n const startDate = new Date(content.Event.StartDate.Value)\r\n const endDate = new Date(content.Event.StartDate.Value)\r\n if (\r\n content.Event.StartDate.Value === content.Event.EndDate.value\r\n ) {\r\n infoBanner = `Le ${startDate.toLocaleDateString(data.locale)}`\r\n } else {\r\n infoBanner = `Du ${startDate.toLocaleDateString(\r\n data.locale\r\n )} au ${endDate.toLocaleDateString(data.locale)}`\r\n }\r\n }\r\n break\r\n }\r\n }\r\n\r\n // Hack for Wines category -> TODO : remove it !\r\n let categoryWineTest = false\r\n const categories = content.Thing?.Categories?.Values\r\n const wineFilters = [\r\n 'Blanc de blanc',\r\n 'Rosé Champagne',\r\n 'Vintages',\r\n 'Cocktail Collection',\r\n 'AUTHIGENE Collection'\r\n ]\r\n\r\n if (categories && categories.length) {\r\n categories.forEach(\r\n (category: string) =>\r\n wineFilters.includes(category) && (categoryWineTest = true)\r\n )\r\n }\r\n\r\n const mappedData: POIContentType = {\r\n identifier: data.id,\r\n title: content.Thing?.Name?.Text?.toString() || '',\r\n text: content.Thing?.Description?.Text?.toString() || '',\r\n addressStructured: address,\r\n contact: content.PointOfInterest?.Contact?.Text?.toString() || '',\r\n phoneNumber: content.Place?.Telephone?.Text\r\n ? content.Place.Telephone.Text.toString()\r\n : '',\r\n category: categoryWineTest\r\n ? {\r\n id: categoryConversion.Wine,\r\n label: translation.poi.Wine\r\n }\r\n : getCategoryFromContentType(content.contentType || data.contentType, translation),\r\n media: medias.length ? medias : undefined,\r\n customerReviews: content.Place?.AggregateRating?.Value,\r\n coordinates: coordinates,\r\n downloadUri: `${data.baseAddress}api/hospitality/${data.id}/pdf`,\r\n favorite: !!content.Thing?.Favorite?.Value,\r\n review: review,\r\n infoBanner: infoBanner,\r\n otherInformations: otherInformations\r\n }\r\n\r\n return mappedData\r\n } catch (e) {\r\n console.log(e)\r\n return null\r\n }\r\n }\r\n\r\n return null\r\n}\r\n\r\nexport { mapDetailedDataFromContentItem }\r\n","import React, { useEffect, useRef } from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { RootState } from '../../../store'\r\nimport CommentsPennant from './CommentsPennant'\r\nimport { FavoriteIcon } from '../../Icons/DetailedPOIIcons'\r\nimport { BackButton } from '../../Menu/Common'\r\n\r\ntype DetailedTitleProps = {\r\n category?: {\r\n id: string\r\n label: string\r\n }\r\n title?: string\r\n infoBanner?: string\r\n color?: string\r\n customerReviews?: number\r\n favorite?: boolean\r\n handleClose: () => void\r\n setTitleHeight: (x: number) => void\r\n}\r\n\r\nconst DetailedTitle = ({ category, title, infoBanner, color, customerReviews, favorite, handleClose, setTitleHeight }: DetailedTitleProps): React.JSX.Element => {\r\n const translation = useSelector((state: RootState) => state.localeReducer.currentTranslations)\r\n const isMobile = useSelector((state: RootState) => state.viewReducer.isMobile)\r\n const titleRef = useRef<HTMLDivElement>(null)\r\n\r\n useEffect(() => {\r\n titleRef?.current && setTitleHeight(titleRef.current.clientHeight)\r\n }, [titleRef?.current])\r\n\r\n return (\r\n <div ref={titleRef} className='rf-relative rf-pb-4 rf-flex-col rf-items-start rf-justify-center'>\r\n {/* Category + comments' pennant */}\r\n {customerReviews && <CommentsPennant className='rf-absolute rf-hidden large-vertical:rf-block rf-top-0 rf-right-0' color={color} customerReviews={customerReviews} />}\r\n <div className='rf-w-full rf-flex rf-flex-row rf-justify-between rf-items-start'>\r\n {isMobile && <BackButton title={translation.common.back} handleBack={handleClose} className='rf-relative rf-mt-4 rf-text-size-auto' />}\r\n <div className='rf-uppercase rf-w-fit rf-py-2 large:rf-py-3 rf-px-4 rf-bg-black rf-text-primary' style={{ color: color }}>\r\n {category?.label || 'category'}\r\n </div>\r\n </div>\r\n\r\n {/* 'Favorite' icon + title */}\r\n <div className='rf-py-6 rf-title-large-bold-size-auto large-vertical:rf-pt-[16.67%] rf-flex rf-flex-row rf-items-center rf-font-bold'>\r\n {favorite && <FavoriteIcon className='rf-h-16 rf-w-20 rf-pr-4' />}\r\n {title || ''}\r\n </div>\r\n\r\n {/* Informations Banner */}\r\n {infoBanner && (\r\n <div className='rf-py-1 rf-px-4 rf-subtitle-size-auto rf-bg-primary rf-text-truewhite' style={{ backgroundColor: color }}>\r\n {infoBanner}\r\n </div>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nexport default DetailedTitle\r\n","import React, { useState, useEffect, useRef } from 'react'\r\nimport { CommentsPennantIcon } from '../../Icons/DetailedPOIIcons'\r\nimport { useSelector } from 'react-redux'\r\nimport { RootState } from '../../../store'\r\n\r\ntype ComponentsPennantType = {\r\n className?: string\r\n color?: string\r\n customerReviews: number\r\n}\r\n\r\nconst CommentsPennant = ({ className, color, customerReviews }: ComponentsPennantType): React.JSX.Element => {\r\n const translation = useSelector((state: RootState) => state.localeReducer.currentTranslations)\r\n const [widthInPx, setWidthInPx] = useState<number>(0)\r\n const pennantRef = useRef<HTMLDivElement>(null)\r\n\r\n useEffect(() => {\r\n if (pennantRef.current) {\r\n setWidthInPx(Math.ceil(pennantRef.current.offsetWidth / 2))\r\n }\r\n }, [pennantRef])\r\n\r\n return (\r\n <div className={`${className} rf-flex rf-flex-col rf-justify-center rf-text-white`} ref={pennantRef}>\r\n <div className='rf-flex rf-flex-col rf-items-center rf-p-2 rf-bg-primary' style={{ backgroundColor: color }}>\r\n <CommentsPennantIcon className='rf-w-12 large:rf-w-14 large-vertical:rf-w-16 rf-pb-2' />\r\n <div className='rf-flex-col rf-text-center rf-text-size-auto rf-uppercase'>\r\n {translation.poi.comment.split(' ').map((word, index) => {\r\n return <div key={index}>{word}</div>\r\n })}\r\n </div>\r\n <div className='rf-font-bold rf-subtitle-size-auto'>{customerReviews}/10</div>\r\n </div>\r\n <div\r\n className='rf-w-0 rf-h-0 rf-border-t-0 rf-border-x-primary rf-border-b-transparent'\r\n style={{\r\n borderLeftColor: color,\r\n borderRightColor: color,\r\n borderBottomWidth: (widthInPx * 2) / 3,\r\n borderLeftWidth: widthInPx,\r\n borderRightWidth: widthInPx\r\n }}\r\n />\r\n </div>\r\n )\r\n}\r\n\r\nexport default CommentsPennant\r\n","import React, { useEffect, useRef, useState, useMemo } from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { RootState } from '../../../store'\r\nimport DownloadSheet from './DownloadSheet'\r\nimport DownloadQR from './DownloadQR'\r\n\r\ntype DetailedTextProps = {\r\n text?: string\r\n otherInformations?: Array<{\r\n title: string\r\n content: string | Array<string>\r\n }>\r\n color?: string\r\n url?: string\r\n titleHeight: number\r\n}\r\n\r\nconst DownloadQRHeight = 200\r\nconst DownloadSheetHeight = 100\r\n\r\nconst DetailedText = ({ text, otherInformations, color, url, titleHeight }: DetailedTextProps): React.JSX.Element => {\r\n const isUsedOnBorne = useSelector((state: RootState) => state.retorikReducer.configuration.isUsedOnBorne)\r\n const isMobile = useSelector((state: RootState) => state.viewReducer.isMobile)\r\n const isLandscape = useSelector((state: RootState) => state.viewReducer.isLandscape)\r\n const currentHeight = useSelector((state: RootState) => state.viewReducer.currentHeight)\r\n\r\n const textRef = useRef<HTMLDivElement>(null)\r\n const otherInformationsRef = useRef<HTMLDivElement>(null)\r\n const [opacityStyle, setOpacityStyle] = useState<string | undefined>('')\r\n const [otherOpacityStyle, setOtherOpacityStyle] = useState<string | undefined>('')\r\n const processedText = useMemo<string>(() => {\r\n if (text) {\r\n return text.replaceAll('\\n', '<br>')\r\n }\r\n\r\n return ''\r\n }, [text])\r\n\r\n const textContainerMaxHeight = useMemo<number>(() => {\r\n return currentHeight - titleHeight - (isUsedOnBorne ? DownloadQRHeight : DownloadSheetHeight)\r\n }, [titleHeight])\r\n\r\n const [textMaxHeight, setTextMaxHeight] = useState<number>(0)\r\n const [otherInformationsMaxHeight, setOtherInformationsMaxHeight] = useState<number>(0)\r\n\r\n useEffect(() => {\r\n if (textRef?.current && otherInformationsRef?.current && textContainerMaxHeight && !isMobile) {\r\n const textHeight = isLandscape ? (textContainerMaxHeight * 58) / 100 : (currentHeight * 30) / 100\r\n\r\n const otherInformationsHeight = isLandscape ? (textContainerMaxHeight * 40) / 100 : (currentHeight * 18) / 100\r\n\r\n if (textRef.current.scrollHeight > textHeight) {\r\n if (otherInformationsRef.current.scrollHeight > otherInformationsHeight) {\r\n setTextMaxHeight(textHeight)\r\n setOtherInformationsMaxHeight(otherInformationsHeight)\r\n } else {\r\n setTextMaxHeight(textContainerMaxHeight - otherInformationsRef.current.scrollHeight)\r\n setOtherInformationsMaxHeight(otherInformationsHeight)\r\n }\r\n } else if (otherInformationsRef.current.scrollHeight > otherInformationsHeight) {\r\n setTextMaxHeight(textHeight)\r\n setOtherInformationsMaxHeight(textContainerMaxHeight - textRef.current.scrollHeight)\r\n } else {\r\n setTextMaxHeight(textHeight)\r\n setOtherInformationsMaxHeight(otherInformationsHeight)\r\n }\r\n }\r\n }, [textRef?.current, otherInformationsRef?.current, textContainerMaxHeight])\r\n\r\n useEffect(() => {\r\n if (textRef?.current && textMaxHeight) {\r\n if (!isMobile && textRef.current.scrollHeight > textMaxHeight && textRef.current.scrollHeight > textRef.current.clientHeight) {\r\n handleScroll()\r\n } else {\r\n setOpacityStyle(undefined)\r\n }\r\n }\r\n }, [textRef?.current, textMaxHeight])\r\n\r\n useEffect(() => {\r\n if (otherInformationsRef?.current && otherInformationsMaxHeight) {\r\n if (!isMobile && otherInformationsRef.current.scrollHeight > otherInformationsMaxHeight && otherInformationsRef.current.scrollHeight > otherInformationsRef.current.clientHeight) {\r\n handleOtherScroll()\r\n } else {\r\n setOtherOpacityStyle(undefined)\r\n }\r\n }\r\n }, [otherInformationsRef?.current, otherInformationsMaxHeight])\r\n\r\n /**\r\n * On call :\r\n * - check if textRef.current is defined\r\n * - set opacityStyle state depending on scroll height and current scrolling\r\n */\r\n const handleScroll = (): void => {\r\n if (textRef.current) {\r\n const maxScroll = textRef.current.scrollHeight - textRef.current.offsetHeight\r\n const percentage = Math.ceil((textRef.current.scrollTop / maxScroll) * 40)\r\n setOpacityStyle(`linear-gradient(to bottom, black ${60 + percentage}%, transparent 100%)`)\r\n }\r\n }\r\n\r\n const handleOtherScroll = (): void => {\r\n if (otherInformationsRef.current) {\r\n const maxScroll = otherInformationsRef.current.scrollHeight - otherInformationsRef.current.offsetHeight\r\n const percentage = Math.ceil((otherInformationsRef.current.scrollTop / maxScroll) * 30)\r\n setOtherOpacityStyle(`linear-gradient(to bottom, black ${70 + percentage}%, transparent 100%)`)\r\n }\r\n }\r\n\r\n return (\r\n <div className='rf-flex rf-flex-col large:rf-pr-4 large:rf-min-w-1/2 rf-gap-4'>\r\n <div\r\n className='rf-w-full rf-flex rf-flex-col rf-items-start'\r\n style={{\r\n maxHeight: isLandscape ? textContainerMaxHeight : undefined\r\n }}\r\n >\r\n {processedText && (\r\n <div\r\n ref={textRef}\r\n className='large-vertical:rf-max-h-[30vh] rf-font-medium rf-overflow-y-scroll rf-pb-4 rf-scroll-pb-4 rf-scrollbar-hidden'\r\n style={{\r\n WebkitMaskImage: opacityStyle,\r\n maxHeight: textMaxHeight || undefined\r\n }}\r\n onScroll={handleScroll}\r\n dangerouslySetInnerHTML={{ __html: processedText }}\r\n />\r\n )}\r\n {otherInformations && otherInformations.length > 0 && (\r\n <div\r\n ref={otherInformationsRef}\r\n className='large-vertical:rf-max-h-[18vh] rf-flex rf-flex-col rf-justify-start rf-text-lightgray rf-overflow-y-scroll rf-pb-4 rf-scroll-pb-4 rf-scrollbar-hidden'\r\n style={{\r\n WebkitMaskImage: otherOpacityStyle,\r\n maxHeight: otherInformationsMaxHeight || undefined\r\n }}\r\n onScroll={handleOtherScroll}\r\n >\r\n {otherInformations.map((information, key) => {\r\n const tempContent = Array.isArray(information.content) ? information.content.join(' | ') : information.content\r\n const htmlContent = tempContent.replaceAll('\\n', '<br>')\r\n\r\n return (\r\n <React.Fragment key={key}>\r\n <div\r\n className='rf-mt-4'\r\n style={{\r\n color: color || 'rgb(25, 153, 177)'\r\n }}\r\n >\r\n {information.title}\r\n </div>\r\n <div dangerouslySetInnerHTML={{ __html: htmlContent }} />\r\n </React.Fragment>\r\n )\r\n })}\r\n </div>\r\n )}\r\n </div>\r\n\r\n {/* Downloading button or Qrcode in landscape mode */}\r\n {isLandscape && url && (isUsedOnBorne ? <DownloadQR url={url} /> : <DownloadSheet url={url} />)}\r\n </div>\r\n )\r\n}\r\n\r\nexport default DetailedText\r\n","import React from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { RootState } from '../../../store'\r\nimport { DownloadIcon } from '../../Icons/Miscellaneous'\r\nimport { capitalizeFirstLetter } from '../../../utils/capitalizeFirstLetter'\r\n\r\ninterface DownloadSheetProps {\r\n className?: string\r\n url: string\r\n}\r\n\r\nconst DownloadSheet = ({ className, url }: DownloadSheetProps): React.JSX.Element => {\r\n const translation = useSelector((state: RootState) => state.localeReducer.currentTranslations)\r\n const locale = useSelector((state: RootState) => state.localeReducer.locale)\r\n\r\n return (\r\n <div className={`${className} rf-w-full rf-flex`}>\r\n <a\r\n href={url}\r\n className='rf-px-6 rf-py-3 rf-h-fit rf-flex rf-flex-row rf-items-center rf-mt-8 rf-mb-16 large:rf-my-0 rf-border-2 rf-border-black rf-rounded-lg hover:rf-bg-truewhite rf-cursor-pointer rf-font-bold'\r\n >\r\n <DownloadIcon className='rf-h-6 rf-w-6 rf-mr-1' />\r\n {capitalizeFirstLetter(translation.common.downloadsheet, locale)}\r\n </a>\r\n </div>\r\n )\r\n}\r\n\r\nexport default DownloadSheet\r\n","import React, { useEffect, useRef, useState } from 'react'\r\nimport QRCode from 'qrcode'\r\nimport { useSelector } from 'react-redux'\r\nimport { RootState } from '../../../store'\r\n\r\nimport { capitalizeFirstLetter } from '../../../utils/capitalizeFirstLetter'\r\n\r\nimport QRCodeComponent from '../../Utils/QRCodeComponent'\r\nimport PrintingButton from './PrintingButton'\r\nimport { RoundIcon } from '../../Icons/DetailedPOIIcons'\r\n\r\ninterface DownloadQRProps {\r\n url: string\r\n}\r\n\r\nconst DownloadQR = ({ url }: DownloadQRProps): React.JSX.Element => {\r\n const translation = useSelector((state: RootState) => state.localeReducer.currentTranslations)\r\n const locale = useSelector((state: RootState) => state.localeReducer.locale)\r\n const enableDocumentPrinting = useSelector((state: RootState) => state.retorikReducer.configuration.enableDocumentPrinting)\r\n\r\n const [qrCodeData, setQrCodeData] = useState<string | undefined>(undefined)\r\n const imageRef = useRef<HTMLImageElement>(null)\r\n\r\n useEffect(() => {\r\n setQrCodeDataAsync()\r\n }, [])\r\n\r\n const setQrCodeDataAsync = async (): Promise<void> => {\r\n const qrCodeString = await QRCode.toDataURL(url)\r\n setQrCodeData(qrCodeString)\r\n }\r\n\r\n return (\r\n <div className='rf-w-full rf-flex rf-flex-row rf-items-start'>\r\n {/* Printing button if allowed */}\r\n {enableDocumentPrinting && (\r\n <div className='rf-w-1/2 rf-flex rf-justify-start'>\r\n <PrintingButton url={url} />\r\n </div>\r\n )}\r\n\r\n {/* QR code for download */}\r\n <div\r\n className='rf-flex rf-flex-col rf-items-center rf-text-center rf-gap-2 rf-font-bold rf-text-sm'\r\n style={{\r\n width: enableDocumentPrinting ? '50%' : '100%'\r\n }}\r\n >\r\n <div className='rf-flex rf-flex-row rf-items-start rf-gap-1 rf-italic'>\r\n <RoundIcon />\r\n <div className='rf-w-fit'>{`${capitalizeFirstLetter(translation.common.downloadsheetmobile, locale)} ${translation.link.scanQR}`}</div>\r\n </div>\r\n\r\n {qrCodeData && (\r\n <div className='large-vertical:rf-mt-4'>\r\n <QRCodeComponent ref={imageRef} src={qrCodeData} />\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default DownloadQR\r\n","import React, { lazy, Suspense } from 'react'\r\nimport { useSelector, useDispatch } from 'react-redux'\r\nimport { RootState, storeActions } from '../../../store'\r\nimport { PrintIcon } from '../../Icons/DetailedPOIIcons'\r\n\r\nconst PrintingPreview = lazy(() => import('../PrintingPreview'))\r\n\r\ninterface PrintingButtonProps {\r\n url: string\r\n}\r\n\r\nconst PrintingButton = ({ url }: PrintingButtonProps): React.JSX.Element => {\r\n const dispatch = useDispatch()\r\n const translation = useSelector((state: RootState) => state.localeReducer.currentTranslations)\r\n\r\n const handleClick = (): void => {\r\n dispatch(\r\n storeActions.utils.setModalFullscreenContent(\r\n <Suspense>\r\n <PrintingPreview url={url} printingAllowed={true} />\r\n </Suspense>\r\n )\r\n )\r\n }\r\n\r\n return (\r\n <button className='rf-px-4 rf-py-1 rf-flex rf-flex-row rf-items-center rf-gap-2 rf-font-bold rf-text-sm rf-border-2 rf-border-black rf-rounded-lg' onClick={handleClick}>\r\n <PrintIcon />\r\n {translation.common.printsheet}\r\n </button>\r\n )\r\n}\r\n\r\nexport default PrintingButton\r\n","module.exports = (Promise.resolve(__parcel__require__(\"./\" + \"PrintingPreview.c0ca7706.js\"))).then(() => parcelRequire('eO1En'));","import React, { useEffect, useState } from 'react'\r\nimport type { Review } from '../../../models/attachmentTypes'\r\nimport { imageFiles } from '../../../utils/imageFiles'\r\nimport { capitalizeFirstLetter } from '../../../utils/capitalizeFirstLetter'\r\nimport { Carousel } from '../../Utils'\r\n\r\ninterface DetailedMediaProps {\r\n media?: [\r\n {\r\n url?: string\r\n title?: string\r\n credits?: string\r\n }\r\n ]\r\n review?: Review\r\n color?: string\r\n}\r\n\r\ninterface Media {\r\n type?: number\r\n url: string\r\n alt?: string\r\n}\r\n\r\nconst DetailedMedia = ({\r\n media,\r\n review,\r\n color\r\n}: DetailedMediaProps): React.JSX.Element => {\r\n const [landscapeImage, setLandscapeImage] = useState<boolean>(false)\r\n const [carouselMedia, setCarouselMedia] = useState<Array<Media>>([])\r\n\r\n useEffect(() => {\r\n if (media && media.length > 0) {\r\n let tempMedia: Array<Media> = []\r\n media.forEach((med) => {\r\n med.url &&\r\n (tempMedia = [\r\n ...tempMedia,\r\n { url: med.url, alt: med.title || 'media' }\r\n ])\r\n })\r\n setCarouselMedia(tempMedia)\r\n }\r\n }, [media])\r\n\r\n /**\r\n * On review change :\r\n * - check if the review contains a picture url\r\n * - if so, create an Image with this url, and check if its width is larger than its height\r\n * - set landscapeImage state with the result\r\n */\r\n useEffect(() => {\r\n if (review?.picture?.url) {\r\n const getImageData = async (): Promise<void> => {\r\n const image = new Image()\r\n image.onload = (): void => {\r\n setLandscapeImage(image.width > image.height)\r\n }\r\n image.src = review?.picture?.url || ''\r\n }\r\n getImageData()\r\n }\r\n }, [review])\r\n\r\n return (\r\n <div className='large:rf-min-w-1/2 large:rf-pl-4 rf-flex rf-flex-col rf-items-center'>\r\n {/* Image */}\r\n {carouselMedia && carouselMedia.length > 0 && (\r\n <div className='rf-relative rf-flex rf-justify-center rf-align-center rf-w-full rf-aspect-[4/3] rf-mb-4 rf-overflow-hidden'>\r\n <Carousel\r\n className='rf-min-h-full rf-min-w-full rf-object-cover'\r\n medias={carouselMedia}\r\n controls={true}\r\n timer={3000}\r\n color={color}\r\n />\r\n </div>\r\n )}\r\n\r\n {/* Comment data */}\r\n {review && review.comment && (\r\n <div className='rf-w-full rf-p-4 large:rf-mb-4 rf-flex rf-flex-col rf-gap-4 rf-bg-truewhite rf-rounded-lg rf-shadow-[0_3px_6px_#00000029]'>\r\n {/* Comment */}\r\n <div className='rf-text-lightgray'>{review.comment}</div>\r\n\r\n {/* Author image / name / capacity */}\r\n {(review.picture || review.author) && (\r\n <div className='rf-flex rf-flex-row rf-items-center'>\r\n {review.picture && (\r\n <div className='rf-h-12 rf-w-12 rf-min-w-12 large:rf-h-16 large:rf-w-16 large:rf-min-w-16 large-vertical:rf-h-24 large-vertical:rf-w-24 large-vertical:rf-min-w-24 rf-mr-4 rf-flex rf-items-center rf-rounded-half rf-overflow-hidden'>\r\n <img\r\n src={review.picture.url || imageFiles.noimage}\r\n alt={review.picture.description || 'auteur'}\r\n className={\r\n landscapeImage ? 'rf-h-full rf-max-w-none' : 'rf-w-full'\r\n }\r\n />\r\n </div>\r\n )}\r\n {review.author && (\r\n <div className='rf-flex rf-flex-col rf-items-start'>\r\n <p className='rf-font-bold'>\r\n {capitalizeFirstLetter(review.author.name || '')}\r\n </p>\r\n <p className='rf-italic'>\r\n {capitalizeFirstLetter(review.author.capacity || '')}\r\n </p>\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nexport default DetailedMedia\r\n","import React from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { RootState } from '../../../store'\r\n\r\nimport type { AddressStructured, Coordinates } from '../../../models/attachmentTypes'\r\n\r\nimport ShowPhoneNumber from './ShowPhoneNumber'\r\nimport CommentsPennant from './CommentsPennant'\r\nimport Map from './Map'\r\nimport DownloadSheet from './DownloadSheet'\r\nimport DownloadQR from './DownloadQR'\r\n\r\ntype DetailedAddressProps = {\r\n address?: AddressStructured\r\n phoneNumber?: string\r\n coordinates?: Coordinates\r\n color?: string\r\n customerReviews?: number\r\n url?: string\r\n}\r\n\r\nconst DetailedAddress = ({ address, phoneNumber, coordinates, color, customerReviews, url }: DetailedAddressProps): React.JSX.Element => {\r\n const isMobile = useSelector((state: RootState) => state.viewReducer.isMobile)\r\n const isLandscape = useSelector((state: RootState) => state.viewReducer.isLandscape)\r\n const isBorne = useSelector((state: RootState) => state.viewReducer.isBorne)\r\n const currentWidth = useSelector((state: RootState) => state.viewReducer.currentWidth)\r\n const configuration = useSelector((state: RootState) => state.retorikReducer.configuration)\r\n\r\n return (\r\n <div className='rf-relative rf-w-1/3 vertical:rf-w-full large:rf-bg-truewhite rf-flex rf-flex-col large-vertical:rf-flex-row'>\r\n {/* Pennant with comments */}\r\n {customerReviews && <CommentsPennant className='rf-absolute large-vertical:rf-hidden rf-top-0 rf-left-1/2 rf--translate-x-1/2' color={color} customerReviews={customerReviews} />}\r\n\r\n {/* Address + phone number */}\r\n <div\r\n className={`rf-px-6 rf-flex rf-flex-col large-vertical:rf-w-1/2 rf-items-center rf-text-center ${\r\n customerReviews ? (isBorne ? 'rf-bg-truewhite rf-justify-center' : 'rf-bg-truewhite rf-justify-start') : 'rf-justify-center'\r\n }`}\r\n style={{\r\n height: isMobile ? (customerReviews ? currentWidth : undefined) : isLandscape ? (coordinates && coordinates.latitude && coordinates.longitude ? '50%' : '100%') : 'calc(50vw - 3rem)'\r\n }}\r\n >\r\n <div className={customerReviews && !isBorne ? (isLandscape ? 'rf-pt-[26vh] rf-pb-12' : 'rf-pt-11/20 rf-pb-12') : 'rf-py-12'}>\r\n {address && (\r\n <React.Fragment>\r\n {address.street && <div>{address.street}</div>}\r\n {address.addressLocality && <div>{address.postalCode ? `${address.postalCode} ${address.addressLocality}` : address.addressLocality}</div>}\r\n </React.Fragment>\r\n )}\r\n </div>\r\n {phoneNumber && <ShowPhoneNumber phoneNumber={phoneNumber} />}\r\n\r\n {/* QRcode to download data in borne mode */}\r\n {coordinates &&\r\n coordinates.latitude &&\r\n coordinates.longitude &&\r\n isBorne &&\r\n url &&\r\n (configuration.isUsedOnBorne ? <DownloadQR url={url} /> : <DownloadSheet className='rf-justify-center' url={url} />)}\r\n </div>\r\n\r\n {/* Map if coordinates are given / download button in borne mode if no coordinate */}\r\n {coordinates && coordinates.latitude && coordinates.longitude ? (\r\n <div\r\n className='rf-relative large-vertical:rf-w-1/2'\r\n style={{\r\n height: isMobile ? currentWidth : isLandscape ? '50%' : 'calc(50vw - 3rem)'\r\n }}\r\n >\r\n <Map latitude={coordinates.latitude} longitude={coordinates.longitude} color={color} />\r\n </div>\r\n ) : isBorne ? (\r\n <div className='rf-flex rf-justify-center rf-items-center rf-h-[calc(50vw-3rem)] rf-w-1/2'>\r\n {url && (configuration.isUsedOnBorne ? <DownloadQR url={url} /> : <DownloadSheet className='rf-justify-center' url={url} />)}\r\n </div>\r\n ) : (\r\n <React.Fragment />\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nexport default DetailedAddress\r\n","import React from 'react'\r\nimport { PhoneIcon } from '../../Icons/DetailedPOIIcons'\r\n\r\ninterface ShowPhoneNumberPorps {\r\n phoneNumber: string\r\n}\r\n\r\nconst ShowPhoneNumber = ({ phoneNumber }: ShowPhoneNumberPorps): React.JSX.Element => {\r\n return (\r\n <div className='rf-px-6 rf-py-3 rf-mb-8 rf-flex rf-flex-row rf-items-center rf-font-bold'>\r\n <PhoneIcon className='rf-h-6 rf-w-6 rf-mr-2' />\r\n {phoneNumber}\r\n </div>\r\n )\r\n}\r\n\r\nexport default ShowPhoneNumber\r\n","import React, { useEffect, useState, useRef } from 'react'\r\nimport { useSpring, animated } from '@react-spring/web'\r\nimport { MapContainer, TileLayer, Marker, GeoJSON } from 'react-leaflet'\r\nimport type { FeatureCollection } from 'geojson'\r\nimport type { GeoJSON as GeoJSONType } from 'leaflet'\r\nimport L from 'leaflet'\r\nimport { markerShadow } from '../../../models/urlEncodedImages'\r\nimport { useSelector } from 'react-redux'\r\nimport { RootState } from '../../../store'\r\n\r\nimport { imageFiles } from '../../../utils/imageFiles'\r\nimport { capitalizeFirstLetter } from '../../../utils/capitalizeFirstLetter'\r\n\r\nimport Routes from './Routes'\r\nimport MapUser from './MapUser'\r\nimport QRCodeComponent from '../../Utils/QRCodeComponent'\r\nimport CloseButton from '../../Common/CloseButton'\r\nimport { RoundIcon } from '../../Icons/DetailedPOIIcons'\r\n\r\ninterface MapProps {\r\n latitude: number\r\n longitude: number\r\n color?: string\r\n}\r\n\r\nconst userIcon = L.icon({\r\n iconUrl: `${imageFiles.mapDeparture}`,\r\n shadowUrl: markerShadow,\r\n iconSize: [32, 41],\r\n iconAnchor: [16, 41]\r\n})\r\n\r\nconst springDuration = 500\r\n\r\nconst Map = ({ latitude, longitude, color }: MapProps): React.JSX.Element => {\r\n const translation = useSelector((state: RootState) => state.localeReducer.currentTranslations)\r\n const locale = useSelector((state: RootState) => state.localeReducer.locale)\r\n const configuration = useSelector((state: RootState) => state.retorikReducer.configuration)\r\n\r\n const [mapLayerData, setMapLayerData] = useState<FeatureCollection | undefined>(undefined)\r\n const geoJsonLayer = useRef<GeoJSONType | null>(null)\r\n const coordinates =\r\n configuration.position?.latitude && configuration.position?.longitude\r\n ? [\r\n [configuration.position.longitude, configuration.position.latitude],\r\n [longitude, latitude]\r\n ]\r\n : undefined\r\n const [qrCodeUrl, setQrCodeUrl] = useState<string | null>()\r\n\r\n const fadeInTimerRef = useRef<NodeJS.Timer | null>(null)\r\n const [spring, api] = useSpring(() => ({\r\n from: {\r\n opacity: 0\r\n }\r\n }))\r\n\r\n useEffect(() => {\r\n if (geoJsonLayer.current) {\r\n mapLayerData && geoJsonLayer.current.clearLayers().addData(mapLayerData)\r\n }\r\n }, [mapLayerData])\r\n\r\n useEffect(() => {\r\n qrCodeUrl &&\r\n api.start({\r\n from: {\r\n opacity: 0\r\n },\r\n to: {\r\n opacity: 1\r\n },\r\n config: {\r\n duration: springDuration\r\n }\r\n })\r\n\r\n return () => {\r\n fadeInTimerRef?.current && clearTimeout(fadeInTimerRef.current)\r\n }\r\n }, [qrCodeUrl])\r\n\r\n const handleCloseQrCode = (): void => {\r\n api.start({\r\n from: {\r\n opacity: 1\r\n },\r\n to: {\r\n opacity: 0\r\n },\r\n config: {\r\n duration: springDuration\r\n }\r\n })\r\n\r\n fadeInTimerRef?.current && clearTimeout(fadeInTimerRef.current)\r\n fadeInTimerRef.current = setTimeout(() => {\r\n setQrCodeUrl(null)\r\n }, springDuration)\r\n }\r\n\r\n return (\r\n <React.Fragment>\r\n <MapContainer center={[latitude, longitude]} zoom={12} scrollWheelZoom={false} style={{ height: '100%', width: '100%', zIndex: 0 }} attributionControl={false}>\r\n <TileLayer url='https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png' />\r\n <Marker position={[latitude, longitude]} />\r\n {configuration.position?.latitude && configuration.position?.longitude && <Marker position={[configuration.position.latitude, configuration.position.longitude]} icon={userIcon} />}\r\n {mapLayerData && <GeoJSON ref={geoJsonLayer} data={mapLayerData} />}\r\n <MapUser configurationPosition={[configuration.position?.latitude || latitude, configuration.position?.longitude || longitude]} coordinates={[latitude, longitude]} data={mapLayerData} />\r\n </MapContainer>\r\n\r\n {/* Available routes if there are origin and destination coordinates */}\r\n {coordinates && <Routes coordinates={coordinates} setMapLayerData={setMapLayerData} color={color} setQrCodeUrl={setQrCodeUrl} />}\r\n\r\n {/* QRcode covering the map in borne mode */}\r\n {qrCodeUrl && (\r\n <animated.div\r\n className='rf-absolute rf-h-full rf-w-full rf-top-0 rf-left-0 rf-z-ui rf-flex rf-flex-col rf-justify-center rf-items-center rf-gap-4 rf-text-truewhite'\r\n style={{\r\n background: 'rgba(18,18,18,0.7)',\r\n ...spring\r\n }}\r\n >\r\n <CloseButton onClick={handleCloseQrCode} showLabel={false} />\r\n <div className='rf-flex rf-flex-row rf-items-start rf-gap-1 rf-text-truewhite rf-italic'>\r\n <RoundIcon className='rf-h-4 rf-mt-[0.2rem]' color='#FFF' />\r\n <div className='rf-w-fit rf-flex rf-flex-col rf-items-center'>\r\n <div>{capitalizeFirstLetter(translation.poi.openroutemobile, locale)}</div>\r\n <div>{translation.link.scanQR}</div>\r\n </div>\r\n </div>\r\n <QRCodeComponent src={qrCodeUrl} />\r\n </animated.div>\r\n )}\r\n </React.Fragment>\r\n )\r\n}\r\n\r\nexport default Map\r\n","import React, { useEffect, useRef, useState } from 'react'\r\nimport QRCode from 'qrcode'\r\nimport type { FeatureCollection } from 'geojson'\r\nimport { useSelector } from 'react-redux'\r\nimport { RootState } from '../../../store'\r\n\r\nimport { openRoute, openRouteAPIKey, googleMapsAddress } from '../../../models/constants'\r\nimport { capitalizeFirstLetter } from '../../../utils/capitalizeFirstLetter'\r\n\r\nimport RoutesItem from './RoutesItem'\r\nimport { OpenLocationIcon } from '../../Icons/MapIcons'\r\n\r\ninterface RoutesProps {\r\n coordinates: number[][]\r\n setMapLayerData: (data: FeatureCollection | undefined) => void\r\n color?: string\r\n setQrCodeUrl: (url: string) => void\r\n}\r\n\r\nconst Routes = ({ coordinates, setMapLayerData, color, setQrCodeUrl }: RoutesProps): React.JSX.Element => {\r\n const translation = useSelector((state: RootState) => state.localeReducer.currentTranslations)\r\n const locale = useSelector((state: RootState) => state.localeReducer.locale)\r\n const isRTL = useSelector((state: RootState) => state.localeReducer.isRTL)\r\n const isUsedOnBorne = useSelector((state: RootState) => state.retorikReducer.configuration.isUsedOnBorne)\r\n\r\n const [drivingCar, setDrivingCar] = useState<FeatureCollection | undefined>(undefined)\r\n const [cyclingRegular, setCyclingRegular] = useState<FeatureCollection | undefined>(undefined)\r\n const [footWalking, setFootWalking] = useState<FeatureCollection | undefined>(undefined)\r\n const [currentChosen, setCurrentChosen] = useState<string | undefined>(undefined)\r\n\r\n const travelModeRef = useRef<string | undefined>(undefined)\r\n\r\n /**\r\n * On component mount :\r\n * - call methods to retrieve data from openroute API\r\n */\r\n useEffect(() => {\r\n calculateForProfile('driving-car')\r\n calculateForProfile('cycling-regular')\r\n calculateForProfile('foot-walking')\r\n }, [])\r\n\r\n /**\r\n * On currentChosen state change :\r\n * - switch on currentChosen value to display the associated data on the map\r\n */\r\n useEffect(() => {\r\n switch (currentChosen) {\r\n case 'drivingCar':\r\n drivingCar && drivingCar.features && setMapLayerData(drivingCar)\r\n travelModeRef.current = 'driving'\r\n break\r\n case 'cyclingRegular':\r\n cyclingRegular && cyclingRegular.features && setMapLayerData(cyclingRegular)\r\n travelModeRef.current = 'bicycling'\r\n break\r\n case 'footWalking':\r\n footWalking && footWalking.features && setMapLayerData(footWalking)\r\n travelModeRef.current = 'walking'\r\n break\r\n default:\r\n break\r\n }\r\n }, [currentChosen])\r\n\r\n /**\r\n * On drivingCar state change :\r\n * - if driving car data were retrieved and no course has been chosen, set currentChosen state to 'driving-car'\r\n */\r\n useEffect(() => {\r\n drivingCar && !currentChosen && setCurrentChosen('drivingCar')\r\n }, [drivingCar])\r\n\r\n /**\r\n * On call :\r\n * - call the openroute API to retrieve data for the current course\r\n * @param profile : string\r\n */\r\n const calculateForProfile = async (profile: string): Promise<void> => {\r\n const url = `${openRoute}/${profile}/geojson`\r\n const data = await fetch(url, {\r\n method: 'POST',\r\n headers: {\r\n Authorization: openRouteAPIKey,\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({ coordinates: coordinates })\r\n })\r\n .then((result) => {\r\n return result.json()\r\n })\r\n .catch(() => {\r\n return null\r\n })\r\n\r\n if (data && !data.error) {\r\n switch (profile) {\r\n case 'driving-car':\r\n setDrivingCar(data)\r\n break\r\n case 'cycling-regular':\r\n setCyclingRegular(data)\r\n break\r\n case 'foot-walking':\r\n setFootWalking(data)\r\n break\r\n default:\r\n break\r\n }\r\n }\r\n }\r\n\r\n const handleClick = async (): Promise<void> => {\r\n if (travelModeRef?.current && coordinates.length === 2) {\r\n // Create an URL to Google Maps with coordinates and travelling mode\r\n const coordinatesInUrl = `origin=${coordinates[0][1]},${coordinates[0][0]}&destination=${coordinates[1][1]},${coordinates[1][0]}`\r\n const fullUrl = `${googleMapsAddress}${coordinatesInUrl}&travelmode=${travelModeRef.current}`\r\n\r\n if (isUsedOnBorne) {\r\n const url = await QRCode.toDataURL(fullUrl)\r\n setQrCodeUrl(url)\r\n } else {\r\n // If we are not on a borne, open a new tab in browser\r\n window.open(fullUrl, '_blank')\r\n }\r\n }\r\n }\r\n\r\n return drivingCar || cyclingRegular || footWalking ? (\r\n <div className='rf-absolute rf-bottom-2 rf-w-full rf-flex rf-flex-row rf-gap-4 rf-justify-center'>\r\n {/* Data per choice : Car / Cycle / Foot */}\r\n <div\r\n className={`rf-grid rf-grid-cols-routes rf-pl-6 rf-pr-4 rf-py-2 rf-gap-4 rf-rounded-lg rf-bg-truewhite ${\r\n isRTL ? 'rf-text-arabic' : 'rf-text-xs'\r\n } large:rf-text-sm rf-shadow-[0_6px_6px_#00000029]`}\r\n >\r\n <RoutesItem\r\n summary={{\r\n type: 'drivingCar',\r\n distance: drivingCar?.features?.length ? drivingCar.features[0].properties?.summary?.distance : undefined,\r\n duration: drivingCar?.features?.length ? drivingCar.features[0].properties?.summary?.duration : undefined\r\n }}\r\n chosen={currentChosen === 'drivingCar'}\r\n color={color}\r\n onClick={setCurrentChosen}\r\n />\r\n <RoutesItem\r\n summary={{\r\n type: 'cyclingRegular',\r\n distance: cyclingRegular?.features?.length ? cyclingRegular.features[0].properties?.summary?.distance : undefined,\r\n duration: cyclingRegular?.features?.length ? cyclingRegular.features[0].properties?.summary?.duration : undefined\r\n }}\r\n chosen={currentChosen === 'cyclingRegular'}\r\n color={color}\r\n onClick={setCurrentChosen}\r\n />\r\n <RoutesItem\r\n summary={{\r\n type: 'footWalking',\r\n distance: footWalking?.features?.length ? footWalking.features[0].properties?.summary?.distance : undefined,\r\n duration: footWalking?.features?.length ? footWalking.features[0].properties?.summary?.duration : undefined\r\n }}\r\n chosen={currentChosen === 'footWalking'}\r\n color={color}\r\n onClick={setCurrentChosen}\r\n />\r\n </div>\r\n\r\n {/* Redirection button */}\r\n <button\r\n className={`rf-aspect-square rf-w-3/20 rf-min-w-3/20 rf-max-w-3/20 large:rf-w-1/8 large:rf-min-w-1/8 large:rf-max-w-1/8 rf-overflow-y-hidden rf-p-1 rf-flex rf-flex-col rf-justify-evenly rf-items-center rf-border-2 rf-border-trueblack rf-rounded-lg rf-font-bold ${\r\n isRTL ? 'rf-text-arabic' : 'rf-text-xs'\r\n } large:rf-text-sm rf-bg-truewhite`}\r\n onClick={handleClick}\r\n >\r\n <OpenLocationIcon className='rf-w-5 rf-h-5' />\r\n {capitalizeFirstLetter(translation.poi.route, locale)}\r\n </button>\r\n </div>\r\n ) : (\r\n <React.Fragment />\r\n )\r\n}\r\n\r\nexport default Routes\r\n","import React from 'react'\r\nimport getDistanceAsString from '../../../utils/getDistanceAsString'\r\nimport getTimeAsString from '../../../utils/getTimeAsString'\r\nimport * as Icons from '../../Icons/MapIcons'\r\n\r\ninterface Summary {\r\n type: string\r\n distance?: number\r\n duration?: number\r\n}\r\n\r\ninterface RoutesItemProps {\r\n summary: Summary\r\n chosen?: boolean\r\n color?: string\r\n onClick: (type: string) => void\r\n}\r\n\r\nconst RoutesItem = ({ summary, chosen, color, onClick }: RoutesItemProps): React.JSX.Element => {\r\n return (\r\n <div className='rf-flex rf-flex-col rf-justify-end hover:rf-cursor-pointer' onClick={(): void => onClick(summary.type)}>\r\n <div className='rf-h-full rf-flex rf-flex-row rf-gap-3 rf-items-center'>\r\n <div className='rf-relative rf-flex rf-justify-center rf-items-center'>\r\n {/* Colored circle + triangle atop */}\r\n <div\r\n className='rf-absolute rf-w-9 rf-h-9 rf-rounded-max'\r\n style={{\r\n backgroundColor: chosen ? color : '#EFEDF0'\r\n }}\r\n />\r\n <div className='rf-absolute rf-w-full -rf-top-[1.15rem] rf-flex rf-justify-center'>\r\n <Icons.TriangleIcon className='rf-w-2 rf-h-2' color={chosen ? color : 'transparent'} />\r\n </div>\r\n\r\n {summary.type === 'drivingCar' && <Icons.DrivingCarIcon className='rf-w-5 rf-z-util' color={chosen ? '#FFF' : '#535252'} />}\r\n {summary.type === 'cyclingRegular' && <Icons.CyclingRegularIcon className='rf-w-6 rf-z-util' color={chosen ? '#FFF' : '#535252'} />}\r\n {summary.type === 'footWalking' && <Icons.FootWalkingIcon className='rf-w-6 rf-z-util' color={chosen ? '#FFF' : '#535252'} />}\r\n </div>\r\n <div className='rf-flex rf-flex-col rf-justify-center rf-items-start'>\r\n {/* Duration */}\r\n <div className='rf-whitespace-nowrap rf-font-bold'>{getTimeAsString(summary?.duration)}</div>\r\n\r\n {/* Distance */}\r\n <div className='rf-whitespace-nowrap'>{getDistanceAsString(summary?.distance)}</div>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default RoutesItem\r\n","const getDistanceAsString = (distance: number | undefined): string => {\r\n if (typeof distance !== 'number') {\r\n return 'NC'\r\n }\r\n\r\n if (distance <= 0) return '0 m'\r\n if (distance < 1) return `${distance * 100} cm`\r\n if (distance < 1000) return `${distance} m`\r\n if (distance >= 1000) return `${(Math.ceil(distance / 1000) * 10) / 10} km`\r\n\r\n return 'NC'\r\n}\r\n\r\nexport default getDistanceAsString\r\n","const getTimeAsString = (time: number | undefined): string => {\r\n if (typeof time !== 'number') {\r\n return 'NC'\r\n }\r\n\r\n if (time < 1) return 'NC'\r\n if (time < 60) return `${time} s`\r\n if (time < 3600) return `${Math.ceil(time / 60)} min`\r\n if (time === 3600) return `1 h`\r\n if (time > 3600) {\r\n const hours = Math.floor(time / 3600)\r\n const minutes = Math.ceil((time - hours * 3600) / 60)\r\n return `${hours} h ${\r\n minutes === 60 ? 59 : minutes < 10 ? `0${minutes}` : minutes\r\n }`\r\n }\r\n\r\n return 'NC'\r\n}\r\n\r\nexport default getTimeAsString\r\n","import CyclingRegularIcon from './CyclingRegularIcon'\r\nimport DrivingCarIcon from './DrivingCarIcon'\r\nimport FootWalkingIcon from './FootWalkingIcon'\r\nimport OpenLocationIcon from './OpenLocationIcon'\r\nimport TriangleIcon from './TriangleIcon'\r\n\r\nexport {\r\n CyclingRegularIcon,\r\n DrivingCarIcon,\r\n FootWalkingIcon,\r\n OpenLocationIcon,\r\n TriangleIcon\r\n}\r\n","import React from 'react'\r\nimport type { IconDefaultProps } from '../../../models/types'\r\n\r\nconst CyclingRegularIcon = ({\r\n className,\r\n color\r\n}: IconDefaultProps): React.JSX.Element => {\r\n return (\r\n <svg\r\n xmlns='http://www.w3.org/2000/svg'\r\n viewBox='0 0 34.168 29.135'\r\n className={className || 'rf-w-8 rf-h-8'}\r\n >\r\n <g transform='translate(0.5 -1.484)'>\r\n <path\r\n d='M20.5,6.789a2.645,2.645,0,1,0-2.645-2.645A2.653,2.653,0,0,0,20.5,6.789Zm-13.885,8.6a6.612,6.612,0,1,0,0,13.224,6.612,6.612,0,1,0,0-13.224Zm0,11.24a4.628,4.628,0,1,1,0-9.257,4.628,4.628,0,1,1,0,9.257ZM14.282,13.4l3.174-3.174,1.058,1.058a9.264,9.264,0,0,0,6.744,2.777V11.418A6.57,6.57,0,0,1,20.5,9.434L17.984,6.922a3.242,3.242,0,0,0-2.116-.793,2.219,2.219,0,0,0-1.851.793l-3.7,3.7a2.611,2.611,0,0,0-.793,1.851,2.219,2.219,0,0,0,.793,1.851l4.232,3.7v6.612h2.645v-8.2Zm10.843,1.984A6.612,6.612,0,1,0,31.737,22,6.548,6.548,0,0,0,25.125,15.385Zm0,11.24A4.628,4.628,0,1,1,29.753,22,4.685,4.685,0,0,1,25.125,26.625Z'\r\n transform='translate(0 0.484)'\r\n fill={color || '#fff'}\r\n />\r\n </g>\r\n </svg>\r\n )\r\n}\r\n\r\nexport default CyclingRegularIcon\r\n","import React from 'react'\r\nimport type { IconDefaultProps } from '../../../models/types'\r\n\r\nconst DrivingCarIcon = ({\r\n className,\r\n color\r\n}: IconDefaultProps): React.JSX.Element => {\r\n return (\r\n <svg\r\n xmlns='http://www.w3.org/2000/svg'\r\n viewBox='0 0 34.168 29.135'\r\n className={className || 'rf-w-8 rf-h-8'}\r\n >\r\n <path\r\n id='car'\r\n d='M32.385,71.254H28.507L27.43,68.559A7.217,7.217,0,0,0,20.7,64H12.471a7.219,7.219,0,0,0-6.735,4.559L4.658,71.254H.781a.777.777,0,0,0-.754.966l.389,1.554a.777.777,0,0,0,.754.589h1.3a4.116,4.116,0,0,0-1.43,3.109V80.58A4.111,4.111,0,0,0,2.076,83.3v3.5a2.073,2.073,0,0,0,2.072,2.072H6.221A2.073,2.073,0,0,0,8.293,86.8V84.725h16.58V86.8a2.073,2.073,0,0,0,2.072,2.072h2.072A2.073,2.073,0,0,0,31.09,86.8V83.3a4.109,4.109,0,0,0,1.036-2.716V77.471A4.118,4.118,0,0,0,30.7,74.362H32a.777.777,0,0,0,.754-.589l.389-1.554a.778.778,0,0,0-.754-.966ZM9.584,70.1a3.109,3.109,0,0,1,2.887-1.954H20.7A3.109,3.109,0,0,1,23.582,70.1l1.291,3.227H8.293ZM6.221,80.567a2.066,2.066,0,1,1,0-4.132,3.987,3.987,0,0,1,3.109,3.1c0,1.24-1.865,1.033-3.109,1.033Zm20.725,0c-1.243,0-3.109.207-3.109-1.033a3.987,3.987,0,0,1,3.109-3.1,2.066,2.066,0,1,1,0,4.132Z'\r\n transform='translate(0.501 -63.5)'\r\n fill={color || '#fff'}\r\n />\r\n </svg>\r\n )\r\n}\r\n\r\nexport default DrivingCarIcon\r\n","import React from 'react'\r\nimport type { IconDefaultProps } from '../../../models/types'\r\n\r\nconst FootWalkingIcon = ({\r\n className,\r\n color\r\n}: IconDefaultProps): React.JSX.Element => {\r\n return (\r\n <svg\r\n xmlns='http://www.w3.org/2000/svg'\r\n viewBox='-6 0 34.168 29.135'\r\n className={className || 'rf-w-8 rf-h-8'}\r\n >\r\n <path\r\n d='M11.4,5.249A2.625,2.625,0,1,0,8.772,2.625,2.625,2.625,0,0,0,11.4,5.249ZM16.564,13.4l-1.274-.645-.53-1.608A5.962,5.962,0,0,0,9.171,7c-1.968-.005-3.057.552-5.1,1.378A5.216,5.216,0,0,0,1.352,10.9l-.366.744a1.755,1.755,0,0,0,.776,2.346,1.726,1.726,0,0,0,2.324-.782l.366-.744a1.738,1.738,0,0,1,.9-.842l1.465-.591-.831,3.319A3.512,3.512,0,0,0,6.8,17.568l3.275,3.576a3.529,3.529,0,0,1,.815,1.515l1,4.008a1.75,1.75,0,0,0,3.4-.848l-1.214-4.866a3.5,3.5,0,0,0-.815-1.515l-2.488-2.718.94-3.756.3.9a3.487,3.487,0,0,0,1.733,2.023l1.274.645a1.726,1.726,0,0,0,2.324-.782,1.77,1.77,0,0,0-.782-2.351ZM4.048,21.1a3.393,3.393,0,0,1-.776,1.176L.538,25.01a1.75,1.75,0,1,0,2.472,2.477l3.248-3.248a3.554,3.554,0,0,0,.776-1.176l.738-1.848c-3.024-3.3-2.116-2.286-2.592-2.936L4.048,21.1Z'\r\n transform='translate(0.612 0.5)'\r\n fill={color || '#fff'}\r\n />\r\n </svg>\r\n )\r\n}\r\n\r\nexport default FootWalkingIcon\r\n","import React from 'react'\r\nimport type { IconDefaultProps } from '../../../models/types'\r\n\r\nconst OpenLocationIcon = ({ className }: IconDefaultProps): React.JSX.Element => {\r\n return (\r\n <svg\r\n xmlns='http://www.w3.org/2000/svg'\r\n viewBox='0 0 29.771 29.771'\r\n className={className || 'rf-w-6 rf-h-6'}\r\n >\r\n <path d='M29.771,0,0,14.886l11.164,3.721,3.721,11.164Z' />\r\n </svg>\r\n )\r\n}\r\n\r\nexport default OpenLocationIcon\r\n","import React from 'react'\r\nimport type { IconDefaultProps } from '../../../models/types'\r\n\r\nconst TriangleIcon = ({ className, color }: IconDefaultProps): React.JSX.Element => {\r\n return (\r\n <svg\r\n xmlns='http://www.w3.org/2000/svg'\r\n viewBox='0 0 16 12'\r\n className={className || 'rf-w-3 rf-h-3'}\r\n >\r\n <path\r\n d='M6.336,2.5a2,2,0,0,1,3.328,0l4.263,6.394A2,2,0,0,1,12.263,12H3.737A2,2,0,0,1,2.073,8.891Z'\r\n fill={color || 'transparent'}\r\n />\r\n </svg>\r\n )\r\n}\r\n\r\nexport default TriangleIcon\r\n","import React, { useEffect } from 'react'\r\nimport { useMap } from 'react-leaflet'\r\nimport type { LatLngTuple } from 'leaflet'\r\nimport type { FeatureCollection } from 'geojson'\r\n\r\ntype MapUserProps = {\r\n configurationPosition: LatLngTuple\r\n coordinates: LatLngTuple\r\n data: FeatureCollection | undefined\r\n}\r\n\r\nconst MapUser = ({\r\n configurationPosition,\r\n coordinates,\r\n data\r\n}: MapUserProps): React.JSX.Element => {\r\n const map = useMap()\r\n\r\n useEffect(() => {\r\n if (configurationPosition !== coordinates) {\r\n const coords1: LatLngTuple = [...configurationPosition]\r\n const coords2: LatLngTuple = [...coordinates]\r\n if (configurationPosition[0] > coordinates[0]) {\r\n coords2[0] -= (configurationPosition[0] - coordinates[0]) / 2\r\n } else {\r\n coords1[0] -= (coordinates[0] - configurationPosition[0]) / 2\r\n }\r\n\r\n map.flyToBounds([coords1, coords2])\r\n } else {\r\n map.flyToBounds([configurationPosition, coordinates])\r\n }\r\n }, [data])\r\n\r\n return <React.Fragment />\r\n}\r\n\r\nexport default MapUser\r\n"],"names":[],"version":3,"file":"AttachmentDetail.57c5579a.js.map","sourceRoot":"../"}
@@ -34,8 +34,6 @@ $parcel$export(module.exports, "default", () => $323612a7bbe80f4b$export$2e2bcd8
34
34
 
35
35
  var $kpW3P = parcelRequire("kpW3P");
36
36
 
37
- var $7WHA7 = parcelRequire("7WHA7");
38
-
39
37
  var $9JtA7 = parcelRequire("9JtA7");
40
38
 
41
39
  var $eYKUg = parcelRequire("eYKUg");
@@ -56,7 +54,13 @@ const $323612a7bbe80f4b$var$CustomView = ({ customView: customView, title: title
56
54
  name: title ? `Davi.CloseWindow${title.replace(/\s/g, '')}` : 'Davi.CloseWindowCustom'
57
55
  }))
58
56
  }));
59
- dispatch((0, $kpW3P.storeActions).utils.setCurrentSubView((0, $7WHA7.CurrentSubView).none));
57
+ dispatch((0, $kpW3P.storeActions).livekit.sendEvent({
58
+ name: 'Davi.CloseWindow',
59
+ callback: ()=>dispatch((0, $kpW3P.storeActions).livekit.sendEvent({
60
+ name: title ? `Davi.CloseWindow${title.replace(/\s/g, '')}` : 'Davi.CloseWindowCustom'
61
+ }))
62
+ }));
63
+ dispatch((0, $kpW3P.storeActions).utils.setCurrentSubView((0, $kpW3P.CurrentSubView).none));
60
64
  setDisplayCustomComponent(false);
61
65
  };
62
66
  const componentToDisplay = (0, $kPQCJ$react.useMemo)(()=>{
@@ -135,4 +139,4 @@ var $323612a7bbe80f4b$export$2e2bcd8739ae039 = $323612a7bbe80f4b$var$CustomView;
135
139
  });
136
140
 
137
141
 
138
- //# sourceMappingURL=CustomView.bf84bdf3.js.map
142
+ //# sourceMappingURL=CustomView.6b96f53f.js.map
@@ -0,0 +1 @@
1
+ {"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,MAAM,sCAAgB;AACtB,MAAM,4CAAsB;AAE5B,MAAM,mCAAa,CAAC,cAAE,UAAU,SAAE,KAAK,QAAE,IAAI,sBAAE,kBAAkB,WAAE,OAAO,6BAAE,yBAAyB,EAAmB;IACtH,MAAM,WAAW,CAAA,GAAA,6BAAU;IAC3B,MAAM,cAAc,CAAA,GAAA,6BAAU,EAAE,CAAC,QAAqB,MAAM,aAAa,CAAC,mBAAmB;IAC7F,MAAM,SAAS,CAAA,GAAA,6BAAU,EAAE,CAAC,QAAqB,MAAM,aAAa,CAAC,MAAM;IAE3E,MAAM,aAAa;QACjB,SACE,CAAA,GAAA,mBAAW,EAAE,UAAU,CAAC,SAAS,CAAC;YAChC,MAAM;YACN,UAAU,IAAM,SAAS,CAAA,GAAA,mBAAW,EAAE,UAAU,CAAC,SAAS,CAAC;oBAAE,MAAM,QAAQ,CAAC,gBAAgB,EAAE,MAAM,OAAO,CAAC,OAAO,KAAK,GAAG;gBAAyB;QACtJ;QAGF,SACE,CAAA,GAAA,mBAAW,EAAE,OAAO,CAAC,SAAS,CAAC;YAC7B,MAAM;YACN,UAAU,IAAM,SAAS,CAAA,GAAA,mBAAW,EAAE,OAAO,CAAC,SAAS,CAAC;oBAAE,MAAM,QAAQ,CAAC,gBAAgB,EAAE,MAAM,OAAO,CAAC,OAAO,KAAK,GAAG;gBAAyB;QACnJ;QAEF,SAAS,CAAA,GAAA,mBAAW,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAA,GAAA,qBAAa,EAAE,IAAI;QACjE,0BAA0B;IAC5B;IAEA,MAAM,qBAAwC,CAAA,GAAA,oBAAM,EAAE;QACpD,IAAI,uBAAA,iCAAA,WAAY,MAAM,EACpB;YAAA,IAAI,oBAAoB;gBACtB,MAAM,YAAY,mBAAmB,IAAI,CAAC,CAAC,IAAM,EAAE,IAAI,KAAK;gBAC5D,IAAI,sBAAA,gCAAA,UAAW,SAAS,EACtB,OAAO,UAAU,SAAS;YAE9B;QAAA;QAEF,qBAAO;IACT,GAAG;QAAC;KAAW;IAEf,qBACE,iCAAC,CAAA,GAAA,cAAa;QAAE,SAAS;QAAS,SAAS;;0BAEzC,iCAAC;gBAAI,WAAU;;kCAEb,iCAAC;wBAAI,WAAU;;0CACb,gCAAC,CAAA,GAAA,iBAAS;gCAAE,OAAO,YAAY,MAAM,CAAC,IAAI;gCAAE,WAAU;gCAAa,YAAY;;0CAC/E,iCAAC;gCAAI,WAAU;;oCACZ,qBAAO,iCAAC;wCAAI,WAAW;;4CAAsB;4CAAK;;uDAAU;kDAC7D,gCAAC;wCAAI,WAAU;kDAA+C,QAAQ,CAAA,GAAA,4BAAoB,EAAE,OAAO,wBAAU;;;;;;kCAIjH,iCAAC;wBAAI,WAAU;;4BACZ,qBAAO,iCAAC;gCAAI,WAAW;;oCAAgB;oCAAK;;+CAAU;0CACvD,gCAAC;gCAAI,WAAU;0CAA8C,QAAQ,CAAA,GAAA,4BAAoB,EAAE,OAAO,wBAAU;;;;;;YAI/G;0BAGD,gCAAC,CAAA,GAAA,cAAyB;gBAAE,gBAAgB;gBAAC,iBAAiB;gBAAM,SAAS;;;;AAGnF;IAEA,2CAAe","sources":["src/components/Views/CustomView.tsx"],"sourcesContent":["import React, { useMemo } from 'react'\r\nimport { useSelector, useDispatch } from 'react-redux'\r\nimport { RootState, storeActions, CurrentSubView } from '../../store'\r\nimport { capitalizeFirstLetter } from '../../utils/capitalizeFirstLetter'\r\nimport TemplateGlobal from '../Templates/TemplateGlobal'\r\nimport { BackButton } from '../Menu/Common'\r\nimport AbsoluteLargeClosingButton from '../Utils/SubView/AbsoluteLargeClosingButton'\r\n\r\ninterface CustomViewProps {\r\n customView?: string\r\n title?: string\r\n icon?: React.JSX.Element\r\n externalComponents?: Array<{ name: string; component: React.JSX.Element }>\r\n display?: boolean\r\n setDisplayCustomComponent: (value: boolean) => void\r\n}\r\n\r\nconst iconClassname = 'rf-h-16 rf-w-16 large-vertical:rf-h-24 large-vertical:rf-w-24'\r\nconst iconClassnameMobile = 'rf-h-8 rf-w-8'\r\n\r\nconst CustomView = ({ customView, title, icon, externalComponents, display, setDisplayCustomComponent }: CustomViewProps): React.JSX.Element => {\r\n const dispatch = useDispatch()\r\n const translation = useSelector((state: RootState) => state.localeReducer.currentTranslations)\r\n const locale = useSelector((state: RootState) => state.localeReducer.locale)\r\n\r\n const handleBack = (): void => {\r\n dispatch(\r\n storeActions.directline.sendEvent({\r\n name: 'Davi.CloseWindow',\r\n callback: () => dispatch(storeActions.directline.sendEvent({ name: title ? `Davi.CloseWindow${title.replace(/\\s/g, '')}` : 'Davi.CloseWindowCustom' }))\r\n })\r\n )\r\n\r\n dispatch(\r\n storeActions.livekit.sendEvent({\r\n name: 'Davi.CloseWindow',\r\n callback: () => dispatch(storeActions.livekit.sendEvent({ name: title ? `Davi.CloseWindow${title.replace(/\\s/g, '')}` : 'Davi.CloseWindowCustom' }))\r\n })\r\n )\r\n dispatch(storeActions.utils.setCurrentSubView(CurrentSubView.none))\r\n setDisplayCustomComponent(false)\r\n }\r\n\r\n const componentToDisplay: React.JSX.Element = useMemo(() => {\r\n if (customView?.length) {\r\n if (externalComponents) {\r\n const component = externalComponents.find((e) => e.name === customView)\r\n if (component?.component) {\r\n return component.component\r\n }\r\n }\r\n }\r\n return <></>\r\n }, [customView])\r\n\r\n return (\r\n <TemplateGlobal display={display} onClick={handleBack}>\r\n {/* title */}\r\n <div className='rf-absolute rf-z-[1] rf-w-full rf-top-0 rf-left-0'>\r\n {/* Mobile display */}\r\n <div className='large:rf-hidden rf-p-4 rf-flex rf-flex-col'>\r\n <BackButton title={translation.common.back} className='rf-text-sm' handleBack={handleBack} />\r\n <div className='large:rf-hidden rf-py-2 rf-flex rf-flex-row rf-items-end undefined'>\r\n {icon ? <div className={iconClassnameMobile}>{icon} </div> : <></>}\r\n <div className='rf-ml-2 rf-capitalize rf-subtitle-size-auto'>{title ? capitalizeFirstLetter(title, locale) : <></>}</div>\r\n </div>\r\n </div>\r\n\r\n <div className='rf-hidden large:rf-flex rf-w-full rf-pt-4 large-vertical:rf-pt-8 rf-pl-4 large-vertical:rf-pl-0 rf-flex-row rf-justify-start large-vertical:rf-justify-center rf-items-center'>\r\n {icon ? <div className={iconClassname}>{icon} </div> : <></>}\r\n <div className='rf-ml-2 rf-uppercase rf-subtitle-size-auto'>{title ? capitalizeFirstLetter(title, locale) : <></>}</div>\r\n </div>\r\n </div>\r\n\r\n {componentToDisplay}\r\n\r\n {/* Closing button in large mode */}\r\n <AbsoluteLargeClosingButton dashboardVisible customComponent={true} onClick={handleBack} />\r\n </TemplateGlobal>\r\n )\r\n}\r\n\r\nexport default CustomView\r\n"],"names":[],"version":3,"file":"CustomView.6b96f53f.js.map","sourceRoot":"../"}
@@ -25,8 +25,6 @@ $parcel$export(module.exports, "default", () => $7d965522966d3c65$export$2e2bcd8
25
25
 
26
26
  var $8ItUL = parcelRequire("8ItUL");
27
27
 
28
- var $4ucVo = parcelRequire("4ucVo");
29
-
30
28
  var $7pypd = parcelRequire("7pypd");
31
29
 
32
30
  var $aMohu = parcelRequire("aMohu");
@@ -47,7 +45,13 @@ const $7d965522966d3c65$var$CustomView = ({ customView: customView, title: title
47
45
  name: title ? `Davi.CloseWindow${title.replace(/\s/g, '')}` : 'Davi.CloseWindowCustom'
48
46
  }))
49
47
  }));
50
- dispatch((0, $8ItUL.storeActions).utils.setCurrentSubView((0, $4ucVo.CurrentSubView).none));
48
+ dispatch((0, $8ItUL.storeActions).livekit.sendEvent({
49
+ name: 'Davi.CloseWindow',
50
+ callback: ()=>dispatch((0, $8ItUL.storeActions).livekit.sendEvent({
51
+ name: title ? `Davi.CloseWindow${title.replace(/\s/g, '')}` : 'Davi.CloseWindowCustom'
52
+ }))
53
+ }));
54
+ dispatch((0, $8ItUL.storeActions).utils.setCurrentSubView((0, $8ItUL.CurrentSubView).none));
51
55
  setDisplayCustomComponent(false);
52
56
  };
53
57
  const componentToDisplay = (0, $2I7bs$useMemo)(()=>{
@@ -126,4 +130,4 @@ var $7d965522966d3c65$export$2e2bcd8739ae039 = $7d965522966d3c65$var$CustomView;
126
130
  });
127
131
 
128
132
 
129
- //# sourceMappingURL=CustomView.9930c671.js.map
133
+ //# sourceMappingURL=CustomView.b32a608f.js.map
@@ -0,0 +1 @@
1
+ {"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,MAAM,sCAAgB;AACtB,MAAM,4CAAsB;AAE5B,MAAM,mCAAa,CAAC,cAAE,UAAU,SAAE,KAAK,QAAE,IAAI,sBAAE,kBAAkB,WAAE,OAAO,6BAAE,yBAAyB,EAAmB;IACtH,MAAM,WAAW,CAAA,GAAA,kBAAU;IAC3B,MAAM,cAAc,CAAA,GAAA,kBAAU,EAAE,CAAC,QAAqB,MAAM,aAAa,CAAC,mBAAmB;IAC7F,MAAM,SAAS,CAAA,GAAA,kBAAU,EAAE,CAAC,QAAqB,MAAM,aAAa,CAAC,MAAM;IAE3E,MAAM,aAAa;QACjB,SACE,CAAA,GAAA,mBAAW,EAAE,UAAU,CAAC,SAAS,CAAC;YAChC,MAAM;YACN,UAAU,IAAM,SAAS,CAAA,GAAA,mBAAW,EAAE,UAAU,CAAC,SAAS,CAAC;oBAAE,MAAM,QAAQ,CAAC,gBAAgB,EAAE,MAAM,OAAO,CAAC,OAAO,KAAK,GAAG;gBAAyB;QACtJ;QAGF,SACE,CAAA,GAAA,mBAAW,EAAE,OAAO,CAAC,SAAS,CAAC;YAC7B,MAAM;YACN,UAAU,IAAM,SAAS,CAAA,GAAA,mBAAW,EAAE,OAAO,CAAC,SAAS,CAAC;oBAAE,MAAM,QAAQ,CAAC,gBAAgB,EAAE,MAAM,OAAO,CAAC,OAAO,KAAK,GAAG;gBAAyB;QACnJ;QAEF,SAAS,CAAA,GAAA,mBAAW,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAA,GAAA,qBAAa,EAAE,IAAI;QACjE,0BAA0B;IAC5B;IAEA,MAAM,qBAAwC,CAAA,GAAA,cAAM,EAAE;QACpD,IAAI,YAAY,QACd;YAAA,IAAI,oBAAoB;gBACtB,MAAM,YAAY,mBAAmB,IAAI,CAAC,CAAC,IAAM,EAAE,IAAI,KAAK;gBAC5D,IAAI,WAAW,WACb,OAAO,UAAU,SAAS;YAE9B;QAAA;QAEF,qBAAO;IACT,GAAG;QAAC;KAAW;IAEf,qBACE,iBAAC,CAAA,GAAA,cAAa;QAAE,SAAS;QAAS,SAAS;;0BAEzC,iBAAC;gBAAI,WAAU;;kCAEb,iBAAC;wBAAI,WAAU;;0CACb,gBAAC,CAAA,GAAA,iBAAS;gCAAE,OAAO,YAAY,MAAM,CAAC,IAAI;gCAAE,WAAU;gCAAa,YAAY;;0CAC/E,iBAAC;gCAAI,WAAU;;oCACZ,qBAAO,iBAAC;wCAAI,WAAW;;4CAAsB;4CAAK;;uDAAU;kDAC7D,gBAAC;wCAAI,WAAU;kDAA+C,QAAQ,CAAA,GAAA,4BAAoB,EAAE,OAAO,wBAAU;;;;;;kCAIjH,iBAAC;wBAAI,WAAU;;4BACZ,qBAAO,iBAAC;gCAAI,WAAW;;oCAAgB;oCAAK;;+CAAU;0CACvD,gBAAC;gCAAI,WAAU;0CAA8C,QAAQ,CAAA,GAAA,4BAAoB,EAAE,OAAO,wBAAU;;;;;;YAI/G;0BAGD,gBAAC,CAAA,GAAA,cAAyB;gBAAE,gBAAgB;gBAAC,iBAAiB;gBAAM,SAAS;;;;AAGnF;IAEA,2CAAe","sources":["src/components/Views/CustomView.tsx"],"sourcesContent":["import React, { useMemo } from 'react'\r\nimport { useSelector, useDispatch } from 'react-redux'\r\nimport { RootState, storeActions, CurrentSubView } from '../../store'\r\nimport { capitalizeFirstLetter } from '../../utils/capitalizeFirstLetter'\r\nimport TemplateGlobal from '../Templates/TemplateGlobal'\r\nimport { BackButton } from '../Menu/Common'\r\nimport AbsoluteLargeClosingButton from '../Utils/SubView/AbsoluteLargeClosingButton'\r\n\r\ninterface CustomViewProps {\r\n customView?: string\r\n title?: string\r\n icon?: React.JSX.Element\r\n externalComponents?: Array<{ name: string; component: React.JSX.Element }>\r\n display?: boolean\r\n setDisplayCustomComponent: (value: boolean) => void\r\n}\r\n\r\nconst iconClassname = 'rf-h-16 rf-w-16 large-vertical:rf-h-24 large-vertical:rf-w-24'\r\nconst iconClassnameMobile = 'rf-h-8 rf-w-8'\r\n\r\nconst CustomView = ({ customView, title, icon, externalComponents, display, setDisplayCustomComponent }: CustomViewProps): React.JSX.Element => {\r\n const dispatch = useDispatch()\r\n const translation = useSelector((state: RootState) => state.localeReducer.currentTranslations)\r\n const locale = useSelector((state: RootState) => state.localeReducer.locale)\r\n\r\n const handleBack = (): void => {\r\n dispatch(\r\n storeActions.directline.sendEvent({\r\n name: 'Davi.CloseWindow',\r\n callback: () => dispatch(storeActions.directline.sendEvent({ name: title ? `Davi.CloseWindow${title.replace(/\\s/g, '')}` : 'Davi.CloseWindowCustom' }))\r\n })\r\n )\r\n\r\n dispatch(\r\n storeActions.livekit.sendEvent({\r\n name: 'Davi.CloseWindow',\r\n callback: () => dispatch(storeActions.livekit.sendEvent({ name: title ? `Davi.CloseWindow${title.replace(/\\s/g, '')}` : 'Davi.CloseWindowCustom' }))\r\n })\r\n )\r\n dispatch(storeActions.utils.setCurrentSubView(CurrentSubView.none))\r\n setDisplayCustomComponent(false)\r\n }\r\n\r\n const componentToDisplay: React.JSX.Element = useMemo(() => {\r\n if (customView?.length) {\r\n if (externalComponents) {\r\n const component = externalComponents.find((e) => e.name === customView)\r\n if (component?.component) {\r\n return component.component\r\n }\r\n }\r\n }\r\n return <></>\r\n }, [customView])\r\n\r\n return (\r\n <TemplateGlobal display={display} onClick={handleBack}>\r\n {/* title */}\r\n <div className='rf-absolute rf-z-[1] rf-w-full rf-top-0 rf-left-0'>\r\n {/* Mobile display */}\r\n <div className='large:rf-hidden rf-p-4 rf-flex rf-flex-col'>\r\n <BackButton title={translation.common.back} className='rf-text-sm' handleBack={handleBack} />\r\n <div className='large:rf-hidden rf-py-2 rf-flex rf-flex-row rf-items-end undefined'>\r\n {icon ? <div className={iconClassnameMobile}>{icon} </div> : <></>}\r\n <div className='rf-ml-2 rf-capitalize rf-subtitle-size-auto'>{title ? capitalizeFirstLetter(title, locale) : <></>}</div>\r\n </div>\r\n </div>\r\n\r\n <div className='rf-hidden large:rf-flex rf-w-full rf-pt-4 large-vertical:rf-pt-8 rf-pl-4 large-vertical:rf-pl-0 rf-flex-row rf-justify-start large-vertical:rf-justify-center rf-items-center'>\r\n {icon ? <div className={iconClassname}>{icon} </div> : <></>}\r\n <div className='rf-ml-2 rf-uppercase rf-subtitle-size-auto'>{title ? capitalizeFirstLetter(title, locale) : <></>}</div>\r\n </div>\r\n </div>\r\n\r\n {componentToDisplay}\r\n\r\n {/* Closing button in large mode */}\r\n <AbsoluteLargeClosingButton dashboardVisible customComponent={true} onClick={handleBack} />\r\n </TemplateGlobal>\r\n )\r\n}\r\n\r\nexport default CustomView\r\n"],"names":[],"version":3,"file":"CustomView.b32a608f.js.map"}
@@ -38,12 +38,21 @@ const $118d706fda813ce5$var$Emergency = ()=>{
38
38
  dispatch((0, $8ItUL.storeActions).directline.sendEvent({
39
39
  name: 'Davi.CloseWindow',
40
40
  callback: ()=>{
41
- dispatch((0, $8ItUL.storeActions).utils.setCurrentSubView((0, $4ucVo.CurrentSubView).none));
41
+ dispatch((0, $8ItUL.storeActions).utils.setCurrentSubView((0, $8ItUL.CurrentSubView).none));
42
42
  dispatch((0, $8ItUL.storeActions).directline.sendEvent({
43
43
  name: 'Davi.CloseWindowEmergency'
44
44
  }));
45
45
  }
46
46
  }));
47
+ dispatch((0, $8ItUL.storeActions).livekit.sendEvent({
48
+ name: 'Davi.CloseWindow',
49
+ callback: ()=>{
50
+ dispatch((0, $8ItUL.storeActions).utils.setCurrentSubView((0, $8ItUL.CurrentSubView).none));
51
+ dispatch((0, $8ItUL.storeActions).livekit.sendEvent({
52
+ name: 'Davi.CloseWindowEmergency'
53
+ }));
54
+ }
55
+ }));
47
56
  };
48
57
  return /*#__PURE__*/ (0, $J4lYy$jsxs)((0, $aMohu.default), {
49
58
  target: (0, $4ucVo.TemplateTarget).emergency,
@@ -72,15 +81,15 @@ $parcel$export(module.exports, "EmergencyContent", () => $cfe5ac7fc315188e$expor
72
81
 
73
82
  var $75pB6 = parcelRequire("75pB6");
74
83
 
75
- var $41ZLl = parcelRequire("41ZLl");
84
+ var $7pypd = parcelRequire("7pypd");
76
85
 
77
- var $4ucVo = parcelRequire("4ucVo");
86
+ var $41ZLl = parcelRequire("41ZLl");
78
87
 
79
88
  var $d22wB = parcelRequire("d22wB");
80
89
 
81
90
  var $8KJP1 = parcelRequire("8KJP1");
82
- const $cfe5ac7fc315188e$var$subView = (0, $4ucVo.AvailableViews).emergency;
83
91
  const $cfe5ac7fc315188e$export$6478e9f7582bd8fc = ()=>{
92
+ const locale = (0, $J4lYy$useSelector)((state)=>state.localeReducer.locale);
84
93
  const baseAddress = (0, $J4lYy$useSelector)((state)=>state.localeReducer.baseAddress);
85
94
  const translation = (0, $J4lYy$useSelector)((state)=>state.localeReducer.currentTranslations);
86
95
  const isMobile = (0, $J4lYy$useSelector)((state)=>state.viewReducer.isMobile);
@@ -120,8 +129,8 @@ const $cfe5ac7fc315188e$export$6478e9f7582bd8fc = ()=>{
120
129
  className: "rf-h-9 rf-w-9 large:rf-h-16 large:rf-w-16"
121
130
  }),
122
131
  /*#__PURE__*/ (0, $J4lYy$jsx)("h3", {
123
- className: "rf-text-verylarge-size-auto rf-font-bold rf-capitalize-first rf-text-center",
124
- children: translation.emergency[$cfe5ac7fc315188e$var$subView]
132
+ className: "rf-text-verylarge-size-auto rf-font-bold rf-text-center",
133
+ children: (0, $7pypd.capitalizeFirstLetter)(translation.emergency.shorttitle, locale)
125
134
  })
126
135
  ]
127
136
  }),
@@ -296,4 +305,4 @@ async function $c1b40d4a10143303$export$cdd2c9f4b3acf5fb(address) {
296
305
 
297
306
 
298
307
 
299
- //# sourceMappingURL=Emergency.1e63c85f.js.map
308
+ //# sourceMappingURL=Emergency.43605d14.js.map
@@ -0,0 +1 @@
1
+ {"mappings":"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","sources":["src/components/Emergency/Emergency.tsx","src/components/Emergency/EmergencyContent.tsx","src/utils/fetchEmergencyData.ts"],"sourcesContent":["import React from 'react'\r\nimport { useDispatch } from 'react-redux'\r\nimport { storeActions, CurrentSubView } from '../../store'\r\nimport { TemplateTarget } from '../../models/enums'\r\nimport TemplateGlobal from '../Templates/TemplateGlobal'\r\nimport AbsoluteLargeClosingButton from '../Utils/SubView/AbsoluteLargeClosingButton'\r\nimport { EmergencyContent } from './EmergencyContent'\r\n\r\nconst Emergency = (): React.JSX.Element => {\r\n const dispatch = useDispatch()\r\n\r\n const handleBack = (): void => {\r\n dispatch(\r\n storeActions.directline.sendEvent({\r\n name: 'Davi.CloseWindow',\r\n callback: () => {\r\n dispatch(storeActions.utils.setCurrentSubView(CurrentSubView.none))\r\n dispatch(storeActions.directline.sendEvent({ name: 'Davi.CloseWindowEmergency' }))\r\n }\r\n })\r\n )\r\n\r\n dispatch(\r\n storeActions.livekit.sendEvent({\r\n name: 'Davi.CloseWindow',\r\n callback: () => {\r\n dispatch(storeActions.utils.setCurrentSubView(CurrentSubView.none))\r\n dispatch(storeActions.livekit.sendEvent({ name: 'Davi.CloseWindowEmergency' }))\r\n }\r\n })\r\n )\r\n }\r\n\r\n return (\r\n <TemplateGlobal target={TemplateTarget.emergency} onClick={handleBack}>\r\n <div className='rf-h-full rf-w-full rf-flex rf-flex-col rf-items-center rf-justify-center rf-gap-12'>\r\n {/* Emergency data */}\r\n <EmergencyContent />\r\n </div>\r\n\r\n {/* Closing button */}\r\n <AbsoluteLargeClosingButton dashboardVisible={true} onClick={handleBack} />\r\n </TemplateGlobal>\r\n )\r\n}\r\n\r\nexport default Emergency\r\n","import React, { useEffect, useRef, useState } from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { RootState, AvailableViews } from '../../store'\r\nimport { fetchEmergencyData } from '../../utils/fetchEmergencyData'\r\nimport { capitalizeFirstLetter } from '../../utils/capitalizeFirstLetter'\r\nimport { EmergencyTypes } from '../../models/emergencyTypes'\r\nimport * as Icons from '../Icons/ViewIcons'\r\nimport Animation2 from '../Loader/Animation2'\r\nimport preventEvents from '../../utils/preventEvents'\r\n\r\n\r\nconst EmergencyContent = (): React.JSX.Element => {\r\n const locale = useSelector((state: RootState) => state.localeReducer.locale)\r\n const baseAddress = useSelector((state: RootState) => state.localeReducer.baseAddress)\r\n const translation = useSelector((state: RootState) => state.localeReducer.currentTranslations)\r\n const isMobile = useSelector((state: RootState) => state.viewReducer.isMobile)\r\n const isWidget = useSelector((state: RootState) => state.viewReducer.isWidget)\r\n\r\n const [municipalPoliceNumber, setMunicipalPoliceNumber] = useState<string>('')\r\n const [localHospitalName, setLocalHospitalName] = useState<string>('')\r\n const [localHospitalNumber, setLocalHospitalNumber] = useState<string>('')\r\n const [poisonControlNumber, setPoisonControlNumber] = useState<string>('')\r\n const [loading, setLoading] = useState<boolean>(true)\r\n const divRef = useRef<HTMLDivElement>(null)\r\n\r\n useEffect(() => {\r\n if (divRef?.current) {\r\n isWidget && preventEvents(null, divRef)\r\n }\r\n }, [divRef?.current])\r\n\r\n useEffect(() => {\r\n const getData = async (): Promise<void> => {\r\n const data: EmergencyTypes = await fetchEmergencyData(baseAddress)\r\n if (data) {\r\n setMunicipalPoliceNumber(data.municipalPoliceNumber)\r\n setLocalHospitalName(data.localHospitalName)\r\n setLocalHospitalNumber(data.localHospitalNumber)\r\n setPoisonControlNumber(data.poisonControlNumber)\r\n }\r\n setLoading(false)\r\n }\r\n getData()\r\n }, [baseAddress])\r\n\r\n return (\r\n <>\r\n <div className={`rf-flex rf-flex-col rf-items-center ${isMobile ? 'rf-justify-center rf-gap-2' : 'rf-justify-end rf-flex-[2_1_0%] rf-gap-9'}`}>\r\n <Icons.EmergencyIcon className='rf-h-9 rf-w-9 large:rf-h-16 large:rf-w-16' />\r\n <h3 className='rf-text-verylarge-size-auto rf-font-bold rf-text-center'>{capitalizeFirstLetter(translation.emergency.shorttitle, locale)}</h3>\r\n </div>\r\n <div\r\n ref={divRef}\r\n className='rf-w-full rf-flex rf-flex-col rf-items-center rf-flex-[4_1_0%] rf-justify-evenly rf-h-full rf-pt-2 rf-overflow-y-scroll rf-scrollbar-hidden'\r\n style={{\r\n background: isMobile ? 'transparent' : 'transparent linear-gradient(291deg, #F2F3F6 0%, #E5E6EC 100%) 0% 0% no-repeat padding-box',\r\n boxShadow: isMobile ? '' : '#ffff -3px -3px 16px, rgb(0 0 0 / 25%) 0px 2px 10px 0px'\r\n }}\r\n >\r\n {loading ? (\r\n <>\r\n <div className='rf-w-6 rf-h-6 rf-mb-16'>\r\n <Animation2 color='gray' loaderColor='#1999b1' backgroundColor='transparent' />\r\n </div>\r\n </>\r\n ) : (\r\n <>\r\n <div className={`rf-w-full rf-grid ${isMobile ? 'rf-grid-cols-2 rf-gap-8 rf-mt-10 rf-mb-8' : 'rf-grid-cols-4 rf-divide-x'} `} style={{ padding: isMobile ? '' : '0 10%' }}>\r\n <div className='rf-flex rf-flex-col rf-items-center rf-gap-2'>\r\n <p className='rf-text-xl rf-font-bold rf-uppercase'>{translation.emergency.samu}</p>\r\n <p className='rf-text-5xl large:rf-text-6xl rf-font-bold'>15</p>\r\n </div>\r\n <div className={`rf-flex rf-flex-col rf-items-center ${isMobile ? '' : 'rf-border-l rf-border-[#C7C6C6]'} rf-gap-2`}>\r\n <p className='rf-text-xl rf-font-bold rf-uppercase'>{translation.emergency.police}</p>\r\n <p className='rf-text-5xl large:rf-text-6xl rf-font-bold'>17</p>\r\n </div>\r\n <div className={`rf-flex rf-flex-col rf-items-center ${isMobile ? '' : 'rf-border-l rf-border-[#C7C6C6]'} rf-gap-2`}>\r\n <p className='rf-text-xl rf-font-bold rf-uppercase'>{translation.emergency.firefighter}</p>\r\n <p className='rf-text-5xl large:rf-text-6xl rf-font-bold'>18</p>\r\n </div>\r\n <div className={`rf-flex rf-flex-col rf-items-center ${isMobile ? '' : 'rf-border-l rf-border-[#C7C6C6]'} rf-gap-2`}>\r\n <p className='rf-text-xl rf-font-bold rf-uppercase'>{translation.emergency.general}</p>\r\n <p className='rf-text-5xl large:rf-text-6xl rf-font-bold'>112</p>\r\n </div>\r\n </div>\r\n <div className={`rf-flex rf-items-start ${isMobile ? 'rf-flex-col' : 'rf-gap-12'} `}>\r\n <div>\r\n {municipalPoliceNumber?.length && (\r\n <p className='rf-text-xl rf-py-2'>\r\n {`${translation.emergency.citypolice} : `}\r\n <span className='rf-font-bold'>{municipalPoliceNumber}</span>\r\n </p>\r\n )}\r\n <p className='rf-text-xl rf-py-2'>\r\n {`${translation.emergency.homeless} : `}\r\n <span className='rf-font-bold'>115</span>\r\n </p>\r\n <p className='rf-text-xl rf-py-2'>\r\n {`${translation.emergency.emergency} : `}\r\n <span className='rf-font-bold'>118</span>\r\n </p>\r\n </div>\r\n <div>\r\n {localHospitalName?.length && (\r\n <p className='rf-text-xl rf-py-2'>\r\n {`${translation.emergency.hospital} ${localHospitalName} : `}\r\n <span className='rf-font-bold'>{localHospitalNumber}</span>\r\n </p>\r\n )}\r\n {poisonControlNumber?.length && (\r\n <p className='rf-text-xl rf-py-2'>\r\n {`${translation.emergency.poison} : `}\r\n <span className='rf-font-bold'>{poisonControlNumber}</span>\r\n </p>\r\n )}\r\n </div>\r\n </div>\r\n </>\r\n )}\r\n </div>\r\n {!isMobile && <div className='rf-flex-1' />}\r\n </>\r\n )\r\n}\r\n\r\nexport { EmergencyContent }\r\n","import { hospitalityApiAddress } from '../models/constants'\r\nimport { EmergencyTypes } from '../models/emergencyTypes'\r\n\r\nasync function fetchEmergencyData(address: string): Promise<EmergencyTypes> {\r\n const res = await fetch(`${address}${hospitalityApiAddress}`)\r\n .then((emergencyData) => {\r\n return emergencyData.json()\r\n })\r\n .catch(() => {\r\n return null\r\n })\r\n\r\n return res\r\n}\r\n\r\nexport { fetchEmergencyData }\r\n"],"names":[],"version":3,"file":"Emergency.43605d14.js.map"}
@@ -47,12 +47,21 @@ const $e56ded4540f43ec0$var$Emergency = ()=>{
47
47
  dispatch((0, $kpW3P.storeActions).directline.sendEvent({
48
48
  name: 'Davi.CloseWindow',
49
49
  callback: ()=>{
50
- dispatch((0, $kpW3P.storeActions).utils.setCurrentSubView((0, $7WHA7.CurrentSubView).none));
50
+ dispatch((0, $kpW3P.storeActions).utils.setCurrentSubView((0, $kpW3P.CurrentSubView).none));
51
51
  dispatch((0, $kpW3P.storeActions).directline.sendEvent({
52
52
  name: 'Davi.CloseWindowEmergency'
53
53
  }));
54
54
  }
55
55
  }));
56
+ dispatch((0, $kpW3P.storeActions).livekit.sendEvent({
57
+ name: 'Davi.CloseWindow',
58
+ callback: ()=>{
59
+ dispatch((0, $kpW3P.storeActions).utils.setCurrentSubView((0, $kpW3P.CurrentSubView).none));
60
+ dispatch((0, $kpW3P.storeActions).livekit.sendEvent({
61
+ name: 'Davi.CloseWindowEmergency'
62
+ }));
63
+ }
64
+ }));
56
65
  };
57
66
  return /*#__PURE__*/ (0, $i8q1J$reactjsxruntime.jsxs)((0, $eYKUg.default), {
58
67
  target: (0, $7WHA7.TemplateTarget).emergency,
@@ -81,15 +90,15 @@ $parcel$export(module.exports, "EmergencyContent", () => $2b55f3947c65e277$expor
81
90
 
82
91
  var $iSQHl = parcelRequire("iSQHl");
83
92
 
84
- var $6GlMG = parcelRequire("6GlMG");
93
+ var $9JtA7 = parcelRequire("9JtA7");
85
94
 
86
- var $7WHA7 = parcelRequire("7WHA7");
95
+ var $6GlMG = parcelRequire("6GlMG");
87
96
 
88
97
  var $gC77G = parcelRequire("gC77G");
89
98
 
90
99
  var $1XMvi = parcelRequire("1XMvi");
91
- const $2b55f3947c65e277$var$subView = (0, $7WHA7.AvailableViews).emergency;
92
100
  const $2b55f3947c65e277$export$6478e9f7582bd8fc = ()=>{
101
+ const locale = (0, $i8q1J$reactredux.useSelector)((state)=>state.localeReducer.locale);
93
102
  const baseAddress = (0, $i8q1J$reactredux.useSelector)((state)=>state.localeReducer.baseAddress);
94
103
  const translation = (0, $i8q1J$reactredux.useSelector)((state)=>state.localeReducer.currentTranslations);
95
104
  const isMobile = (0, $i8q1J$reactredux.useSelector)((state)=>state.viewReducer.isMobile);
@@ -129,8 +138,8 @@ const $2b55f3947c65e277$export$6478e9f7582bd8fc = ()=>{
129
138
  className: "rf-h-9 rf-w-9 large:rf-h-16 large:rf-w-16"
130
139
  }),
131
140
  /*#__PURE__*/ (0, $i8q1J$reactjsxruntime.jsx)("h3", {
132
- className: "rf-text-verylarge-size-auto rf-font-bold rf-capitalize-first rf-text-center",
133
- children: translation.emergency[$2b55f3947c65e277$var$subView]
141
+ className: "rf-text-verylarge-size-auto rf-font-bold rf-text-center",
142
+ children: (0, $9JtA7.capitalizeFirstLetter)(translation.emergency.shorttitle, locale)
134
143
  })
135
144
  ]
136
145
  }),
@@ -305,4 +314,4 @@ async function $ebb9a848c3dddb50$export$cdd2c9f4b3acf5fb(address) {
305
314
 
306
315
 
307
316
 
308
- //# sourceMappingURL=Emergency.89b4d9ed.js.map
317
+ //# sourceMappingURL=Emergency.f1287bd5.js.map
@@ -0,0 +1 @@
1
+ {"mappings":"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","sources":["src/components/Emergency/Emergency.tsx","src/components/Emergency/EmergencyContent.tsx","src/utils/fetchEmergencyData.ts"],"sourcesContent":["import React from 'react'\r\nimport { useDispatch } from 'react-redux'\r\nimport { storeActions, CurrentSubView } from '../../store'\r\nimport { TemplateTarget } from '../../models/enums'\r\nimport TemplateGlobal from '../Templates/TemplateGlobal'\r\nimport AbsoluteLargeClosingButton from '../Utils/SubView/AbsoluteLargeClosingButton'\r\nimport { EmergencyContent } from './EmergencyContent'\r\n\r\nconst Emergency = (): React.JSX.Element => {\r\n const dispatch = useDispatch()\r\n\r\n const handleBack = (): void => {\r\n dispatch(\r\n storeActions.directline.sendEvent({\r\n name: 'Davi.CloseWindow',\r\n callback: () => {\r\n dispatch(storeActions.utils.setCurrentSubView(CurrentSubView.none))\r\n dispatch(storeActions.directline.sendEvent({ name: 'Davi.CloseWindowEmergency' }))\r\n }\r\n })\r\n )\r\n\r\n dispatch(\r\n storeActions.livekit.sendEvent({\r\n name: 'Davi.CloseWindow',\r\n callback: () => {\r\n dispatch(storeActions.utils.setCurrentSubView(CurrentSubView.none))\r\n dispatch(storeActions.livekit.sendEvent({ name: 'Davi.CloseWindowEmergency' }))\r\n }\r\n })\r\n )\r\n }\r\n\r\n return (\r\n <TemplateGlobal target={TemplateTarget.emergency} onClick={handleBack}>\r\n <div className='rf-h-full rf-w-full rf-flex rf-flex-col rf-items-center rf-justify-center rf-gap-12'>\r\n {/* Emergency data */}\r\n <EmergencyContent />\r\n </div>\r\n\r\n {/* Closing button */}\r\n <AbsoluteLargeClosingButton dashboardVisible={true} onClick={handleBack} />\r\n </TemplateGlobal>\r\n )\r\n}\r\n\r\nexport default Emergency\r\n","import React, { useEffect, useRef, useState } from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { RootState, AvailableViews } from '../../store'\r\nimport { fetchEmergencyData } from '../../utils/fetchEmergencyData'\r\nimport { capitalizeFirstLetter } from '../../utils/capitalizeFirstLetter'\r\nimport { EmergencyTypes } from '../../models/emergencyTypes'\r\nimport * as Icons from '../Icons/ViewIcons'\r\nimport Animation2 from '../Loader/Animation2'\r\nimport preventEvents from '../../utils/preventEvents'\r\n\r\n\r\nconst EmergencyContent = (): React.JSX.Element => {\r\n const locale = useSelector((state: RootState) => state.localeReducer.locale)\r\n const baseAddress = useSelector((state: RootState) => state.localeReducer.baseAddress)\r\n const translation = useSelector((state: RootState) => state.localeReducer.currentTranslations)\r\n const isMobile = useSelector((state: RootState) => state.viewReducer.isMobile)\r\n const isWidget = useSelector((state: RootState) => state.viewReducer.isWidget)\r\n\r\n const [municipalPoliceNumber, setMunicipalPoliceNumber] = useState<string>('')\r\n const [localHospitalName, setLocalHospitalName] = useState<string>('')\r\n const [localHospitalNumber, setLocalHospitalNumber] = useState<string>('')\r\n const [poisonControlNumber, setPoisonControlNumber] = useState<string>('')\r\n const [loading, setLoading] = useState<boolean>(true)\r\n const divRef = useRef<HTMLDivElement>(null)\r\n\r\n useEffect(() => {\r\n if (divRef?.current) {\r\n isWidget && preventEvents(null, divRef)\r\n }\r\n }, [divRef?.current])\r\n\r\n useEffect(() => {\r\n const getData = async (): Promise<void> => {\r\n const data: EmergencyTypes = await fetchEmergencyData(baseAddress)\r\n if (data) {\r\n setMunicipalPoliceNumber(data.municipalPoliceNumber)\r\n setLocalHospitalName(data.localHospitalName)\r\n setLocalHospitalNumber(data.localHospitalNumber)\r\n setPoisonControlNumber(data.poisonControlNumber)\r\n }\r\n setLoading(false)\r\n }\r\n getData()\r\n }, [baseAddress])\r\n\r\n return (\r\n <>\r\n <div className={`rf-flex rf-flex-col rf-items-center ${isMobile ? 'rf-justify-center rf-gap-2' : 'rf-justify-end rf-flex-[2_1_0%] rf-gap-9'}`}>\r\n <Icons.EmergencyIcon className='rf-h-9 rf-w-9 large:rf-h-16 large:rf-w-16' />\r\n <h3 className='rf-text-verylarge-size-auto rf-font-bold rf-text-center'>{capitalizeFirstLetter(translation.emergency.shorttitle, locale)}</h3>\r\n </div>\r\n <div\r\n ref={divRef}\r\n className='rf-w-full rf-flex rf-flex-col rf-items-center rf-flex-[4_1_0%] rf-justify-evenly rf-h-full rf-pt-2 rf-overflow-y-scroll rf-scrollbar-hidden'\r\n style={{\r\n background: isMobile ? 'transparent' : 'transparent linear-gradient(291deg, #F2F3F6 0%, #E5E6EC 100%) 0% 0% no-repeat padding-box',\r\n boxShadow: isMobile ? '' : '#ffff -3px -3px 16px, rgb(0 0 0 / 25%) 0px 2px 10px 0px'\r\n }}\r\n >\r\n {loading ? (\r\n <>\r\n <div className='rf-w-6 rf-h-6 rf-mb-16'>\r\n <Animation2 color='gray' loaderColor='#1999b1' backgroundColor='transparent' />\r\n </div>\r\n </>\r\n ) : (\r\n <>\r\n <div className={`rf-w-full rf-grid ${isMobile ? 'rf-grid-cols-2 rf-gap-8 rf-mt-10 rf-mb-8' : 'rf-grid-cols-4 rf-divide-x'} `} style={{ padding: isMobile ? '' : '0 10%' }}>\r\n <div className='rf-flex rf-flex-col rf-items-center rf-gap-2'>\r\n <p className='rf-text-xl rf-font-bold rf-uppercase'>{translation.emergency.samu}</p>\r\n <p className='rf-text-5xl large:rf-text-6xl rf-font-bold'>15</p>\r\n </div>\r\n <div className={`rf-flex rf-flex-col rf-items-center ${isMobile ? '' : 'rf-border-l rf-border-[#C7C6C6]'} rf-gap-2`}>\r\n <p className='rf-text-xl rf-font-bold rf-uppercase'>{translation.emergency.police}</p>\r\n <p className='rf-text-5xl large:rf-text-6xl rf-font-bold'>17</p>\r\n </div>\r\n <div className={`rf-flex rf-flex-col rf-items-center ${isMobile ? '' : 'rf-border-l rf-border-[#C7C6C6]'} rf-gap-2`}>\r\n <p className='rf-text-xl rf-font-bold rf-uppercase'>{translation.emergency.firefighter}</p>\r\n <p className='rf-text-5xl large:rf-text-6xl rf-font-bold'>18</p>\r\n </div>\r\n <div className={`rf-flex rf-flex-col rf-items-center ${isMobile ? '' : 'rf-border-l rf-border-[#C7C6C6]'} rf-gap-2`}>\r\n <p className='rf-text-xl rf-font-bold rf-uppercase'>{translation.emergency.general}</p>\r\n <p className='rf-text-5xl large:rf-text-6xl rf-font-bold'>112</p>\r\n </div>\r\n </div>\r\n <div className={`rf-flex rf-items-start ${isMobile ? 'rf-flex-col' : 'rf-gap-12'} `}>\r\n <div>\r\n {municipalPoliceNumber?.length && (\r\n <p className='rf-text-xl rf-py-2'>\r\n {`${translation.emergency.citypolice} : `}\r\n <span className='rf-font-bold'>{municipalPoliceNumber}</span>\r\n </p>\r\n )}\r\n <p className='rf-text-xl rf-py-2'>\r\n {`${translation.emergency.homeless} : `}\r\n <span className='rf-font-bold'>115</span>\r\n </p>\r\n <p className='rf-text-xl rf-py-2'>\r\n {`${translation.emergency.emergency} : `}\r\n <span className='rf-font-bold'>118</span>\r\n </p>\r\n </div>\r\n <div>\r\n {localHospitalName?.length && (\r\n <p className='rf-text-xl rf-py-2'>\r\n {`${translation.emergency.hospital} ${localHospitalName} : `}\r\n <span className='rf-font-bold'>{localHospitalNumber}</span>\r\n </p>\r\n )}\r\n {poisonControlNumber?.length && (\r\n <p className='rf-text-xl rf-py-2'>\r\n {`${translation.emergency.poison} : `}\r\n <span className='rf-font-bold'>{poisonControlNumber}</span>\r\n </p>\r\n )}\r\n </div>\r\n </div>\r\n </>\r\n )}\r\n </div>\r\n {!isMobile && <div className='rf-flex-1' />}\r\n </>\r\n )\r\n}\r\n\r\nexport { EmergencyContent }\r\n","import { hospitalityApiAddress } from '../models/constants'\r\nimport { EmergencyTypes } from '../models/emergencyTypes'\r\n\r\nasync function fetchEmergencyData(address: string): Promise<EmergencyTypes> {\r\n const res = await fetch(`${address}${hospitalityApiAddress}`)\r\n .then((emergencyData) => {\r\n return emergencyData.json()\r\n })\r\n .catch(() => {\r\n return null\r\n })\r\n\r\n return res\r\n}\r\n\r\nexport { fetchEmergencyData }\r\n"],"names":[],"version":3,"file":"Emergency.f1287bd5.js.map","sourceRoot":"../"}
@@ -1 +1 @@
1
- {"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,MAAM,wCAAkB;IACtB,MAAM,WAAW,CAAA,GAAA,6BAAU;IAC3B,MAAM,kBAAkB,CAAA,GAAA,cAAiB;IACzC,MAAM,CAAC,SAAS,WAAW,GAAG,CAAA,GAAA,qBAAO;IAErC,CAAA,GAAA,sBAAQ,EAAE;QACR,WAAW;IACb,GAAG;QAAC;KAAgB;IAEpB,MAAM,cAAc;QAClB,SAAS,CAAA,GAAA,mBAAW,EAAE,KAAK,CAAC,kBAAkB,CAAC;IACjD;IAEA,OAAO,wBACL,gCAAC,CAAA,GAAA,cAAa;QAAE,SAAS;QAAa,QAAQ;QAAM,QAAQ,CAAA,GAAA,qBAAa,EAAE,eAAe;kBACxF,cAAA,gCAAC;YAAI,WAAW,CAAC,6FAA6F,CAAC;sBAC7G,cAAA,gCAAC;gBAAI,WAAU;gBAA8B,KAAK;;;uBAItD,gCAAC,CAAA,GAAA,sCAAI,EAAE,QAAQ;AAEnB;IAEA,2CAAe","sources":["src/components/Attachments/Utils/FullScreenImage.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react'\r\nimport { useDispatch } from 'react-redux'\r\nimport { storeActions } from '../../../store'\r\nimport { TemplateTarget } from '../../../models/enums'\r\nimport useFullscreenImage from '../../../hooks/useFullscreenImage'\r\nimport TemplateGlobal from '../../Templates/TemplateGlobal'\r\n\r\nconst FullScreenImage = (): JSX.Element => {\r\n const dispatch = useDispatch()\r\n const fullScreenImage = useFullscreenImage()\r\n const [content, setContent] = useState<string | undefined>()\r\n\r\n useEffect(() => {\r\n setContent(fullScreenImage)\r\n }, [fullScreenImage])\r\n\r\n const handleClose = (): void => {\r\n dispatch(storeActions.utils.setFullScreenImage(undefined))\r\n }\r\n\r\n return content ? (\r\n <TemplateGlobal onClick={handleClose} remote={true} target={TemplateTarget.fullscreenImage}>\r\n <div className={`rf-h-full rf-w-full large:rf-pt-12 rf-px-8 rf-pb-12 rf-flex rf-justify-center rf-items-center`}>\r\n <img className='rf-max-h-full rf-max-w-full' src={content} />\r\n </div>\r\n </TemplateGlobal>\r\n ) : (\r\n <React.Fragment />\r\n )\r\n}\r\n\r\nexport default FullScreenImage\r\n"],"names":[],"version":3,"file":"FullScreenImage.17df27bf.js.map","sourceRoot":"../"}
1
+ {"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,MAAM,wCAAkB;IACtB,MAAM,WAAW,CAAA,GAAA,6BAAU;IAC3B,MAAM,kBAAkB,CAAA,GAAA,cAAiB;IACzC,MAAM,CAAC,SAAS,WAAW,GAAG,CAAA,GAAA,qBAAO;IAErC,CAAA,GAAA,sBAAQ,EAAE;QACR,WAAW;IACb,GAAG;QAAC;KAAgB;IAEpB,MAAM,cAAc;QAClB,SAAS,CAAA,GAAA,mBAAW,EAAE,KAAK,CAAC,kBAAkB,CAAC;IACjD;IAEA,OAAO,wBACL,gCAAC,CAAA,GAAA,cAAa;QAAE,SAAS;QAAa,QAAQ;QAAM,QAAQ,CAAA,GAAA,qBAAa,EAAE,eAAe;kBACxF,cAAA,gCAAC;YAAI,WAAW,CAAC,6FAA6F,CAAC;sBAC7G,cAAA,gCAAC;gBAAI,WAAU;gBAA8B,KAAK;;;uBAItD,gCAAC,CAAA,GAAA,sCAAI,EAAE,QAAQ;AAEnB;IAEA,2CAAe","sources":["src/components/Attachments/Utils/FullScreenImage.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react'\r\nimport { useDispatch } from 'react-redux'\r\nimport { storeActions } from '../../../store'\r\nimport { TemplateTarget } from '../../../models/enums'\r\nimport useFullscreenImage from '../../../hooks/useFullscreenImage'\r\nimport TemplateGlobal from '../../Templates/TemplateGlobal'\r\n\r\nconst FullScreenImage = (): React.JSX.Element => {\r\n const dispatch = useDispatch()\r\n const fullScreenImage = useFullscreenImage()\r\n const [content, setContent] = useState<string | undefined>()\r\n\r\n useEffect(() => {\r\n setContent(fullScreenImage)\r\n }, [fullScreenImage])\r\n\r\n const handleClose = (): void => {\r\n dispatch(storeActions.utils.setFullScreenImage(undefined))\r\n }\r\n\r\n return content ? (\r\n <TemplateGlobal onClick={handleClose} remote={true} target={TemplateTarget.fullscreenImage}>\r\n <div className={`rf-h-full rf-w-full large:rf-pt-12 rf-px-8 rf-pb-12 rf-flex rf-justify-center rf-items-center`}>\r\n <img className='rf-max-h-full rf-max-w-full' src={content} />\r\n </div>\r\n </TemplateGlobal>\r\n ) : (\r\n <React.Fragment />\r\n )\r\n}\r\n\r\nexport default FullScreenImage\r\n"],"names":[],"version":3,"file":"FullScreenImage.17df27bf.js.map","sourceRoot":"../"}
@@ -1 +1 @@
1
- {"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,MAAM,wCAAkB;IACtB,MAAM,WAAW,CAAA,GAAA,kBAAU;IAC3B,MAAM,kBAAkB,CAAA,GAAA,cAAiB;IACzC,MAAM,CAAC,SAAS,WAAW,GAAG,CAAA,GAAA,eAAO;IAErC,CAAA,GAAA,gBAAQ,EAAE;QACR,WAAW;IACb,GAAG;QAAC;KAAgB;IAEpB,MAAM,cAAc;QAClB,SAAS,CAAA,GAAA,mBAAW,EAAE,KAAK,CAAC,kBAAkB,CAAC;IACjD;IAEA,OAAO,wBACL,gBAAC,CAAA,GAAA,cAAa;QAAE,SAAS;QAAa,QAAQ;QAAM,QAAQ,CAAA,GAAA,qBAAa,EAAE,eAAe;kBACxF,cAAA,gBAAC;YAAI,WAAW,CAAC,6FAA6F,CAAC;sBAC7G,cAAA,gBAAC;gBAAI,WAAU;gBAA8B,KAAK;;;uBAItD,gBAAC,CAAA,GAAA,YAAI,EAAE,QAAQ;AAEnB;IAEA,2CAAe","sources":["src/components/Attachments/Utils/FullScreenImage.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react'\r\nimport { useDispatch } from 'react-redux'\r\nimport { storeActions } from '../../../store'\r\nimport { TemplateTarget } from '../../../models/enums'\r\nimport useFullscreenImage from '../../../hooks/useFullscreenImage'\r\nimport TemplateGlobal from '../../Templates/TemplateGlobal'\r\n\r\nconst FullScreenImage = (): JSX.Element => {\r\n const dispatch = useDispatch()\r\n const fullScreenImage = useFullscreenImage()\r\n const [content, setContent] = useState<string | undefined>()\r\n\r\n useEffect(() => {\r\n setContent(fullScreenImage)\r\n }, [fullScreenImage])\r\n\r\n const handleClose = (): void => {\r\n dispatch(storeActions.utils.setFullScreenImage(undefined))\r\n }\r\n\r\n return content ? (\r\n <TemplateGlobal onClick={handleClose} remote={true} target={TemplateTarget.fullscreenImage}>\r\n <div className={`rf-h-full rf-w-full large:rf-pt-12 rf-px-8 rf-pb-12 rf-flex rf-justify-center rf-items-center`}>\r\n <img className='rf-max-h-full rf-max-w-full' src={content} />\r\n </div>\r\n </TemplateGlobal>\r\n ) : (\r\n <React.Fragment />\r\n )\r\n}\r\n\r\nexport default FullScreenImage\r\n"],"names":[],"version":3,"file":"FullScreenImage.99e19e10.js.map"}
1
+ {"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,MAAM,wCAAkB;IACtB,MAAM,WAAW,CAAA,GAAA,kBAAU;IAC3B,MAAM,kBAAkB,CAAA,GAAA,cAAiB;IACzC,MAAM,CAAC,SAAS,WAAW,GAAG,CAAA,GAAA,eAAO;IAErC,CAAA,GAAA,gBAAQ,EAAE;QACR,WAAW;IACb,GAAG;QAAC;KAAgB;IAEpB,MAAM,cAAc;QAClB,SAAS,CAAA,GAAA,mBAAW,EAAE,KAAK,CAAC,kBAAkB,CAAC;IACjD;IAEA,OAAO,wBACL,gBAAC,CAAA,GAAA,cAAa;QAAE,SAAS;QAAa,QAAQ;QAAM,QAAQ,CAAA,GAAA,qBAAa,EAAE,eAAe;kBACxF,cAAA,gBAAC;YAAI,WAAW,CAAC,6FAA6F,CAAC;sBAC7G,cAAA,gBAAC;gBAAI,WAAU;gBAA8B,KAAK;;;uBAItD,gBAAC,CAAA,GAAA,YAAI,EAAE,QAAQ;AAEnB;IAEA,2CAAe","sources":["src/components/Attachments/Utils/FullScreenImage.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react'\r\nimport { useDispatch } from 'react-redux'\r\nimport { storeActions } from '../../../store'\r\nimport { TemplateTarget } from '../../../models/enums'\r\nimport useFullscreenImage from '../../../hooks/useFullscreenImage'\r\nimport TemplateGlobal from '../../Templates/TemplateGlobal'\r\n\r\nconst FullScreenImage = (): React.JSX.Element => {\r\n const dispatch = useDispatch()\r\n const fullScreenImage = useFullscreenImage()\r\n const [content, setContent] = useState<string | undefined>()\r\n\r\n useEffect(() => {\r\n setContent(fullScreenImage)\r\n }, [fullScreenImage])\r\n\r\n const handleClose = (): void => {\r\n dispatch(storeActions.utils.setFullScreenImage(undefined))\r\n }\r\n\r\n return content ? (\r\n <TemplateGlobal onClick={handleClose} remote={true} target={TemplateTarget.fullscreenImage}>\r\n <div className={`rf-h-full rf-w-full large:rf-pt-12 rf-px-8 rf-pb-12 rf-flex rf-justify-center rf-items-center`}>\r\n <img className='rf-max-h-full rf-max-w-full' src={content} />\r\n </div>\r\n </TemplateGlobal>\r\n ) : (\r\n <React.Fragment />\r\n )\r\n}\r\n\r\nexport default FullScreenImage\r\n"],"names":[],"version":3,"file":"FullScreenImage.99e19e10.js.map"}
@@ -75,13 +75,19 @@ const $4c0e94df62fa6718$var$HistoryList = ()=>{
75
75
  divRef === null || divRef === void 0 ? void 0 : divRef.current
76
76
  ]);
77
77
  const handleClose = ()=>{
78
- dispatch((0, $kpW3P.storeActions).utils.setCurrentSubView((0, $7WHA7.CurrentSubView).none));
78
+ dispatch((0, $kpW3P.storeActions).utils.setCurrentSubView((0, $kpW3P.CurrentSubView).none));
79
79
  dispatch((0, $kpW3P.storeActions).directline.sendEvent({
80
80
  name: 'Davi.CloseWindow',
81
81
  callback: ()=>dispatch((0, $kpW3P.storeActions).directline.sendEvent({
82
82
  name: 'Davi.CloseWindowHistory'
83
83
  }))
84
84
  }));
85
+ dispatch((0, $kpW3P.storeActions).livekit.sendEvent({
86
+ name: 'Davi.CloseWindow',
87
+ callback: ()=>dispatch((0, $kpW3P.storeActions).livekit.sendEvent({
88
+ name: 'Davi.CloseWindowHistory'
89
+ }))
90
+ }));
85
91
  };
86
92
  return /*#__PURE__*/ (0, $3sjcq$reactjsxruntime.jsx)((0, $eYKUg.default), {
87
93
  onClick: handleClose,
@@ -234,4 +240,4 @@ var $db601f65e25709db$export$2e2bcd8739ae039 = $db601f65e25709db$var$HistoryQA;
234
240
 
235
241
 
236
242
 
237
- //# sourceMappingURL=HistoryList.3b4b1ffb.js.map
243
+ //# sourceMappingURL=HistoryList.c19556a7.js.map