@davi-ai/retorik-framework 4.0.3 → 4.0.4

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 (29) hide show
  1. package/dist/{Emergency.1e63c85f.js → Emergency.1112c09f.js} +6 -6
  2. package/dist/Emergency.1112c09f.js.map +1 -0
  3. package/dist/{Emergency.89b4d9ed.js → Emergency.d5810ff2.js} +6 -6
  4. package/dist/Emergency.d5810ff2.js.map +1 -0
  5. package/dist/{NewsContainer.c3331d80.js → NewsContainer.463e74de.js} +2 -2
  6. package/dist/{NewsContainer.c3331d80.js.map → NewsContainer.463e74de.js.map} +1 -1
  7. package/dist/{NewsContainer.c0a24775.js → NewsContainer.d9de093c.js} +2 -2
  8. package/dist/{NewsContainer.c0a24775.js.map → NewsContainer.d9de093c.js.map} +1 -1
  9. package/dist/{VeilleManager.26dcadac.js → VeilleManager.85967e7c.js} +8 -5
  10. package/dist/VeilleManager.85967e7c.js.map +1 -0
  11. package/dist/{VeilleManager.72cf0e9c.js → VeilleManager.f3bafdec.js} +8 -5
  12. package/dist/VeilleManager.f3bafdec.js.map +1 -0
  13. package/dist/{Weather.bb414852.js → Weather.7e945307.js} +17 -75
  14. package/dist/Weather.7e945307.js.map +1 -0
  15. package/dist/{Weather.ced9b467.js → Weather.e81b7205.js} +17 -75
  16. package/dist/Weather.e81b7205.js.map +1 -0
  17. package/dist/index.d.ts +23 -0
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +6359 -5306
  20. package/dist/index.js.map +1 -1
  21. package/dist/index.modern.js +6355 -5306
  22. package/dist/index.modern.js.map +1 -1
  23. package/package.json +1 -1
  24. package/dist/Emergency.1e63c85f.js.map +0 -1
  25. package/dist/Emergency.89b4d9ed.js.map +0 -1
  26. package/dist/VeilleManager.26dcadac.js.map +0 -1
  27. package/dist/VeilleManager.72cf0e9c.js.map +0 -1
  28. package/dist/Weather.bb414852.js.map +0 -1
  29. package/dist/Weather.ced9b467.js.map +0 -1
@@ -195,9 +195,10 @@ var $58ljk = parcelRequire("58ljk");
195
195
  var $69ngO = parcelRequire("69ngO");
196
196
  const $42bad5eabafac04e$var$CallToAction = ()=>{
197
197
  const themeColors = (0, $ehKZo$reactredux.useSelector)((state)=>state.viewReducer.themeColors);
198
+ const translation = (0, $ehKZo$reactredux.useSelector)((state)=>state.localeReducer.currentTranslations);
198
199
  const [colorWithTransparency] = (0, $ehKZo$react.useState)((0, $58ljk.getColorWithTransparency)(themeColors.primary, 0.5));
199
200
  return /*#__PURE__*/ (0, $ehKZo$reactjsxruntime.jsxs)("div", {
200
- className: "rf-absolute rf-z-ui rf-bottom-0 rf-right-0 rf-w-80 rf-h-80 rf-grid rf-grid-cols-1 rf-grid-rows-1 rf-justify-end rf-justify-items-end rf-content-end rf-items-end rf-text-center rf-overflow-hidden rf-z-10",
201
+ className: "rf-absolute rf-z-ui rf-bottom-0 rf-right-0 rf-w-64 rf-h-80 rf-grid rf-grid-cols-1 rf-grid-rows-1 rf-justify-end rf-justify-items-end rf-content-end rf-items-end rf-text-center rf-overflow-hidden rf-z-10",
201
202
  children: [
202
203
  /*#__PURE__*/ (0, $ehKZo$reactjsxruntime.jsx)("div", {
203
204
  className: "rf-relative rf-col-start-1 rf-col-end-2 rf-row-start-1 rf-row-end-2 rf-w-48 rf-h-36 rf-rotate-45 rf-translate-y-8",
@@ -210,8 +211,8 @@ const $42bad5eabafac04e$var$CallToAction = ()=>{
210
211
  children: [
211
212
  /*#__PURE__*/ (0, $ehKZo$reactjsxruntime.jsx)((0, $69ngO.default), {}),
212
213
  /*#__PURE__*/ (0, $ehKZo$reactjsxruntime.jsx)("p", {
213
- className: "rf-mx-4",
214
- children: "Click on screen to start"
214
+ className: "rf-ml-16 rf-mr-4",
215
+ children: translation.veille.calltoaction
215
216
  })
216
217
  ]
217
218
  })
@@ -345,12 +346,14 @@ parcelRegister("8KeRZ", function(module, exports) {
345
346
  $parcel$export(module.exports, "default", () => $dadec6c8a2c8bf97$export$2e2bcd8739ae039);
346
347
 
347
348
 
349
+
348
350
  const $dadec6c8a2c8bf97$var$EmptyVeille = ()=>{
351
+ const translation = (0, $ehKZo$reactredux.useSelector)((state)=>state.localeReducer.currentTranslations);
349
352
  return /*#__PURE__*/ (0, $ehKZo$reactjsxruntime.jsx)("div", {
350
353
  className: "rf-col-start-1 rf-col-span-full rf-row-start-1 rf-row-span-full rf-bg-black rf-flex rf-justify-center rf-items-center",
351
354
  children: /*#__PURE__*/ (0, $ehKZo$reactjsxruntime.jsx)("div", {
352
355
  className: "rf-uppercase rf-font-bold rf-text-3xl rf-text-white rf-animate-pulse",
353
- children: "click or tap on the screen..."
356
+ children: translation.veille.emptyveille
354
357
  })
355
358
  });
356
359
  };
@@ -506,4 +509,4 @@ var $a2463c3887d0d0a1$export$2e2bcd8739ae039 = $a2463c3887d0d0a1$var$SlideShow;
506
509
 
507
510
 
508
511
 
509
- //# sourceMappingURL=VeilleManager.26dcadac.js.map
512
+ //# sourceMappingURL=VeilleManager.85967e7c.js.map
@@ -0,0 +1 @@
1
+ {"mappings":"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","sources":["src/components/Veille/VeilleManager.tsx","src/components/Veille/CallToAction.tsx","src/components/Icons/Miscellaneous/TouchIcon.tsx","src/components/Veille/FaceDetector.tsx","src/components/Veille/EmptyVeille.tsx","src/components/Veille/ScreenSaver.tsx","src/components/Veille/SlideShow.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react'\r\nimport { useSpring, animated } from '@react-spring/web'\r\nimport { useSelector, useDispatch } from 'react-redux'\r\nimport { RootState, storeActions } from '../../store'\r\n\r\nimport { Routes } from '../../models/enums'\r\nimport type { VeilleConfiguration } from '../../models/types'\r\n\r\nimport NewsView from '../Views/NewsView'\r\nimport CallToAction from './CallToAction'\r\nimport FaceDetector from './FaceDetector'\r\nimport EmptyVeille from './EmptyVeille'\r\nimport ScreenSaver from './ScreenSaver'\r\nimport SlideShow from './SlideShow'\r\n\r\nconst springDuration = 500\r\n\r\ninterface VeilleManagerProps {\r\n onClose: () => void\r\n}\r\n\r\nconst VeilleManager = ({ onClose }: VeilleManagerProps) => {\r\n const dispatch = useDispatch()\r\n const route = useSelector((state: RootState) => state.viewReducer.route)\r\n const veilleConfiguration = useSelector((state: RootState) => state.viewReducer.veilleConfiguration)\r\n const muted = useSelector((state: RootState) => state.speechReducer.muted)\r\n\r\n const [loop, setLoop] = useState<boolean>(false)\r\n\r\n const veilleDataRef = useRef<VeilleConfiguration>(veilleConfiguration)\r\n const availableItemsToDisplayRef = useRef<Array<Routes>>([])\r\n const currentItemDisplayedRef = useRef<number>(0)\r\n const fadeTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\r\n const oldMutedRef = useRef<boolean>(muted)\r\n\r\n const [spring, api] = useSpring(() => ({\r\n from: { opacity: 0 }\r\n }))\r\n\r\n useEffect(() => {\r\n api.start({\r\n from: { opacity: 0 },\r\n to: { opacity: 1 },\r\n config: { duration: springDuration }\r\n })\r\n }, [])\r\n\r\n const handleClose = (): void => {\r\n api.start({\r\n from: { opacity: 1 },\r\n to: { opacity: 0 },\r\n config: { duration: springDuration }\r\n })\r\n\r\n fadeTimerRef?.current && clearTimeout(fadeTimerRef.current)\r\n fadeTimerRef.current = setTimeout(() => {\r\n // Switch back the muted state (it could have not been changed but for security let's set it)\r\n dispatch(storeActions.speech.setMuted(oldMutedRef.current))\r\n // Get back to home view\r\n dispatch(storeActions.view.setRoute(Routes.Home))\r\n onClose()\r\n }, springDuration)\r\n }\r\n\r\n const switchComponent = (): void => {\r\n if (availableItemsToDisplayRef.current.length > currentItemDisplayedRef.current + 1) {\r\n currentItemDisplayedRef.current++\r\n dispatch(storeActions.view.setRoute(availableItemsToDisplayRef.current[currentItemDisplayedRef.current]))\r\n } else {\r\n currentItemDisplayedRef.current = 0\r\n dispatch(storeActions.view.setRoute(availableItemsToDisplayRef.current[0]))\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n veilleDataRef.current = veilleConfiguration\r\n const tempViewArray: Array<Routes> = []\r\n veilleConfiguration.views?.screenSaver?.enabled && tempViewArray.push(Routes.ScreenSaver)\r\n veilleConfiguration.views?.news?.enabled && tempViewArray.push(Routes.NewsInVeille)\r\n veilleConfiguration.views?.slideShow?.enabled && tempViewArray.push(Routes.SlideShow)\r\n // Set loop if there is only 1 item to display\r\n setLoop(tempViewArray.length === 1)\r\n availableItemsToDisplayRef.current = tempViewArray\r\n currentItemDisplayedRef.current = 0\r\n // Mute the sound if the news in veille has to be muted\r\n veilleDataRef.current.views?.news?.muted && dispatch(storeActions.speech.setMuted(true))\r\n dispatch(storeActions.view.setRoute(availableItemsToDisplayRef.current.length ? availableItemsToDisplayRef.current[0] : Routes.EmptyVeille))\r\n\r\n return () => {\r\n fadeTimerRef?.current && clearTimeout(fadeTimerRef.current)\r\n // Switch back the muted state (it could have not been changed but for security let's set it)\r\n dispatch(storeActions.speech.setMuted(oldMutedRef.current))\r\n }\r\n }, [])\r\n\r\n return (\r\n <React.Fragment>\r\n <animated.div\r\n id='retorik-framework-veille-manager'\r\n className='rf-relative rf-col-start-1 rf-col-span-full rf-row-start-1 rf-row-span-full rf-grid rf-grid-cols-8 rf-grid-rows-12'\r\n style={{\r\n ...spring\r\n }}\r\n >\r\n <CallToAction />\r\n {veilleConfiguration.autoExitFromWebcam && <FaceDetector detectionThreshold={0.95} onFaceDetected={() => handleClose()} />}\r\n\r\n {route === Routes.EmptyVeille && <EmptyVeille />}\r\n {route === Routes.NewsInVeille && <NewsView hideMenu={true} isRetorikNews={true} handleEndedWithoutloop={switchComponent} loop={loop} fromVeille={true} />}\r\n {route === Routes.ScreenSaver && (\r\n <ScreenSaver\r\n url={veilleConfiguration.views?.screenSaver?.url}\r\n timer={veilleConfiguration.views?.screenSaver?.timerBeforeSwitchInSeconds}\r\n loop={loop}\r\n springDuration={springDuration}\r\n switchComponent={switchComponent}\r\n />\r\n )}\r\n {route === Routes.SlideShow && (\r\n <SlideShow\r\n urls={veilleConfiguration.views?.slideShow?.urls}\r\n timer={veilleConfiguration.views?.slideShow?.timerBeforeSwitchInSeconds}\r\n loop={loop}\r\n springDuration={springDuration}\r\n switchComponent={switchComponent}\r\n />\r\n )}\r\n </animated.div>\r\n\r\n {/* Overlay to exit the veille */}\r\n <div className='rf-z-overlay rf-col-start-1 rf-col-span-full rf-row-start-1 rf-row-span-full rf-bg-transparent rf-cursor-pointer' onClick={() => handleClose()} />\r\n </React.Fragment>\r\n )\r\n}\r\n\r\nexport default VeilleManager\r\n","import React, { useState } from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { RootState } from '../../store'\r\nimport { getColorWithTransparency } from '../../utils/colorUtils'\r\nimport TouchIcon from '../Icons/Miscellaneous/TouchIcon'\r\n\r\nconst CallToAction = (): JSX.Element => {\r\n const themeColors = useSelector((state: RootState) => state.viewReducer.themeColors)\r\n const translation = useSelector((state: RootState) => state.localeReducer.currentTranslations)\r\n const [colorWithTransparency] = useState<string>(getColorWithTransparency(themeColors.primary, 0.5))\r\n\r\n return (\r\n <div className='rf-absolute rf-z-ui rf-bottom-0 rf-right-0 rf-w-64 rf-h-80 rf-grid rf-grid-cols-1 rf-grid-rows-1 rf-justify-end rf-justify-items-end rf-content-end rf-items-end rf-text-center rf-overflow-hidden rf-z-10'>\r\n <div className='rf-relative rf-col-start-1 rf-col-end-2 rf-row-start-1 rf-row-end-2 rf-w-48 rf-h-36 rf-rotate-45 rf-translate-y-8' style={{ backgroundColor: colorWithTransparency }}></div>\r\n <div className='rf-relative rf-col-start-1 rf-col-end-2 rf-row-start-1 rf-row-end-2 rf-w-50 rf-h-32 rf-flex rf-flex-col rf-gap-2 rf-justify-center rf-items-center rf-text-white'>\r\n <TouchIcon />\r\n <p className='rf-ml-16 rf-mr-4'>{translation.veille.calltoaction}</p>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default CallToAction\r\n","import React from \"react\";\r\nimport type { IconDefaultProps } from '../../../models/types'\r\n\r\nconst TouchIcon = ({ className, color }: IconDefaultProps) => {\r\n return (\r\n <svg\r\n viewBox=\"0 0 48 67\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n stroke={color || 'currentColor'}\r\n fill={color || 'currentColor'}\r\n className={className || 'rf-h-12 rf-w-12'}\r\n >\r\n <path\r\n d=\"m41 24c-1.7 0-3.2 0.65-4.4 1.7-1.2-1.1-2.7-1.7-4.4-1.7-1.7 0-3.2 0.65-4.4 1.7-0.48-0.44-1-0.8-1.6-1.1 2.1-2.6 3.4-6 3.4-9.5 2.8e-4 -8.3-6.7-15-15-15-8.3 0-15 6.7-15 15 0 5.8 3.3 11 8.4 13v18c0 11 8.9 20 20 20 11 0 20-8.9 20-20v-16c0-3.6-2.9-6.6-6.6-6.6zm-37-8.8c0-5.9 4.8-11 11-11 5.9 0 11 4.8 11 11 0 3.4-1.6 6.5-4.1 8.5v-8.5c0-3.6-2.9-6.6-6.6-6.6-3.6 0-6.6 2.9-6.6 6.6v8.5c-2.6-2-4.1-5.1-4.1-8.5zm39 32c0 8.5-6.9 15-15 15-8.5 0-15-6.9-15-15v-20c4e-3 -0.072 4e-3 -0.14 0-0.22v-12c0-1.2 1-2.3 2.3-2.3 1.2 0 2.3 1 2.3 2.3v20c0 1.2 0.96 2.1 2.1 2.1 1.2 0 2.1-0.96 2.1-2.1v-4.7c0-1.2 1-2.3 2.3-2.3s2.3 1 2.3 2.3v4.7c0 1.2 0.96 2.1 2.1 2.1 1.2 0 2.1-0.96 2.1-2.1v-4.7c0-1.2 1-2.3 2.3-2.3 1.2 0 2.3 1 2.3 2.3v4.7c0 1.2 0.96 2.1 2.1 2.1s2.1-0.96 2.1-2.1v-4.7c0-1.2 1-2.3 2.3-2.3 1.2 0 2.3 1 2.3 2.3v16z\"\r\n strokeWidth=\".29\"\r\n />\r\n </svg>\r\n );\r\n};\r\n\r\nexport default TouchIcon;\r\n","import React, { useEffect, useState, useRef } from 'react'\r\nimport { FaceDetector as MediapipeFaceDetector, FilesetResolver, Detection } from '@mediapipe/tasks-vision'\r\n\r\ninterface FaceDetectorProps {\r\n detectionThreshold: number\r\n onFaceDetected: (detections?: Array<Detection>, imageWidth?: number, imageHeight?: number) => void\r\n showThumbnail?: boolean\r\n rotation?: number\r\n}\r\n\r\nconst runningMode = 'VIDEO'\r\nlet lastVideoTime = -1\r\nconst defaultConstraints: MediaStreamConstraints = {\r\n video: {\r\n facingMode: 'user'\r\n }\r\n}\r\n\r\nconst FaceDetector = ({ detectionThreshold, onFaceDetected, showThumbnail, rotation }: FaceDetectorProps): JSX.Element => {\r\n const [webcamWidth, setWebcamWidth] = useState<number>(0)\r\n const [webcamHeight, setWebcamHeight] = useState<number>(0)\r\n const [faceDetector, setFaceDetector] = useState<MediapipeFaceDetector | undefined>()\r\n const videoRef = useRef<HTMLVideoElement>(null)\r\n const rotationRef = useRef<number>(rotation || 0)\r\n\r\n useEffect(() => {\r\n rotationRef.current = rotation || 0\r\n }, [rotation])\r\n\r\n useEffect(() => {\r\n const createfaceDetector = async () => {\r\n const vision = await FilesetResolver.forVisionTasks('https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision@0.10.0/wasm')\r\n const newFaceDetector = await MediapipeFaceDetector.createFromOptions(vision, {\r\n baseOptions: {\r\n modelAssetPath: `https://storage.googleapis.com/mediapipe-models/face_detector/blaze_face_short_range/float16/1/blaze_face_short_range.tflite`,\r\n delegate: 'GPU'\r\n },\r\n runningMode: runningMode\r\n })\r\n\r\n newFaceDetector && setFaceDetector(newFaceDetector)\r\n }\r\n\r\n const initializefaceDetector = async () => {\r\n navigator.mediaDevices\r\n .getUserMedia(defaultConstraints)\r\n .then((display) => {\r\n const settings = display.getVideoTracks()[0].getSettings()\r\n setWebcamWidth(settings.width || 0)\r\n setWebcamHeight(settings.height || 0)\r\n createfaceDetector()\r\n })\r\n .catch((error) => console.warn('Retorik Framework > an error occured when trying to use the webcam : ', error))\r\n }\r\n\r\n initializefaceDetector()\r\n }, [])\r\n\r\n const predictWebcam = async () => {\r\n if (faceDetector && videoRef.current) {\r\n let startTimeMs = performance.now()\r\n\r\n // Detect faces using detectForVideo\r\n if (videoRef.current.currentTime !== lastVideoTime) {\r\n lastVideoTime = videoRef.current.currentTime\r\n const detections = faceDetector.detectForVideo(videoRef.current, startTimeMs, { rotationDegrees: rotationRef.current }).detections\r\n\r\n if (detections.length) {\r\n const score = detections[0].categories[0].score\r\n score > detectionThreshold && onFaceDetected(detections, videoRef.current.videoWidth, videoRef.current.videoHeight)\r\n }\r\n }\r\n }\r\n\r\n // Call this function again to keep predicting when the browser is ready\r\n window.requestAnimationFrame(predictWebcam)\r\n }\r\n\r\n useEffect(() => {\r\n if (faceDetector && videoRef.current) {\r\n // Activate the webcam stream\r\n navigator.mediaDevices\r\n .getUserMedia(defaultConstraints)\r\n .then((stream) => {\r\n if (videoRef.current) {\r\n videoRef.current.srcObject = stream\r\n videoRef.current.addEventListener('loadeddata', predictWebcam)\r\n }\r\n })\r\n .catch((err) => {\r\n console.error(err)\r\n })\r\n }\r\n }, [faceDetector])\r\n\r\n return (\r\n <div id='retorik-framework-face-detector' className={`rf-absolute rf-top-0 rf-left-0 ${!showThumbnail && 'rf-invisible'}`}>\r\n <video\r\n ref={videoRef}\r\n src=''\r\n autoPlay\r\n style={{\r\n rotate: `${rotation}deg`,\r\n width: showThumbnail ? webcamWidth / 2 : webcamWidth,\r\n height: showThumbnail ? webcamHeight / 2 : webcamHeight\r\n }}\r\n />\r\n </div>\r\n )\r\n}\r\n\r\nexport default FaceDetector\r\n","import React from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { RootState } from '../../store'\r\n\r\nconst EmptyVeille = () => {\r\n const translation = useSelector((state: RootState) => state.localeReducer.currentTranslations)\r\n\r\n return (\r\n <div className='rf-col-start-1 rf-col-span-full rf-row-start-1 rf-row-span-full rf-bg-black rf-flex rf-justify-center rf-items-center'>\r\n <div className='rf-uppercase rf-font-bold rf-text-3xl rf-text-white rf-animate-pulse'>{translation.veille.emptyveille}</div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default EmptyVeille\r\n","import React, { useEffect, useRef } from 'react'\r\nimport { useSpring, animated } from '@react-spring/web'\r\n\r\ninterface ScreenSaverProps {\r\n url?: string\r\n timer?: number\r\n loop?: boolean\r\n springDuration: number\r\n switchComponent: () => void\r\n}\r\n\r\nconst ScreenSaver = ({ url, timer, loop, springDuration, switchComponent }: ScreenSaverProps) => {\r\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\r\n const fadeTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\r\n\r\n const [spring, api] = useSpring(() => ({\r\n from: {\r\n opacity: 0\r\n }\r\n }))\r\n\r\n useEffect(() => {\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\r\n const handleClose = (): 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 fadeTimerRef?.current && clearTimeout(fadeTimerRef.current)\r\n fadeTimerRef.current = setTimeout(() => {\r\n // Get back to home view\r\n switchComponent()\r\n }, springDuration)\r\n }\r\n\r\n useEffect(() => {\r\n if (!loop) {\r\n timerRef.current = setTimeout(() => {\r\n handleClose()\r\n }, (timer || 8) * 1000 - springDuration)\r\n }\r\n\r\n return () => {\r\n timerRef.current && clearTimeout(timerRef.current)\r\n fadeTimerRef.current && clearTimeout(fadeTimerRef.current)\r\n }\r\n }, [])\r\n\r\n return (\r\n <animated.div\r\n className='rf-col-start-1 rf-col-span-full rf-row-start-1 rf-row-span-full'\r\n style={{\r\n backgroundImage: `url(${url})`,\r\n backgroundPosition: 'center',\r\n backgroundRepeat: 'no-repeat',\r\n backgroundSize: 'cover',\r\n ...spring\r\n }}\r\n />\r\n )\r\n}\r\n\r\nexport default ScreenSaver\r\n","import React, { useEffect, useState, useRef } from 'react'\r\nimport { useSpring, animated } from '@react-spring/web'\r\n\r\ninterface SlideShowProps {\r\n urls?: Array<string>\r\n timer?: number\r\n loop?: boolean\r\n springDuration: number\r\n switchComponent: () => void\r\n}\r\n\r\nconst SlideShow = ({ urls, timer, loop, springDuration, switchComponent }: SlideShowProps) => {\r\n const [currentIndex, setCurrentIndex] = useState<number>(0)\r\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\r\n const fadeTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\r\n\r\n const [spring, api] = useSpring(() => ({\r\n from: {\r\n opacity: 0\r\n }\r\n }))\r\n\r\n useEffect(() => {\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\r\n const handleClose = (): 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 fadeTimerRef?.current && clearTimeout(fadeTimerRef.current)\r\n fadeTimerRef.current = setTimeout(() => {\r\n // Get back to home view\r\n switchComponent()\r\n }, springDuration)\r\n }\r\n\r\n useEffect(() => {\r\n timerRef?.current && clearTimeout(timerRef.current)\r\n if (urls?.length) {\r\n timerRef.current = setTimeout(() => {\r\n currentIndex === urls.length - 1 ? (loop ? setCurrentIndex(0) : handleClose()) : setCurrentIndex(currentIndex + 1)\r\n }, (timer || 5) * 1000)\r\n } else {\r\n switchComponent()\r\n }\r\n }, [currentIndex])\r\n\r\n useEffect(() => {\r\n return () => {\r\n timerRef?.current && clearTimeout(timerRef.current)\r\n fadeTimerRef?.current && clearTimeout(fadeTimerRef.current)\r\n }\r\n }, [])\r\n\r\n return (\r\n <animated.div className='rf-col-start-1 rf-col-span-full rf-row-start-1 rf-row-span-full rf-flex rf-justify-center rf-items-center rf-bg-black' style={{ ...spring }}>\r\n <img className={`${window.innerHeight > window.innerWidth ? 'rf-w-full' : 'rf-h-full'}`} src={urls?.[currentIndex] || ''} alt='slideshow' />\r\n </animated.div>\r\n )\r\n}\r\n\r\nexport default SlideShow\r\n"],"names":[],"version":3,"file":"VeilleManager.85967e7c.js.map","sourceRoot":"../"}
@@ -180,9 +180,10 @@ var $i1OHx = parcelRequire("i1OHx");
180
180
  var $9hDpx = parcelRequire("9hDpx");
181
181
  const $8d9fce4b03a5e10a$var$CallToAction = ()=>{
182
182
  const themeColors = (0, $1cDKu$useSelector)((state)=>state.viewReducer.themeColors);
183
+ const translation = (0, $1cDKu$useSelector)((state)=>state.localeReducer.currentTranslations);
183
184
  const [colorWithTransparency] = (0, $1cDKu$useState)((0, $i1OHx.getColorWithTransparency)(themeColors.primary, 0.5));
184
185
  return /*#__PURE__*/ (0, $1cDKu$jsxs)("div", {
185
- className: "rf-absolute rf-z-ui rf-bottom-0 rf-right-0 rf-w-80 rf-h-80 rf-grid rf-grid-cols-1 rf-grid-rows-1 rf-justify-end rf-justify-items-end rf-content-end rf-items-end rf-text-center rf-overflow-hidden rf-z-10",
186
+ className: "rf-absolute rf-z-ui rf-bottom-0 rf-right-0 rf-w-64 rf-h-80 rf-grid rf-grid-cols-1 rf-grid-rows-1 rf-justify-end rf-justify-items-end rf-content-end rf-items-end rf-text-center rf-overflow-hidden rf-z-10",
186
187
  children: [
187
188
  /*#__PURE__*/ (0, $1cDKu$jsx)("div", {
188
189
  className: "rf-relative rf-col-start-1 rf-col-end-2 rf-row-start-1 rf-row-end-2 rf-w-48 rf-h-36 rf-rotate-45 rf-translate-y-8",
@@ -195,8 +196,8 @@ const $8d9fce4b03a5e10a$var$CallToAction = ()=>{
195
196
  children: [
196
197
  /*#__PURE__*/ (0, $1cDKu$jsx)((0, $9hDpx.default), {}),
197
198
  /*#__PURE__*/ (0, $1cDKu$jsx)("p", {
198
- className: "rf-mx-4",
199
- children: "Click on screen to start"
199
+ className: "rf-ml-16 rf-mr-4",
200
+ children: translation.veille.calltoaction
200
201
  })
201
202
  ]
202
203
  })
@@ -330,12 +331,14 @@ parcelRegister("9fA0k", function(module, exports) {
330
331
  $parcel$export(module.exports, "default", () => $bdd3afba8bcb9c3a$export$2e2bcd8739ae039);
331
332
 
332
333
 
334
+
333
335
  const $bdd3afba8bcb9c3a$var$EmptyVeille = ()=>{
336
+ const translation = (0, $1cDKu$useSelector)((state)=>state.localeReducer.currentTranslations);
334
337
  return /*#__PURE__*/ (0, $1cDKu$jsx)("div", {
335
338
  className: "rf-col-start-1 rf-col-span-full rf-row-start-1 rf-row-span-full rf-bg-black rf-flex rf-justify-center rf-items-center",
336
339
  children: /*#__PURE__*/ (0, $1cDKu$jsx)("div", {
337
340
  className: "rf-uppercase rf-font-bold rf-text-3xl rf-text-white rf-animate-pulse",
338
- children: "click or tap on the screen..."
341
+ children: translation.veille.emptyveille
339
342
  })
340
343
  });
341
344
  };
@@ -491,4 +494,4 @@ var $8ccf4a1e66e2b9e3$export$2e2bcd8739ae039 = $8ccf4a1e66e2b9e3$var$SlideShow;
491
494
 
492
495
 
493
496
 
494
- //# sourceMappingURL=VeilleManager.72cf0e9c.js.map
497
+ //# sourceMappingURL=VeilleManager.f3bafdec.js.map
@@ -0,0 +1 @@
1
+ {"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,MAAM,uCAAiB;AAMvB,MAAM,sCAAgB,CAAC,WAAE,OAAO,EAAsB;IACpD,MAAM,WAAW,CAAA,GAAA,kBAAU;IAC3B,MAAM,QAAQ,CAAA,GAAA,kBAAU,EAAE,CAAC,QAAqB,MAAM,WAAW,CAAC,KAAK;IACvE,MAAM,sBAAsB,CAAA,GAAA,kBAAU,EAAE,CAAC,QAAqB,MAAM,WAAW,CAAC,mBAAmB;IACnG,MAAM,QAAQ,CAAA,GAAA,kBAAU,EAAE,CAAC,QAAqB,MAAM,aAAa,CAAC,KAAK;IAEzE,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAA,GAAA,eAAO,EAAW;IAE1C,MAAM,gBAAgB,CAAA,GAAA,aAAK,EAAuB;IAClD,MAAM,6BAA6B,CAAA,GAAA,aAAK,EAAiB,EAAE;IAC3D,MAAM,0BAA0B,CAAA,GAAA,aAAK,EAAU;IAC/C,MAAM,eAAe,CAAA,GAAA,aAAK,EAAwC;IAClE,MAAM,cAAc,CAAA,GAAA,aAAK,EAAW;IAEpC,MAAM,CAAC,QAAQ,IAAI,GAAG,CAAA,GAAA,gBAAQ,EAAE,IAAO,CAAA;YACrC,MAAM;gBAAE,SAAS;YAAE;QACrB,CAAA;IAEA,CAAA,GAAA,gBAAQ,EAAE;QACR,IAAI,KAAK,CAAC;YACR,MAAM;gBAAE,SAAS;YAAE;YACnB,IAAI;gBAAE,SAAS;YAAE;YACjB,QAAQ;gBAAE,UAAU;YAAe;QACrC;IACF,GAAG,EAAE;IAEL,MAAM,cAAc;QAClB,IAAI,KAAK,CAAC;YACR,MAAM;gBAAE,SAAS;YAAE;YACnB,IAAI;gBAAE,SAAS;YAAE;YACjB,QAAQ;gBAAE,UAAU;YAAe;QACrC;QAEA,cAAc,WAAW,aAAa,aAAa,OAAO;QAC1D,aAAa,OAAO,GAAG,WAAW;YAChC,6FAA6F;YAC7F,SAAS,CAAA,GAAA,mBAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,YAAY,OAAO;YACzD,wBAAwB;YACxB,SAAS,CAAA,GAAA,mBAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA,GAAA,aAAK,EAAE,IAAI;YAC/C;QACF,GAAG;IACL;IAEA,MAAM,kBAAkB;QACtB,IAAI,2BAA2B,OAAO,CAAC,MAAM,GAAG,wBAAwB,OAAO,GAAG,GAAG;YACnF,wBAAwB,OAAO;YAC/B,SAAS,CAAA,GAAA,mBAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,2BAA2B,OAAO,CAAC,wBAAwB,OAAO,CAAC;QACzG,OAAO;YACL,wBAAwB,OAAO,GAAG;YAClC,SAAS,CAAA,GAAA,mBAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,2BAA2B,OAAO,CAAC,EAAE;QAC3E;IACF;IAEA,CAAA,GAAA,gBAAQ,EAAE;QACR,cAAc,OAAO,GAAG;QACxB,MAAM,gBAA+B,EAAE;QACvC,oBAAoB,KAAK,EAAE,aAAa,WAAW,cAAc,IAAI,CAAC,CAAA,GAAA,aAAK,EAAE,WAAW;QACxF,oBAAoB,KAAK,EAAE,MAAM,WAAW,cAAc,IAAI,CAAC,CAAA,GAAA,aAAK,EAAE,YAAY;QAClF,oBAAoB,KAAK,EAAE,WAAW,WAAW,cAAc,IAAI,CAAC,CAAA,GAAA,aAAK,EAAE,SAAS;QACpF,8CAA8C;QAC9C,QAAQ,cAAc,MAAM,KAAK;QACjC,2BAA2B,OAAO,GAAG;QACrC,wBAAwB,OAAO,GAAG;QAClC,uDAAuD;QACvD,cAAc,OAAO,CAAC,KAAK,EAAE,MAAM,SAAS,SAAS,CAAA,GAAA,mBAAW,EAAE,MAAM,CAAC,QAAQ,CAAC;QAClF,SAAS,CAAA,GAAA,mBAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,2BAA2B,OAAO,CAAC,MAAM,GAAG,2BAA2B,OAAO,CAAC,EAAE,GAAG,CAAA,GAAA,aAAK,EAAE,WAAW;QAE1I,OAAO;YACL,cAAc,WAAW,aAAa,aAAa,OAAO;YAC1D,6FAA6F;YAC7F,SAAS,CAAA,GAAA,mBAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,YAAY,OAAO;QAC3D;IACF,GAAG,EAAE;IAEL,qBACE,iBAAC,CAAA,GAAA,YAAI,EAAE,QAAQ;;0BACb,iBAAC,CAAA,GAAA,eAAO,EAAE,GAAG;gBACX,IAAG;gBACH,WAAU;gBACV,OAAO;oBACL,GAAG,MAAM;gBACX;;kCAEA,gBAAC,CAAA,GAAA,cAAW;oBACX,oBAAoB,kBAAkB,kBAAI,gBAAC,CAAA,GAAA,cAAW;wBAAE,oBAAoB;wBAAM,gBAAgB,IAAM;;oBAExG,UAAU,CAAA,GAAA,aAAK,EAAE,WAAW,kBAAI,gBAAC,CAAA,GAAA,cAAU;oBAC3C,UAAU,CAAA,GAAA,aAAK,EAAE,YAAY,kBAAI,gBAAC,CAAA,GAAA,cAAO;wBAAE,UAAU;wBAAM,eAAe;wBAAM,wBAAwB;wBAAiB,MAAM;wBAAM,YAAY;;oBACjJ,UAAU,CAAA,GAAA,aAAK,EAAE,WAAW,kBAC3B,gBAAC,CAAA,GAAA,cAAU;wBACT,KAAK,oBAAoB,KAAK,EAAE,aAAa;wBAC7C,OAAO,oBAAoB,KAAK,EAAE,aAAa;wBAC/C,MAAM;wBACN,gBAAgB;wBAChB,iBAAiB;;oBAGpB,UAAU,CAAA,GAAA,aAAK,EAAE,SAAS,kBACzB,gBAAC,CAAA,GAAA,cAAQ;wBACP,MAAM,oBAAoB,KAAK,EAAE,WAAW;wBAC5C,OAAO,oBAAoB,KAAK,EAAE,WAAW;wBAC7C,MAAM;wBACN,gBAAgB;wBAChB,iBAAiB;;;;0BAMvB,gBAAC;gBAAI,WAAU;gBAAmH,SAAS,IAAM;;;;AAGvJ;IAEA,2CAAe;;;;;;;;;;;;;ACjIf,MAAM,qCAAe;IACnB,MAAM,cAAc,CAAA,GAAA,kBAAU,EAAE,CAAC,QAAqB,MAAM,WAAW,CAAC,WAAW;IACnF,MAAM,cAAc,CAAA,GAAA,kBAAU,EAAE,CAAC,QAAqB,MAAM,aAAa,CAAC,mBAAmB;IAC7F,MAAM,CAAC,sBAAsB,GAAG,CAAA,GAAA,eAAO,EAAU,CAAA,GAAA,+BAAuB,EAAE,YAAY,OAAO,EAAE;IAE/F,qBACE,iBAAC;QAAI,WAAU;;0BACb,gBAAC;gBAAI,WAAU;gBAAoH,OAAO;oBAAE,iBAAiB;gBAAsB;;0BACnL,iBAAC;gBAAI,WAAU;;kCACb,gBAAC,CAAA,GAAA,cAAQ;kCACT,gBAAC;wBAAE,WAAU;kCAAoB,YAAY,MAAM,CAAC,YAAY;;;;;;AAIxE;IAEA,2CAAe;;;;;;;;ACnBf,MAAM,kCAAY,CAAC,aAAE,SAAS,SAAE,KAAK,EAAoB;IACvD,qBACE,gBAAC;QACC,SAAQ;QACR,OAAM;QACN,QAAQ,SAAS;QACjB,MAAM,SAAS;QACf,WAAW,aAAa;kBAExB,cAAA,gBAAC;YACC,GAAE;YACF,aAAY;;;AAIpB;IAEA,2CAAe;;;;;;;;;;;ACVf,MAAM,oCAAc;AACpB,IAAI,sCAAgB;AACpB,MAAM,2CAA6C;IACjD,OAAO;QACL,YAAY;IACd;AACF;AAEA,MAAM,qCAAe,CAAC,sBAAE,kBAAkB,kBAAE,cAAc,iBAAE,aAAa,YAAE,QAAQ,EAAqB;IACtG,MAAM,CAAC,aAAa,eAAe,GAAG,CAAA,GAAA,eAAO,EAAU;IACvD,MAAM,CAAC,cAAc,gBAAgB,GAAG,CAAA,GAAA,eAAO,EAAU;IACzD,MAAM,CAAC,cAAc,gBAAgB,GAAG,CAAA,GAAA,eAAO;IAC/C,MAAM,WAAW,CAAA,GAAA,aAAK,EAAoB;IAC1C,MAAM,cAAc,CAAA,GAAA,aAAK,EAAU,YAAY;IAE/C,CAAA,GAAA,gBAAQ,EAAE;QACR,YAAY,OAAO,GAAG,YAAY;IACpC,GAAG;QAAC;KAAS;IAEb,CAAA,GAAA,gBAAQ,EAAE;QACR,MAAM,qBAAqB;YACzB,MAAM,SAAS,MAAM,CAAA,GAAA,sBAAc,EAAE,cAAc,CAAC;YACpD,MAAM,kBAAkB,MAAM,CAAA,GAAA,mBAAoB,EAAE,iBAAiB,CAAC,QAAQ;gBAC5E,aAAa;oBACX,gBAAgB,CAAC,4HAA4H,CAAC;oBAC9I,UAAU;gBACZ;gBACA,aAAa;YACf;YAEA,mBAAmB,gBAAgB;QACrC;QAEA,MAAM,yBAAyB;YAC7B,UAAU,YAAY,CACnB,YAAY,CAAC,0CACb,IAAI,CAAC,CAAC;gBACL,MAAM,WAAW,QAAQ,cAAc,EAAE,CAAC,EAAE,CAAC,WAAW;gBACxD,eAAe,SAAS,KAAK,IAAI;gBACjC,gBAAgB,SAAS,MAAM,IAAI;gBACnC;YACF,GACC,KAAK,CAAC,CAAC,QAAU,QAAQ,IAAI,CAAC,yEAAyE;QAC5G;QAEA;IACF,GAAG,EAAE;IAEL,MAAM,gBAAgB;QACpB,IAAI,gBAAgB,SAAS,OAAO,EAAE;YACpC,IAAI,cAAc,YAAY,GAAG;YAEjC,oCAAoC;YACpC,IAAI,SAAS,OAAO,CAAC,WAAW,KAAK,qCAAe;gBAClD,sCAAgB,SAAS,OAAO,CAAC,WAAW;gBAC5C,MAAM,aAAa,aAAa,cAAc,CAAC,SAAS,OAAO,EAAE,aAAa;oBAAE,iBAAiB,YAAY,OAAO;gBAAC,GAAG,UAAU;gBAElI,IAAI,WAAW,MAAM,EAAE;oBACrB,MAAM,QAAQ,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK;oBAC/C,QAAQ,sBAAsB,eAAe,YAAY,SAAS,OAAO,CAAC,UAAU,EAAE,SAAS,OAAO,CAAC,WAAW;gBACpH;YACF;QACF;QAEA,wEAAwE;QACxE,OAAO,qBAAqB,CAAC;IAC/B;IAEA,CAAA,GAAA,gBAAQ,EAAE;QACR,IAAI,gBAAgB,SAAS,OAAO,EAClC,6BAA6B;QAC7B,UAAU,YAAY,CACnB,YAAY,CAAC,0CACb,IAAI,CAAC,CAAC;YACL,IAAI,SAAS,OAAO,EAAE;gBACpB,SAAS,OAAO,CAAC,SAAS,GAAG;gBAC7B,SAAS,OAAO,CAAC,gBAAgB,CAAC,cAAc;YAClD;QACF,GACC,KAAK,CAAC,CAAC;YACN,QAAQ,KAAK,CAAC;QAChB;IAEN,GAAG;QAAC;KAAa;IAEjB,qBACE,gBAAC;QAAI,IAAG;QAAkC,WAAW,CAAC,+BAA+B,EAAE,CAAC,iBAAiB,gBAAgB;kBACvH,cAAA,gBAAC;YACC,KAAK;YACL,KAAI;YACJ,QAAQ;YACR,OAAO;gBACL,QAAQ,GAAG,SAAS,GAAG,CAAC;gBACxB,OAAO,gBAAgB,cAAc,IAAI;gBACzC,QAAQ,gBAAgB,eAAe,IAAI;YAC7C;;;AAIR;IAEA,2CAAe;;;;;;;;;;AC3Gf,MAAM,oCAAc;IAClB,MAAM,cAAc,CAAA,GAAA,kBAAU,EAAE,CAAC,QAAqB,MAAM,aAAa,CAAC,mBAAmB;IAE7F,qBACE,gBAAC;QAAI,WAAU;kBACb,cAAA,gBAAC;YAAI,WAAU;sBAAwE,YAAY,MAAM,CAAC,WAAW;;;AAG3H;IAEA,2CAAe;;;;;;;;;;ACHf,MAAM,oCAAc,CAAC,OAAE,GAAG,SAAE,KAAK,QAAE,IAAI,kBAAE,cAAc,mBAAE,eAAe,EAAoB;IAC1F,MAAM,WAAW,CAAA,GAAA,aAAK,EAAwC;IAC9D,MAAM,eAAe,CAAA,GAAA,aAAK,EAAwC;IAElE,MAAM,CAAC,QAAQ,IAAI,GAAG,CAAA,GAAA,gBAAQ,EAAE,IAAO,CAAA;YACrC,MAAM;gBACJ,SAAS;YACX;QACF,CAAA;IAEA,CAAA,GAAA,gBAAQ,EAAE;QACR,IAAI,KAAK,CAAC;YACR,MAAM;gBACJ,SAAS;YACX;YACA,IAAI;gBACF,SAAS;YACX;YACA,QAAQ;gBACN,UAAU;YACZ;QACF;IACF,GAAG,EAAE;IAEL,MAAM,cAAc;QAClB,IAAI,KAAK,CAAC;YACR,MAAM;gBACJ,SAAS;YACX;YACA,IAAI;gBACF,SAAS;YACX;YACA,QAAQ;gBACN,UAAU;YACZ;QACF;QAEA,cAAc,WAAW,aAAa,aAAa,OAAO;QAC1D,aAAa,OAAO,GAAG,WAAW;YAChC,wBAAwB;YACxB;QACF,GAAG;IACL;IAEA,CAAA,GAAA,gBAAQ,EAAE;QACR,IAAI,CAAC,MACH,SAAS,OAAO,GAAG,WAAW;YAC5B;QACF,GAAG,AAAC,CAAA,SAAS,CAAA,IAAK,OAAO;QAG3B,OAAO;YACL,SAAS,OAAO,IAAI,aAAa,SAAS,OAAO;YACjD,aAAa,OAAO,IAAI,aAAa,aAAa,OAAO;QAC3D;IACF,GAAG,EAAE;IAEL,qBACE,gBAAC,CAAA,GAAA,eAAO,EAAE,GAAG;QACX,WAAU;QACV,OAAO;YACL,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC9B,oBAAoB;YACpB,kBAAkB;YAClB,gBAAgB;YAChB,GAAG,MAAM;QACX;;AAGN;IAEA,2CAAe;;;;;;;;;;ACvEf,MAAM,kCAAY,CAAC,QAAE,IAAI,SAAE,KAAK,QAAE,IAAI,kBAAE,cAAc,mBAAE,eAAe,EAAkB;IACvF,MAAM,CAAC,cAAc,gBAAgB,GAAG,CAAA,GAAA,eAAO,EAAU;IACzD,MAAM,WAAW,CAAA,GAAA,aAAK,EAAwC;IAC9D,MAAM,eAAe,CAAA,GAAA,aAAK,EAAwC;IAElE,MAAM,CAAC,QAAQ,IAAI,GAAG,CAAA,GAAA,gBAAQ,EAAE,IAAO,CAAA;YACrC,MAAM;gBACJ,SAAS;YACX;QACF,CAAA;IAEA,CAAA,GAAA,gBAAQ,EAAE;QACR,IAAI,KAAK,CAAC;YACR,MAAM;gBACJ,SAAS;YACX;YACA,IAAI;gBACF,SAAS;YACX;YACA,QAAQ;gBACN,UAAU;YACZ;QACF;IACF,GAAG,EAAE;IAEL,MAAM,cAAc;QAClB,IAAI,KAAK,CAAC;YACR,MAAM;gBACJ,SAAS;YACX;YACA,IAAI;gBACF,SAAS;YACX;YACA,QAAQ;gBACN,UAAU;YACZ;QACF;QAEA,cAAc,WAAW,aAAa,aAAa,OAAO;QAC1D,aAAa,OAAO,GAAG,WAAW;YAChC,wBAAwB;YACxB;QACF,GAAG;IACL;IAEA,CAAA,GAAA,gBAAQ,EAAE;QACR,UAAU,WAAW,aAAa,SAAS,OAAO;QAClD,IAAI,MAAM,QACR,SAAS,OAAO,GAAG,WAAW;YAC5B,iBAAiB,KAAK,MAAM,GAAG,IAAK,OAAO,gBAAgB,KAAK,gBAAiB,gBAAgB,eAAe;QAClH,GAAG,AAAC,CAAA,SAAS,CAAA,IAAK;aAElB;IAEJ,GAAG;QAAC;KAAa;IAEjB,CAAA,GAAA,gBAAQ,EAAE;QACR,OAAO;YACL,UAAU,WAAW,aAAa,SAAS,OAAO;YAClD,cAAc,WAAW,aAAa,aAAa,OAAO;QAC5D;IACF,GAAG,EAAE;IAEL,qBACE,gBAAC,CAAA,GAAA,eAAO,EAAE,GAAG;QAAC,WAAU;QAAwH,OAAO;YAAE,GAAG,MAAM;QAAC;kBACjK,cAAA,gBAAC;YAAI,WAAW,GAAG,OAAO,WAAW,GAAG,OAAO,UAAU,GAAG,cAAc,aAAa;YAAE,KAAK,MAAM,CAAC,aAAa,IAAI;YAAI,KAAI;;;AAGpI;IAEA,2CAAe","sources":["src/components/Veille/VeilleManager.tsx","src/components/Veille/CallToAction.tsx","src/components/Icons/Miscellaneous/TouchIcon.tsx","src/components/Veille/FaceDetector.tsx","src/components/Veille/EmptyVeille.tsx","src/components/Veille/ScreenSaver.tsx","src/components/Veille/SlideShow.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react'\r\nimport { useSpring, animated } from '@react-spring/web'\r\nimport { useSelector, useDispatch } from 'react-redux'\r\nimport { RootState, storeActions } from '../../store'\r\n\r\nimport { Routes } from '../../models/enums'\r\nimport type { VeilleConfiguration } from '../../models/types'\r\n\r\nimport NewsView from '../Views/NewsView'\r\nimport CallToAction from './CallToAction'\r\nimport FaceDetector from './FaceDetector'\r\nimport EmptyVeille from './EmptyVeille'\r\nimport ScreenSaver from './ScreenSaver'\r\nimport SlideShow from './SlideShow'\r\n\r\nconst springDuration = 500\r\n\r\ninterface VeilleManagerProps {\r\n onClose: () => void\r\n}\r\n\r\nconst VeilleManager = ({ onClose }: VeilleManagerProps) => {\r\n const dispatch = useDispatch()\r\n const route = useSelector((state: RootState) => state.viewReducer.route)\r\n const veilleConfiguration = useSelector((state: RootState) => state.viewReducer.veilleConfiguration)\r\n const muted = useSelector((state: RootState) => state.speechReducer.muted)\r\n\r\n const [loop, setLoop] = useState<boolean>(false)\r\n\r\n const veilleDataRef = useRef<VeilleConfiguration>(veilleConfiguration)\r\n const availableItemsToDisplayRef = useRef<Array<Routes>>([])\r\n const currentItemDisplayedRef = useRef<number>(0)\r\n const fadeTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\r\n const oldMutedRef = useRef<boolean>(muted)\r\n\r\n const [spring, api] = useSpring(() => ({\r\n from: { opacity: 0 }\r\n }))\r\n\r\n useEffect(() => {\r\n api.start({\r\n from: { opacity: 0 },\r\n to: { opacity: 1 },\r\n config: { duration: springDuration }\r\n })\r\n }, [])\r\n\r\n const handleClose = (): void => {\r\n api.start({\r\n from: { opacity: 1 },\r\n to: { opacity: 0 },\r\n config: { duration: springDuration }\r\n })\r\n\r\n fadeTimerRef?.current && clearTimeout(fadeTimerRef.current)\r\n fadeTimerRef.current = setTimeout(() => {\r\n // Switch back the muted state (it could have not been changed but for security let's set it)\r\n dispatch(storeActions.speech.setMuted(oldMutedRef.current))\r\n // Get back to home view\r\n dispatch(storeActions.view.setRoute(Routes.Home))\r\n onClose()\r\n }, springDuration)\r\n }\r\n\r\n const switchComponent = (): void => {\r\n if (availableItemsToDisplayRef.current.length > currentItemDisplayedRef.current + 1) {\r\n currentItemDisplayedRef.current++\r\n dispatch(storeActions.view.setRoute(availableItemsToDisplayRef.current[currentItemDisplayedRef.current]))\r\n } else {\r\n currentItemDisplayedRef.current = 0\r\n dispatch(storeActions.view.setRoute(availableItemsToDisplayRef.current[0]))\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n veilleDataRef.current = veilleConfiguration\r\n const tempViewArray: Array<Routes> = []\r\n veilleConfiguration.views?.screenSaver?.enabled && tempViewArray.push(Routes.ScreenSaver)\r\n veilleConfiguration.views?.news?.enabled && tempViewArray.push(Routes.NewsInVeille)\r\n veilleConfiguration.views?.slideShow?.enabled && tempViewArray.push(Routes.SlideShow)\r\n // Set loop if there is only 1 item to display\r\n setLoop(tempViewArray.length === 1)\r\n availableItemsToDisplayRef.current = tempViewArray\r\n currentItemDisplayedRef.current = 0\r\n // Mute the sound if the news in veille has to be muted\r\n veilleDataRef.current.views?.news?.muted && dispatch(storeActions.speech.setMuted(true))\r\n dispatch(storeActions.view.setRoute(availableItemsToDisplayRef.current.length ? availableItemsToDisplayRef.current[0] : Routes.EmptyVeille))\r\n\r\n return () => {\r\n fadeTimerRef?.current && clearTimeout(fadeTimerRef.current)\r\n // Switch back the muted state (it could have not been changed but for security let's set it)\r\n dispatch(storeActions.speech.setMuted(oldMutedRef.current))\r\n }\r\n }, [])\r\n\r\n return (\r\n <React.Fragment>\r\n <animated.div\r\n id='retorik-framework-veille-manager'\r\n className='rf-relative rf-col-start-1 rf-col-span-full rf-row-start-1 rf-row-span-full rf-grid rf-grid-cols-8 rf-grid-rows-12'\r\n style={{\r\n ...spring\r\n }}\r\n >\r\n <CallToAction />\r\n {veilleConfiguration.autoExitFromWebcam && <FaceDetector detectionThreshold={0.95} onFaceDetected={() => handleClose()} />}\r\n\r\n {route === Routes.EmptyVeille && <EmptyVeille />}\r\n {route === Routes.NewsInVeille && <NewsView hideMenu={true} isRetorikNews={true} handleEndedWithoutloop={switchComponent} loop={loop} fromVeille={true} />}\r\n {route === Routes.ScreenSaver && (\r\n <ScreenSaver\r\n url={veilleConfiguration.views?.screenSaver?.url}\r\n timer={veilleConfiguration.views?.screenSaver?.timerBeforeSwitchInSeconds}\r\n loop={loop}\r\n springDuration={springDuration}\r\n switchComponent={switchComponent}\r\n />\r\n )}\r\n {route === Routes.SlideShow && (\r\n <SlideShow\r\n urls={veilleConfiguration.views?.slideShow?.urls}\r\n timer={veilleConfiguration.views?.slideShow?.timerBeforeSwitchInSeconds}\r\n loop={loop}\r\n springDuration={springDuration}\r\n switchComponent={switchComponent}\r\n />\r\n )}\r\n </animated.div>\r\n\r\n {/* Overlay to exit the veille */}\r\n <div className='rf-z-overlay rf-col-start-1 rf-col-span-full rf-row-start-1 rf-row-span-full rf-bg-transparent rf-cursor-pointer' onClick={() => handleClose()} />\r\n </React.Fragment>\r\n )\r\n}\r\n\r\nexport default VeilleManager\r\n","import React, { useState } from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { RootState } from '../../store'\r\nimport { getColorWithTransparency } from '../../utils/colorUtils'\r\nimport TouchIcon from '../Icons/Miscellaneous/TouchIcon'\r\n\r\nconst CallToAction = (): JSX.Element => {\r\n const themeColors = useSelector((state: RootState) => state.viewReducer.themeColors)\r\n const translation = useSelector((state: RootState) => state.localeReducer.currentTranslations)\r\n const [colorWithTransparency] = useState<string>(getColorWithTransparency(themeColors.primary, 0.5))\r\n\r\n return (\r\n <div className='rf-absolute rf-z-ui rf-bottom-0 rf-right-0 rf-w-64 rf-h-80 rf-grid rf-grid-cols-1 rf-grid-rows-1 rf-justify-end rf-justify-items-end rf-content-end rf-items-end rf-text-center rf-overflow-hidden rf-z-10'>\r\n <div className='rf-relative rf-col-start-1 rf-col-end-2 rf-row-start-1 rf-row-end-2 rf-w-48 rf-h-36 rf-rotate-45 rf-translate-y-8' style={{ backgroundColor: colorWithTransparency }}></div>\r\n <div className='rf-relative rf-col-start-1 rf-col-end-2 rf-row-start-1 rf-row-end-2 rf-w-50 rf-h-32 rf-flex rf-flex-col rf-gap-2 rf-justify-center rf-items-center rf-text-white'>\r\n <TouchIcon />\r\n <p className='rf-ml-16 rf-mr-4'>{translation.veille.calltoaction}</p>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default CallToAction\r\n","import React from \"react\";\r\nimport type { IconDefaultProps } from '../../../models/types'\r\n\r\nconst TouchIcon = ({ className, color }: IconDefaultProps) => {\r\n return (\r\n <svg\r\n viewBox=\"0 0 48 67\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n stroke={color || 'currentColor'}\r\n fill={color || 'currentColor'}\r\n className={className || 'rf-h-12 rf-w-12'}\r\n >\r\n <path\r\n d=\"m41 24c-1.7 0-3.2 0.65-4.4 1.7-1.2-1.1-2.7-1.7-4.4-1.7-1.7 0-3.2 0.65-4.4 1.7-0.48-0.44-1-0.8-1.6-1.1 2.1-2.6 3.4-6 3.4-9.5 2.8e-4 -8.3-6.7-15-15-15-8.3 0-15 6.7-15 15 0 5.8 3.3 11 8.4 13v18c0 11 8.9 20 20 20 11 0 20-8.9 20-20v-16c0-3.6-2.9-6.6-6.6-6.6zm-37-8.8c0-5.9 4.8-11 11-11 5.9 0 11 4.8 11 11 0 3.4-1.6 6.5-4.1 8.5v-8.5c0-3.6-2.9-6.6-6.6-6.6-3.6 0-6.6 2.9-6.6 6.6v8.5c-2.6-2-4.1-5.1-4.1-8.5zm39 32c0 8.5-6.9 15-15 15-8.5 0-15-6.9-15-15v-20c4e-3 -0.072 4e-3 -0.14 0-0.22v-12c0-1.2 1-2.3 2.3-2.3 1.2 0 2.3 1 2.3 2.3v20c0 1.2 0.96 2.1 2.1 2.1 1.2 0 2.1-0.96 2.1-2.1v-4.7c0-1.2 1-2.3 2.3-2.3s2.3 1 2.3 2.3v4.7c0 1.2 0.96 2.1 2.1 2.1 1.2 0 2.1-0.96 2.1-2.1v-4.7c0-1.2 1-2.3 2.3-2.3 1.2 0 2.3 1 2.3 2.3v4.7c0 1.2 0.96 2.1 2.1 2.1s2.1-0.96 2.1-2.1v-4.7c0-1.2 1-2.3 2.3-2.3 1.2 0 2.3 1 2.3 2.3v16z\"\r\n strokeWidth=\".29\"\r\n />\r\n </svg>\r\n );\r\n};\r\n\r\nexport default TouchIcon;\r\n","import React, { useEffect, useState, useRef } from 'react'\r\nimport { FaceDetector as MediapipeFaceDetector, FilesetResolver, Detection } from '@mediapipe/tasks-vision'\r\n\r\ninterface FaceDetectorProps {\r\n detectionThreshold: number\r\n onFaceDetected: (detections?: Array<Detection>, imageWidth?: number, imageHeight?: number) => void\r\n showThumbnail?: boolean\r\n rotation?: number\r\n}\r\n\r\nconst runningMode = 'VIDEO'\r\nlet lastVideoTime = -1\r\nconst defaultConstraints: MediaStreamConstraints = {\r\n video: {\r\n facingMode: 'user'\r\n }\r\n}\r\n\r\nconst FaceDetector = ({ detectionThreshold, onFaceDetected, showThumbnail, rotation }: FaceDetectorProps): JSX.Element => {\r\n const [webcamWidth, setWebcamWidth] = useState<number>(0)\r\n const [webcamHeight, setWebcamHeight] = useState<number>(0)\r\n const [faceDetector, setFaceDetector] = useState<MediapipeFaceDetector | undefined>()\r\n const videoRef = useRef<HTMLVideoElement>(null)\r\n const rotationRef = useRef<number>(rotation || 0)\r\n\r\n useEffect(() => {\r\n rotationRef.current = rotation || 0\r\n }, [rotation])\r\n\r\n useEffect(() => {\r\n const createfaceDetector = async () => {\r\n const vision = await FilesetResolver.forVisionTasks('https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision@0.10.0/wasm')\r\n const newFaceDetector = await MediapipeFaceDetector.createFromOptions(vision, {\r\n baseOptions: {\r\n modelAssetPath: `https://storage.googleapis.com/mediapipe-models/face_detector/blaze_face_short_range/float16/1/blaze_face_short_range.tflite`,\r\n delegate: 'GPU'\r\n },\r\n runningMode: runningMode\r\n })\r\n\r\n newFaceDetector && setFaceDetector(newFaceDetector)\r\n }\r\n\r\n const initializefaceDetector = async () => {\r\n navigator.mediaDevices\r\n .getUserMedia(defaultConstraints)\r\n .then((display) => {\r\n const settings = display.getVideoTracks()[0].getSettings()\r\n setWebcamWidth(settings.width || 0)\r\n setWebcamHeight(settings.height || 0)\r\n createfaceDetector()\r\n })\r\n .catch((error) => console.warn('Retorik Framework > an error occured when trying to use the webcam : ', error))\r\n }\r\n\r\n initializefaceDetector()\r\n }, [])\r\n\r\n const predictWebcam = async () => {\r\n if (faceDetector && videoRef.current) {\r\n let startTimeMs = performance.now()\r\n\r\n // Detect faces using detectForVideo\r\n if (videoRef.current.currentTime !== lastVideoTime) {\r\n lastVideoTime = videoRef.current.currentTime\r\n const detections = faceDetector.detectForVideo(videoRef.current, startTimeMs, { rotationDegrees: rotationRef.current }).detections\r\n\r\n if (detections.length) {\r\n const score = detections[0].categories[0].score\r\n score > detectionThreshold && onFaceDetected(detections, videoRef.current.videoWidth, videoRef.current.videoHeight)\r\n }\r\n }\r\n }\r\n\r\n // Call this function again to keep predicting when the browser is ready\r\n window.requestAnimationFrame(predictWebcam)\r\n }\r\n\r\n useEffect(() => {\r\n if (faceDetector && videoRef.current) {\r\n // Activate the webcam stream\r\n navigator.mediaDevices\r\n .getUserMedia(defaultConstraints)\r\n .then((stream) => {\r\n if (videoRef.current) {\r\n videoRef.current.srcObject = stream\r\n videoRef.current.addEventListener('loadeddata', predictWebcam)\r\n }\r\n })\r\n .catch((err) => {\r\n console.error(err)\r\n })\r\n }\r\n }, [faceDetector])\r\n\r\n return (\r\n <div id='retorik-framework-face-detector' className={`rf-absolute rf-top-0 rf-left-0 ${!showThumbnail && 'rf-invisible'}`}>\r\n <video\r\n ref={videoRef}\r\n src=''\r\n autoPlay\r\n style={{\r\n rotate: `${rotation}deg`,\r\n width: showThumbnail ? webcamWidth / 2 : webcamWidth,\r\n height: showThumbnail ? webcamHeight / 2 : webcamHeight\r\n }}\r\n />\r\n </div>\r\n )\r\n}\r\n\r\nexport default FaceDetector\r\n","import React from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { RootState } from '../../store'\r\n\r\nconst EmptyVeille = () => {\r\n const translation = useSelector((state: RootState) => state.localeReducer.currentTranslations)\r\n\r\n return (\r\n <div className='rf-col-start-1 rf-col-span-full rf-row-start-1 rf-row-span-full rf-bg-black rf-flex rf-justify-center rf-items-center'>\r\n <div className='rf-uppercase rf-font-bold rf-text-3xl rf-text-white rf-animate-pulse'>{translation.veille.emptyveille}</div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default EmptyVeille\r\n","import React, { useEffect, useRef } from 'react'\r\nimport { useSpring, animated } from '@react-spring/web'\r\n\r\ninterface ScreenSaverProps {\r\n url?: string\r\n timer?: number\r\n loop?: boolean\r\n springDuration: number\r\n switchComponent: () => void\r\n}\r\n\r\nconst ScreenSaver = ({ url, timer, loop, springDuration, switchComponent }: ScreenSaverProps) => {\r\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\r\n const fadeTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\r\n\r\n const [spring, api] = useSpring(() => ({\r\n from: {\r\n opacity: 0\r\n }\r\n }))\r\n\r\n useEffect(() => {\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\r\n const handleClose = (): 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 fadeTimerRef?.current && clearTimeout(fadeTimerRef.current)\r\n fadeTimerRef.current = setTimeout(() => {\r\n // Get back to home view\r\n switchComponent()\r\n }, springDuration)\r\n }\r\n\r\n useEffect(() => {\r\n if (!loop) {\r\n timerRef.current = setTimeout(() => {\r\n handleClose()\r\n }, (timer || 8) * 1000 - springDuration)\r\n }\r\n\r\n return () => {\r\n timerRef.current && clearTimeout(timerRef.current)\r\n fadeTimerRef.current && clearTimeout(fadeTimerRef.current)\r\n }\r\n }, [])\r\n\r\n return (\r\n <animated.div\r\n className='rf-col-start-1 rf-col-span-full rf-row-start-1 rf-row-span-full'\r\n style={{\r\n backgroundImage: `url(${url})`,\r\n backgroundPosition: 'center',\r\n backgroundRepeat: 'no-repeat',\r\n backgroundSize: 'cover',\r\n ...spring\r\n }}\r\n />\r\n )\r\n}\r\n\r\nexport default ScreenSaver\r\n","import React, { useEffect, useState, useRef } from 'react'\r\nimport { useSpring, animated } from '@react-spring/web'\r\n\r\ninterface SlideShowProps {\r\n urls?: Array<string>\r\n timer?: number\r\n loop?: boolean\r\n springDuration: number\r\n switchComponent: () => void\r\n}\r\n\r\nconst SlideShow = ({ urls, timer, loop, springDuration, switchComponent }: SlideShowProps) => {\r\n const [currentIndex, setCurrentIndex] = useState<number>(0)\r\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\r\n const fadeTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\r\n\r\n const [spring, api] = useSpring(() => ({\r\n from: {\r\n opacity: 0\r\n }\r\n }))\r\n\r\n useEffect(() => {\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\r\n const handleClose = (): 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 fadeTimerRef?.current && clearTimeout(fadeTimerRef.current)\r\n fadeTimerRef.current = setTimeout(() => {\r\n // Get back to home view\r\n switchComponent()\r\n }, springDuration)\r\n }\r\n\r\n useEffect(() => {\r\n timerRef?.current && clearTimeout(timerRef.current)\r\n if (urls?.length) {\r\n timerRef.current = setTimeout(() => {\r\n currentIndex === urls.length - 1 ? (loop ? setCurrentIndex(0) : handleClose()) : setCurrentIndex(currentIndex + 1)\r\n }, (timer || 5) * 1000)\r\n } else {\r\n switchComponent()\r\n }\r\n }, [currentIndex])\r\n\r\n useEffect(() => {\r\n return () => {\r\n timerRef?.current && clearTimeout(timerRef.current)\r\n fadeTimerRef?.current && clearTimeout(fadeTimerRef.current)\r\n }\r\n }, [])\r\n\r\n return (\r\n <animated.div className='rf-col-start-1 rf-col-span-full rf-row-start-1 rf-row-span-full rf-flex rf-justify-center rf-items-center rf-bg-black' style={{ ...spring }}>\r\n <img className={`${window.innerHeight > window.innerWidth ? 'rf-w-full' : 'rf-h-full'}`} src={urls?.[currentIndex] || ''} alt='slideshow' />\r\n </animated.div>\r\n )\r\n}\r\n\r\nexport default SlideShow\r\n"],"names":[],"version":3,"file":"VeilleManager.f3bafdec.js.map"}
@@ -45,17 +45,16 @@ var $7WHA7 = parcelRequire("7WHA7");
45
45
 
46
46
  var $eYKUg = parcelRequire("eYKUg");
47
47
 
48
- var $aA7FU = parcelRequire("aA7FU");
49
-
50
48
  var $lONbp = parcelRequire("lONbp");
51
49
 
52
50
  var $6tFNo = parcelRequire("6tFNo");
53
51
 
54
- var $bUTyR = parcelRequire("bUTyR");
52
+ var $6GlMG = parcelRequire("6GlMG");
55
53
  const $becba6a72493aae8$var$Weather = ({ handleClose: handleClose })=>{
56
54
  var _configuration_position, _configuration_position1;
57
55
  const dispatch = (0, $avS3e$reactredux.useDispatch)();
58
56
  const locale = (0, $avS3e$reactredux.useSelector)((state)=>state.localeReducer.locale);
57
+ const translation = (0, $avS3e$reactredux.useSelector)((state)=>state.localeReducer.currentTranslations);
59
58
  const configuration = (0, $avS3e$reactredux.useSelector)((state)=>state.retorikReducer.configuration);
60
59
  const currentDeviceType = (0, $avS3e$reactredux.useSelector)((state)=>state.viewReducer.currentDeviceType);
61
60
  const isMobile = (0, $avS3e$reactredux.useSelector)((state)=>state.viewReducer.isMobile);
@@ -87,11 +86,17 @@ const $becba6a72493aae8$var$Weather = ({ handleClose: handleClose })=>{
87
86
  /*#__PURE__*/ (0, $avS3e$reactjsxruntime.jsxs)("div", {
88
87
  className: `rf-h-full rf-w-full rf-flex rf-flex-col ${isMobile ? 'rf-px-4' : 'rf-items-center'}`,
89
88
  children: [
90
- isMobile ? /*#__PURE__*/ (0, $avS3e$reactjsxruntime.jsx)((0, $bUTyR.default), {
91
- subView: (0, $7WHA7.AvailableViews).weather,
92
- className: "rf-border-b rf-border-b-menuBorder"
93
- }) : /*#__PURE__*/ (0, $avS3e$reactjsxruntime.jsx)((0, $aA7FU.default), {
94
- subView: (0, $7WHA7.AvailableViews).weather
89
+ /*#__PURE__*/ (0, $avS3e$reactjsxruntime.jsxs)("div", {
90
+ className: `rf-flex rf-flex-row rf-w-full large:rf-pt-4 large:rf-pl-4 large-vertical:rf-pt-8 large-vertical:rf-pl-0 rf-justify-start large-vertical:rf-justify-center rf-items-end large:rf-items-center ${isMobile ? 'rf-py-2 rf-border-b rf-border-b-menuBorder' : ''}`,
91
+ children: [
92
+ /*#__PURE__*/ (0, $avS3e$reactjsxruntime.jsx)((0, $6GlMG.WeatherIcon), {
93
+ className: "rf-h-8 rf-w-8 large:rf-h-16 large:rf-w-16 large-vertical:rf-h-24 large-vertical:rf-w-24"
94
+ }),
95
+ /*#__PURE__*/ (0, $avS3e$reactjsxruntime.jsx)("div", {
96
+ className: "rf-ml-2 rf-capitalize large:rf-uppercase large:rf-text-[#575F6B] rf-subtitle-size-auto",
97
+ children: translation.weather.shorttitle
98
+ })
99
+ ]
95
100
  }),
96
101
  /*#__PURE__*/ (0, $avS3e$reactjsxruntime.jsx)((0, ($parcel$interopDefault($avS3e$daviairetorikweather))), {
97
102
  locale: locale,
@@ -114,38 +119,6 @@ const $becba6a72493aae8$var$Weather = ({ handleClose: handleClose })=>{
114
119
  var $becba6a72493aae8$export$2e2bcd8739ae039 = $becba6a72493aae8$var$Weather;
115
120
 
116
121
  });
117
- parcelRegister("aA7FU", function(module, exports) {
118
-
119
- $parcel$export(module.exports, "default", () => $5aac785fee9416e3$export$2e2bcd8739ae039);
120
-
121
-
122
-
123
-
124
- var $7WHA7 = parcelRequire("7WHA7");
125
-
126
- var $6GlMG = parcelRequire("6GlMG");
127
- const $5aac785fee9416e3$var$iconClassname = 'rf-h-16 rf-w-16 large-vertical:rf-h-24 large-vertical:rf-w-24';
128
- const $5aac785fee9416e3$var$LargeIconAndTitle = ({ subView: subView, className: className })=>{
129
- const translation = (0, $avS3e$reactredux.useSelector)((state)=>state.localeReducer.currentTranslations);
130
- return /*#__PURE__*/ (0, $avS3e$reactjsxruntime.jsxs)("div", {
131
- 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 ${className}`,
132
- children: [
133
- subView === (0, $7WHA7.AvailableViews).weather ? /*#__PURE__*/ (0, $avS3e$reactjsxruntime.jsx)($6GlMG.WeatherIcon, {
134
- className: $5aac785fee9416e3$var$iconClassname
135
- }) : subView === (0, $7WHA7.AvailableViews).emergency ? /*#__PURE__*/ (0, $avS3e$reactjsxruntime.jsx)($6GlMG.EmergencyIcon, {
136
- className: $5aac785fee9416e3$var$iconClassname
137
- }) : /*#__PURE__*/ (0, $avS3e$reactjsxruntime.jsx)((0, ($parcel$interopDefault($avS3e$react))).Fragment, {}),
138
- /*#__PURE__*/ (0, $avS3e$reactjsxruntime.jsx)("div", {
139
- className: "rf-ml-2 rf-uppercase rf-text-[#575F6B] rf-subtitle-size-auto",
140
- children: translation[subView]
141
- })
142
- ]
143
- });
144
- };
145
- var $5aac785fee9416e3$export$2e2bcd8739ae039 = $5aac785fee9416e3$var$LargeIconAndTitle;
146
-
147
- });
148
-
149
122
  parcelRegister("6tFNo", function(module, exports) {
150
123
 
151
124
  $parcel$export(module.exports, "default", () => $ca477ffba32efc70$export$2e2bcd8739ae039);
@@ -157,6 +130,7 @@ $parcel$export(module.exports, "default", () => $ca477ffba32efc70$export$2e2bcd8
157
130
  var $hQSgy = parcelRequire("hQSgy");
158
131
  const $ca477ffba32efc70$var$OpenMeteoAttribution = ()=>{
159
132
  const isUsedOnBorne = (0, $avS3e$reactredux.useSelector)((state)=>state.retorikReducer.configuration.isUsedOnBorne);
133
+ const translation = (0, $avS3e$reactredux.useSelector)((state)=>state.localeReducer.currentTranslations);
160
134
  const [qrCodeData, setQrCodeData] = (0, $avS3e$react.useState)();
161
135
  const [showQrCode, setShowQrCode] = (0, $avS3e$react.useState)(false);
162
136
  const setQrCodeDataAsync = async ()=>{
@@ -178,7 +152,7 @@ const $ca477ffba32efc70$var$OpenMeteoAttribution = ()=>{
178
152
  className: "rf-relative rf-text-sm hover:rf-cursor-pointer",
179
153
  onClick: handleClick,
180
154
  children: [
181
- "Weather data by Open-Meteo.com",
155
+ translation.weather.attribution,
182
156
  showQrCode && qrCodeData ? /*#__PURE__*/ (0, $avS3e$reactjsxruntime.jsx)("div", {
183
157
  className: "rf-absolute rf-left-1/2 rf-top-0 -rf-translate-x-1/2 -rf-translate-y-full",
184
158
  children: /*#__PURE__*/ (0, $avS3e$reactjsxruntime.jsx)((0, $hQSgy.default), {
@@ -192,7 +166,7 @@ const $ca477ffba32efc70$var$OpenMeteoAttribution = ()=>{
192
166
  target: "_blank",
193
167
  rel: "noreferrer noopener",
194
168
  className: "rf-text-sm",
195
- children: "Weather data by open-meteo.com"
169
+ children: translation.weather.attribution
196
170
  })
197
171
  });
198
172
  };
@@ -200,38 +174,6 @@ var $ca477ffba32efc70$export$2e2bcd8739ae039 = $ca477ffba32efc70$var$OpenMeteoAt
200
174
 
201
175
  });
202
176
 
203
- parcelRegister("bUTyR", function(module, exports) {
204
-
205
- $parcel$export(module.exports, "default", () => $5ec58a98f8a43d3b$export$2e2bcd8739ae039);
206
-
207
-
208
-
209
-
210
- var $7WHA7 = parcelRequire("7WHA7");
211
-
212
- var $6GlMG = parcelRequire("6GlMG");
213
- const $5ec58a98f8a43d3b$var$iconClassname = 'rf-h-8 rf-w-8';
214
- const $5ec58a98f8a43d3b$var$MobileIconAndTitle = ({ subView: subView, className: className })=>{
215
- const translation = (0, $avS3e$reactredux.useSelector)((state)=>state.localeReducer.currentTranslations);
216
- return /*#__PURE__*/ (0, $avS3e$reactjsxruntime.jsxs)("div", {
217
- className: `large:rf-hidden rf-py-2 rf-flex rf-flex-row rf-items-end ${className}`,
218
- children: [
219
- subView === (0, $7WHA7.AvailableViews).weather ? /*#__PURE__*/ (0, $avS3e$reactjsxruntime.jsx)($6GlMG.WeatherIcon, {
220
- className: $5ec58a98f8a43d3b$var$iconClassname
221
- }) : subView === (0, $7WHA7.AvailableViews).emergency ? /*#__PURE__*/ (0, $avS3e$reactjsxruntime.jsx)($6GlMG.EmergencyIcon, {
222
- className: $5ec58a98f8a43d3b$var$iconClassname
223
- }) : /*#__PURE__*/ (0, $avS3e$reactjsxruntime.jsx)((0, ($parcel$interopDefault($avS3e$react))).Fragment, {}),
224
- /*#__PURE__*/ (0, $avS3e$reactjsxruntime.jsx)("div", {
225
- className: "rf-ml-2 rf-capitalize rf-subtitle-size-auto",
226
- children: translation[subView]
227
- })
228
- ]
229
- });
230
- };
231
- var $5ec58a98f8a43d3b$export$2e2bcd8739ae039 = $5ec58a98f8a43d3b$var$MobileIconAndTitle;
232
-
233
- });
234
-
235
177
 
236
178
 
237
- //# sourceMappingURL=Weather.bb414852.js.map
179
+ //# sourceMappingURL=Weather.7e945307.js.map
@@ -0,0 +1 @@
1
+ {"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,MAAM,gCAAU,CAAC,eAAE,WAAW,EAAgB;QA0CxB,yBACC;IA1CrB,MAAM,WAAW,CAAA,GAAA,6BAAU;IAC3B,MAAM,SAAS,CAAA,GAAA,6BAAU,EAAE,CAAC,QAAqB,MAAM,aAAa,CAAC,MAAM;IAC3E,MAAM,cAAc,CAAA,GAAA,6BAAU,EAAE,CAAC,QAAqB,MAAM,aAAa,CAAC,mBAAmB;IAC7F,MAAM,gBAAgB,CAAA,GAAA,6BAAU,EAAE,CAAC,QAAqB,MAAM,cAAc,CAAC,aAAa;IAC1F,MAAM,oBAAoB,CAAA,GAAA,6BAAU,EAAE,CAAC,QAAqB,MAAM,WAAW,CAAC,iBAAiB;IAC/F,MAAM,WAAW,CAAA,GAAA,6BAAU,EAAE,CAAC,QAAqB,MAAM,WAAW,CAAC,QAAQ;IAE7E,CAAA,GAAA,4BAAc,EAAE;YACT,yBAAqC;QAA1C,IAAI,GAAC,0BAAA,cAAc,QAAQ,cAAtB,8CAAA,wBAAwB,QAAQ,KAAI,GAAC,2BAAA,cAAc,QAAQ,cAAtB,+CAAA,yBAAwB,SAAS,GAAE;YAC3E,SAAS,CAAA,GAAA,mBAAW,EAAE,OAAO,CAAC,oBAAoB,CAAC;YACnD,SAAS,CAAA,GAAA,mBAAW,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAA,GAAA,qBAAa,EAAE,IAAI;QACnE;IACF,GAAG;QAAC,cAAc,QAAQ;KAAC;IAE3B;;;GAGC,GACD,MAAM,aAAa;QACjB,SAAS,CAAA,GAAA,mBAAW,EAAE,UAAU,CAAC,SAAS,CAAC;YAAE,MAAM;YAAoB,UAAU,IAAM,SAAS,CAAA,GAAA,mBAAW,EAAE,UAAU,CAAC,SAAS,CAAC;oBAAE,MAAM;gBAA0B;QAAI;QACxK,cAAc,gBAAgB,SAAS,CAAA,GAAA,mBAAW,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAA,GAAA,qBAAa,EAAE,IAAI;IACjG;IAEA,qBACE,iCAAC,CAAA,GAAA,cAAa;QAAE,QAAQ,CAAA,GAAA,qBAAa,EAAE,OAAO;QAAE,SAAS;;0BACvD,iCAAC;gBAAI,WAAW,CAAC,wCAAwC,EAAE,WAAW,YAAY,mBAAmB;;kCAEnG,iCAAC;wBACC,WAAW,CAAC,6LAA6L,EAAE,WAAW,+CAA+C,IAAI;;0CAGzQ,gCAAC,CAAA,GAAA,kBAAU;gCAAE,WAAU;;0CAEvB,gCAAC;gCAAI,WAAU;0CAA0F,YAAY,OAAO,CAAC,UAAU;;;;kCAIzI,gCAAC,CAAA,GAAA,qDAAa;wBACZ,QAAQ;wBACR,YAAY;wBACZ,UAAU;4BACR,UAAU,EAAA,0BAAA,cAAc,QAAQ,cAAtB,8CAAA,wBAAwB,QAAQ,KAAI;4BAC9C,WAAW,EAAA,2BAAA,cAAc,QAAQ,cAAtB,+CAAA,yBAAwB,SAAS,KAAI;wBAClD;;kCAGF,gCAAC,CAAA,GAAA,cAAmB;;;YAIrB,CAAC,0BAAY,gCAAC,CAAA,GAAA,cAAyB;gBAAE,kBAAkB;gBAAM,SAAS;;;;AAGjF;IAEA,2CAAe;;;;;;;;;;;;AClEf,MAAM,6CAAuB;IAC3B,MAAM,gBAAgB,CAAA,GAAA,6BAAU,EAAE,CAAC,QAAqB,MAAM,cAAc,CAAC,aAAa,CAAC,aAAa;IACxG,MAAM,cAAc,CAAA,GAAA,6BAAU,EAAE,CAAC,QAAqB,MAAM,aAAa,CAAC,mBAAmB;IAC7F,MAAM,CAAC,YAAY,cAAc,GAAG,CAAA,GAAA,qBAAO;IAC3C,MAAM,CAAC,YAAY,cAAc,GAAG,CAAA,GAAA,qBAAO,EAAW;IAEtD,MAAM,qBAAqB;QACzB,MAAM,eAAe,MAAM,CAAA,GAAA,uCAAK,EAAE,SAAS,CAAC;QAC5C,cAAc;IAChB;IAEA,CAAA,GAAA,sBAAQ,EAAE;QACR,iBAAiB;IACnB,GAAG;QAAC;KAAc;IAElB,MAAM,cAAc;QAClB,cAAc,CAAC,UAAY,CAAC;IAC9B;IAEA,qBACE,gCAAC;QAAI,WAAU;kBACZ,8BACC,gCAAC,CAAA,GAAA,sCAAI,EAAE,QAAQ;sBACb,cAAA,iCAAC;gBAAI,WAAU;gBAAiD,SAAS;;oBACtE,YAAY,OAAO,CAAC,WAAW;oBAC/B,cAAc,2BACb,gCAAC;wBAAI,WAAU;kCACb,cAAA,gCAAC,CAAA,GAAA,cAAc;4BAAE,KAAK;;uCAGxB,gCAAC,CAAA,GAAA,sCAAI,EAAE,QAAQ;;;2BAKrB,gCAAC;YAAE,MAAK;YAA0B,QAAO;YAAS,KAAI;YAAsB,WAAU;sBACnF,YAAY,OAAO,CAAC,WAAW;;;AAK1C;IAEA,2CAAe","sources":["src/components/Weather/Weather.tsx","src/components/Weather/OpenMeteoAttribution.tsx"],"sourcesContent":["import React, { useLayoutEffect } from 'react'\r\nimport WeatherContent from '@davi-ai/retorik-weather'\r\nimport { useSelector, useDispatch } from 'react-redux'\r\nimport { RootState, storeActions } from '../../store'\r\n\r\nimport { CurrentSubView, TemplateTarget } from '../../models/enums'\r\n\r\nimport TemplateGlobal from '../Templates/TemplateGlobal'\r\nimport AbsoluteLargeClosingButton from '../Utils/SubView/AbsoluteLargeClosingButton'\r\nimport OpenMeteoAttribution from './OpenMeteoAttribution'\r\nimport { WeatherIcon } from '../Icons/ViewIcons'\r\n\r\ninterface WeatherProps {\r\n handleClose?: () => void\r\n}\r\n\r\nconst Weather = ({ handleClose }: WeatherProps): JSX.Element => {\r\n const dispatch = useDispatch()\r\n const locale = useSelector((state: RootState) => state.localeReducer.locale)\r\n const translation = useSelector((state: RootState) => state.localeReducer.currentTranslations)\r\n const configuration = useSelector((state: RootState) => state.retorikReducer.configuration)\r\n const currentDeviceType = useSelector((state: RootState) => state.viewReducer.currentDeviceType)\r\n const isMobile = useSelector((state: RootState) => state.viewReducer.isMobile)\r\n\r\n useLayoutEffect(() => {\r\n if (!configuration.position?.latitude || !configuration.position?.longitude) {\r\n dispatch(storeActions.retorik.setShowPositionModal(true))\r\n dispatch(storeActions.utils.setCurrentSubView(CurrentSubView.none))\r\n }\r\n }, [configuration.position])\r\n\r\n /**\r\n * On call :\r\n * - set RetorikContext's displayWeather state to false\r\n */\r\n const handleBack = (): void => {\r\n dispatch(storeActions.directline.sendEvent({ name: 'Davi.CloseWindow', callback: () => dispatch(storeActions.directline.sendEvent({ name: 'Davi.CloseWindowWeather' })) }))\r\n handleClose ? handleClose() : dispatch(storeActions.utils.setCurrentSubView(CurrentSubView.none))\r\n }\r\n\r\n return (\r\n <TemplateGlobal target={TemplateTarget.weather} onClick={handleBack}>\r\n <div className={`rf-h-full rf-w-full rf-flex rf-flex-col ${isMobile ? 'rf-px-4' : 'rf-items-center'}`}>\r\n {/* Weather icon + title */}\r\n <div\r\n className={`rf-flex rf-flex-row rf-w-full large:rf-pt-4 large:rf-pl-4 large-vertical:rf-pt-8 large-vertical:rf-pl-0 rf-justify-start large-vertical:rf-justify-center rf-items-end large:rf-items-center ${isMobile ? 'rf-py-2 rf-border-b rf-border-b-menuBorder' : ''}`}\r\n >\r\n {/* Icon */}\r\n <WeatherIcon className='rf-h-8 rf-w-8 large:rf-h-16 large:rf-w-16 large-vertical:rf-h-24 large-vertical:rf-w-24' />\r\n {/* Title */}\r\n <div className='rf-ml-2 rf-capitalize large:rf-uppercase large:rf-text-[#575F6B] rf-subtitle-size-auto'>{translation.weather.shorttitle}</div>\r\n </div>\r\n\r\n {/* Weather data */}\r\n <WeatherContent\r\n locale={locale}\r\n deviceType={currentDeviceType}\r\n position={{\r\n latitude: configuration.position?.latitude || 0,\r\n longitude: configuration.position?.longitude || 0\r\n }}\r\n />\r\n\r\n <OpenMeteoAttribution />\r\n </div>\r\n\r\n {/* Closing button */}\r\n {!isMobile && <AbsoluteLargeClosingButton dashboardVisible={true} onClick={handleBack} />}\r\n </TemplateGlobal>\r\n )\r\n}\r\n\r\nexport default Weather\r\n","import React, { useEffect, useState } from 'react'\r\nimport QRCode from 'qrcode'\r\nimport { useSelector } from 'react-redux'\r\nimport { RootState } from '../../store'\r\nimport QRCodeComponent from '../Utils/QRCodeComponent'\r\n\r\nconst OpenMeteoAttribution = (): JSX.Element => {\r\n const isUsedOnBorne = useSelector((state: RootState) => state.retorikReducer.configuration.isUsedOnBorne)\r\n const translation = useSelector((state: RootState) => state.localeReducer.currentTranslations)\r\n const [qrCodeData, setQrCodeData] = useState<string>()\r\n const [showQrCode, setShowQrCode] = useState<boolean>(false)\r\n\r\n const setQrCodeDataAsync = async (): Promise<void> => {\r\n const qrCodeString = await QRCode.toDataURL('https://open-meteo.com/')\r\n setQrCodeData(qrCodeString)\r\n }\r\n\r\n useEffect(() => {\r\n isUsedOnBorne && setQrCodeDataAsync()\r\n }, [isUsedOnBorne])\r\n\r\n const handleClick = (): void => {\r\n setShowQrCode((current) => !current)\r\n }\r\n\r\n return (\r\n <div className='rf-w-full rf-py-2 rf-flex rf-justify-center'>\r\n {isUsedOnBorne ? (\r\n <React.Fragment>\r\n <div className='rf-relative rf-text-sm hover:rf-cursor-pointer' onClick={handleClick}>\r\n {translation.weather.attribution}\r\n {showQrCode && qrCodeData ? (\r\n <div className='rf-absolute rf-left-1/2 rf-top-0 -rf-translate-x-1/2 -rf-translate-y-full'>\r\n <QRCodeComponent src={qrCodeData} />\r\n </div>\r\n ) : (\r\n <React.Fragment />\r\n )}\r\n </div>\r\n </React.Fragment>\r\n ) : (\r\n <a href='https://open-meteo.com/' target='_blank' rel='noreferrer noopener' className='rf-text-sm'>\r\n {translation.weather.attribution}\r\n </a>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nexport default OpenMeteoAttribution\r\n"],"names":[],"version":3,"file":"Weather.7e945307.js.map","sourceRoot":"../"}
@@ -32,16 +32,15 @@ var $4ucVo = parcelRequire("4ucVo");
32
32
 
33
33
  var $aMohu = parcelRequire("aMohu");
34
34
 
35
- var $fshO3 = parcelRequire("fshO3");
36
-
37
35
  var $9uOFS = parcelRequire("9uOFS");
38
36
 
39
37
  var $7suBk = parcelRequire("7suBk");
40
38
 
41
- var $iaKFs = parcelRequire("iaKFs");
39
+ var $41ZLl = parcelRequire("41ZLl");
42
40
  const $c2365f1c5aa7ab18$var$Weather = ({ handleClose: handleClose })=>{
43
41
  const dispatch = (0, $cCOLM$useDispatch)();
44
42
  const locale = (0, $cCOLM$useSelector)((state)=>state.localeReducer.locale);
43
+ const translation = (0, $cCOLM$useSelector)((state)=>state.localeReducer.currentTranslations);
45
44
  const configuration = (0, $cCOLM$useSelector)((state)=>state.retorikReducer.configuration);
46
45
  const currentDeviceType = (0, $cCOLM$useSelector)((state)=>state.viewReducer.currentDeviceType);
47
46
  const isMobile = (0, $cCOLM$useSelector)((state)=>state.viewReducer.isMobile);
@@ -72,11 +71,17 @@ const $c2365f1c5aa7ab18$var$Weather = ({ handleClose: handleClose })=>{
72
71
  /*#__PURE__*/ (0, $cCOLM$jsxs)("div", {
73
72
  className: `rf-h-full rf-w-full rf-flex rf-flex-col ${isMobile ? 'rf-px-4' : 'rf-items-center'}`,
74
73
  children: [
75
- isMobile ? /*#__PURE__*/ (0, $cCOLM$jsx)((0, $iaKFs.default), {
76
- subView: (0, $4ucVo.AvailableViews).weather,
77
- className: "rf-border-b rf-border-b-menuBorder"
78
- }) : /*#__PURE__*/ (0, $cCOLM$jsx)((0, $fshO3.default), {
79
- subView: (0, $4ucVo.AvailableViews).weather
74
+ /*#__PURE__*/ (0, $cCOLM$jsxs)("div", {
75
+ className: `rf-flex rf-flex-row rf-w-full large:rf-pt-4 large:rf-pl-4 large-vertical:rf-pt-8 large-vertical:rf-pl-0 rf-justify-start large-vertical:rf-justify-center rf-items-end large:rf-items-center ${isMobile ? 'rf-py-2 rf-border-b rf-border-b-menuBorder' : ''}`,
76
+ children: [
77
+ /*#__PURE__*/ (0, $cCOLM$jsx)((0, $41ZLl.WeatherIcon), {
78
+ className: "rf-h-8 rf-w-8 large:rf-h-16 large:rf-w-16 large-vertical:rf-h-24 large-vertical:rf-w-24"
79
+ }),
80
+ /*#__PURE__*/ (0, $cCOLM$jsx)("div", {
81
+ className: "rf-ml-2 rf-capitalize large:rf-uppercase large:rf-text-[#575F6B] rf-subtitle-size-auto",
82
+ children: translation.weather.shorttitle
83
+ })
84
+ ]
80
85
  }),
81
86
  /*#__PURE__*/ (0, $cCOLM$jsx)((0, $cCOLM$daviairetorikweather), {
82
87
  locale: locale,
@@ -99,38 +104,6 @@ const $c2365f1c5aa7ab18$var$Weather = ({ handleClose: handleClose })=>{
99
104
  var $c2365f1c5aa7ab18$export$2e2bcd8739ae039 = $c2365f1c5aa7ab18$var$Weather;
100
105
 
101
106
  });
102
- parcelRegister("fshO3", function(module, exports) {
103
-
104
- $parcel$export(module.exports, "default", () => $c0be9b86124f1061$export$2e2bcd8739ae039);
105
-
106
-
107
-
108
-
109
- var $4ucVo = parcelRequire("4ucVo");
110
-
111
- var $41ZLl = parcelRequire("41ZLl");
112
- const $c0be9b86124f1061$var$iconClassname = 'rf-h-16 rf-w-16 large-vertical:rf-h-24 large-vertical:rf-w-24';
113
- const $c0be9b86124f1061$var$LargeIconAndTitle = ({ subView: subView, className: className })=>{
114
- const translation = (0, $cCOLM$useSelector)((state)=>state.localeReducer.currentTranslations);
115
- return /*#__PURE__*/ (0, $cCOLM$jsxs)("div", {
116
- 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 ${className}`,
117
- children: [
118
- subView === (0, $4ucVo.AvailableViews).weather ? /*#__PURE__*/ (0, $cCOLM$jsx)($41ZLl.WeatherIcon, {
119
- className: $c0be9b86124f1061$var$iconClassname
120
- }) : subView === (0, $4ucVo.AvailableViews).emergency ? /*#__PURE__*/ (0, $cCOLM$jsx)($41ZLl.EmergencyIcon, {
121
- className: $c0be9b86124f1061$var$iconClassname
122
- }) : /*#__PURE__*/ (0, $cCOLM$jsx)((0, $cCOLM$react).Fragment, {}),
123
- /*#__PURE__*/ (0, $cCOLM$jsx)("div", {
124
- className: "rf-ml-2 rf-uppercase rf-text-[#575F6B] rf-subtitle-size-auto",
125
- children: translation[subView]
126
- })
127
- ]
128
- });
129
- };
130
- var $c0be9b86124f1061$export$2e2bcd8739ae039 = $c0be9b86124f1061$var$LargeIconAndTitle;
131
-
132
- });
133
-
134
107
  parcelRegister("7suBk", function(module, exports) {
135
108
 
136
109
  $parcel$export(module.exports, "default", () => $954e5588fc9f219b$export$2e2bcd8739ae039);
@@ -142,6 +115,7 @@ $parcel$export(module.exports, "default", () => $954e5588fc9f219b$export$2e2bcd8
142
115
  var $3mANd = parcelRequire("3mANd");
143
116
  const $954e5588fc9f219b$var$OpenMeteoAttribution = ()=>{
144
117
  const isUsedOnBorne = (0, $cCOLM$useSelector)((state)=>state.retorikReducer.configuration.isUsedOnBorne);
118
+ const translation = (0, $cCOLM$useSelector)((state)=>state.localeReducer.currentTranslations);
145
119
  const [qrCodeData, setQrCodeData] = (0, $cCOLM$useState)();
146
120
  const [showQrCode, setShowQrCode] = (0, $cCOLM$useState)(false);
147
121
  const setQrCodeDataAsync = async ()=>{
@@ -163,7 +137,7 @@ const $954e5588fc9f219b$var$OpenMeteoAttribution = ()=>{
163
137
  className: "rf-relative rf-text-sm hover:rf-cursor-pointer",
164
138
  onClick: handleClick,
165
139
  children: [
166
- "Weather data by Open-Meteo.com",
140
+ translation.weather.attribution,
167
141
  showQrCode && qrCodeData ? /*#__PURE__*/ (0, $cCOLM$jsx)("div", {
168
142
  className: "rf-absolute rf-left-1/2 rf-top-0 -rf-translate-x-1/2 -rf-translate-y-full",
169
143
  children: /*#__PURE__*/ (0, $cCOLM$jsx)((0, $3mANd.default), {
@@ -177,7 +151,7 @@ const $954e5588fc9f219b$var$OpenMeteoAttribution = ()=>{
177
151
  target: "_blank",
178
152
  rel: "noreferrer noopener",
179
153
  className: "rf-text-sm",
180
- children: "Weather data by open-meteo.com"
154
+ children: translation.weather.attribution
181
155
  })
182
156
  });
183
157
  };
@@ -185,38 +159,6 @@ var $954e5588fc9f219b$export$2e2bcd8739ae039 = $954e5588fc9f219b$var$OpenMeteoAt
185
159
 
186
160
  });
187
161
 
188
- parcelRegister("iaKFs", function(module, exports) {
189
-
190
- $parcel$export(module.exports, "default", () => $c34cf20fdff0eb66$export$2e2bcd8739ae039);
191
-
192
-
193
-
194
-
195
- var $4ucVo = parcelRequire("4ucVo");
196
-
197
- var $41ZLl = parcelRequire("41ZLl");
198
- const $c34cf20fdff0eb66$var$iconClassname = 'rf-h-8 rf-w-8';
199
- const $c34cf20fdff0eb66$var$MobileIconAndTitle = ({ subView: subView, className: className })=>{
200
- const translation = (0, $cCOLM$useSelector)((state)=>state.localeReducer.currentTranslations);
201
- return /*#__PURE__*/ (0, $cCOLM$jsxs)("div", {
202
- className: `large:rf-hidden rf-py-2 rf-flex rf-flex-row rf-items-end ${className}`,
203
- children: [
204
- subView === (0, $4ucVo.AvailableViews).weather ? /*#__PURE__*/ (0, $cCOLM$jsx)($41ZLl.WeatherIcon, {
205
- className: $c34cf20fdff0eb66$var$iconClassname
206
- }) : subView === (0, $4ucVo.AvailableViews).emergency ? /*#__PURE__*/ (0, $cCOLM$jsx)($41ZLl.EmergencyIcon, {
207
- className: $c34cf20fdff0eb66$var$iconClassname
208
- }) : /*#__PURE__*/ (0, $cCOLM$jsx)((0, $cCOLM$react).Fragment, {}),
209
- /*#__PURE__*/ (0, $cCOLM$jsx)("div", {
210
- className: "rf-ml-2 rf-capitalize rf-subtitle-size-auto",
211
- children: translation[subView]
212
- })
213
- ]
214
- });
215
- };
216
- var $c34cf20fdff0eb66$export$2e2bcd8739ae039 = $c34cf20fdff0eb66$var$MobileIconAndTitle;
217
-
218
- });
219
-
220
162
 
221
163
 
222
- //# sourceMappingURL=Weather.ced9b467.js.map
164
+ //# sourceMappingURL=Weather.e81b7205.js.map
@@ -0,0 +1 @@
1
+ {"mappings":"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","sources":["src/components/Weather/Weather.tsx","src/components/Weather/OpenMeteoAttribution.tsx"],"sourcesContent":["import React, { useLayoutEffect } from 'react'\r\nimport WeatherContent from '@davi-ai/retorik-weather'\r\nimport { useSelector, useDispatch } from 'react-redux'\r\nimport { RootState, storeActions } from '../../store'\r\n\r\nimport { CurrentSubView, TemplateTarget } from '../../models/enums'\r\n\r\nimport TemplateGlobal from '../Templates/TemplateGlobal'\r\nimport AbsoluteLargeClosingButton from '../Utils/SubView/AbsoluteLargeClosingButton'\r\nimport OpenMeteoAttribution from './OpenMeteoAttribution'\r\nimport { WeatherIcon } from '../Icons/ViewIcons'\r\n\r\ninterface WeatherProps {\r\n handleClose?: () => void\r\n}\r\n\r\nconst Weather = ({ handleClose }: WeatherProps): JSX.Element => {\r\n const dispatch = useDispatch()\r\n const locale = useSelector((state: RootState) => state.localeReducer.locale)\r\n const translation = useSelector((state: RootState) => state.localeReducer.currentTranslations)\r\n const configuration = useSelector((state: RootState) => state.retorikReducer.configuration)\r\n const currentDeviceType = useSelector((state: RootState) => state.viewReducer.currentDeviceType)\r\n const isMobile = useSelector((state: RootState) => state.viewReducer.isMobile)\r\n\r\n useLayoutEffect(() => {\r\n if (!configuration.position?.latitude || !configuration.position?.longitude) {\r\n dispatch(storeActions.retorik.setShowPositionModal(true))\r\n dispatch(storeActions.utils.setCurrentSubView(CurrentSubView.none))\r\n }\r\n }, [configuration.position])\r\n\r\n /**\r\n * On call :\r\n * - set RetorikContext's displayWeather state to false\r\n */\r\n const handleBack = (): void => {\r\n dispatch(storeActions.directline.sendEvent({ name: 'Davi.CloseWindow', callback: () => dispatch(storeActions.directline.sendEvent({ name: 'Davi.CloseWindowWeather' })) }))\r\n handleClose ? handleClose() : dispatch(storeActions.utils.setCurrentSubView(CurrentSubView.none))\r\n }\r\n\r\n return (\r\n <TemplateGlobal target={TemplateTarget.weather} onClick={handleBack}>\r\n <div className={`rf-h-full rf-w-full rf-flex rf-flex-col ${isMobile ? 'rf-px-4' : 'rf-items-center'}`}>\r\n {/* Weather icon + title */}\r\n <div\r\n className={`rf-flex rf-flex-row rf-w-full large:rf-pt-4 large:rf-pl-4 large-vertical:rf-pt-8 large-vertical:rf-pl-0 rf-justify-start large-vertical:rf-justify-center rf-items-end large:rf-items-center ${isMobile ? 'rf-py-2 rf-border-b rf-border-b-menuBorder' : ''}`}\r\n >\r\n {/* Icon */}\r\n <WeatherIcon className='rf-h-8 rf-w-8 large:rf-h-16 large:rf-w-16 large-vertical:rf-h-24 large-vertical:rf-w-24' />\r\n {/* Title */}\r\n <div className='rf-ml-2 rf-capitalize large:rf-uppercase large:rf-text-[#575F6B] rf-subtitle-size-auto'>{translation.weather.shorttitle}</div>\r\n </div>\r\n\r\n {/* Weather data */}\r\n <WeatherContent\r\n locale={locale}\r\n deviceType={currentDeviceType}\r\n position={{\r\n latitude: configuration.position?.latitude || 0,\r\n longitude: configuration.position?.longitude || 0\r\n }}\r\n />\r\n\r\n <OpenMeteoAttribution />\r\n </div>\r\n\r\n {/* Closing button */}\r\n {!isMobile && <AbsoluteLargeClosingButton dashboardVisible={true} onClick={handleBack} />}\r\n </TemplateGlobal>\r\n )\r\n}\r\n\r\nexport default Weather\r\n","import React, { useEffect, useState } from 'react'\r\nimport QRCode from 'qrcode'\r\nimport { useSelector } from 'react-redux'\r\nimport { RootState } from '../../store'\r\nimport QRCodeComponent from '../Utils/QRCodeComponent'\r\n\r\nconst OpenMeteoAttribution = (): JSX.Element => {\r\n const isUsedOnBorne = useSelector((state: RootState) => state.retorikReducer.configuration.isUsedOnBorne)\r\n const translation = useSelector((state: RootState) => state.localeReducer.currentTranslations)\r\n const [qrCodeData, setQrCodeData] = useState<string>()\r\n const [showQrCode, setShowQrCode] = useState<boolean>(false)\r\n\r\n const setQrCodeDataAsync = async (): Promise<void> => {\r\n const qrCodeString = await QRCode.toDataURL('https://open-meteo.com/')\r\n setQrCodeData(qrCodeString)\r\n }\r\n\r\n useEffect(() => {\r\n isUsedOnBorne && setQrCodeDataAsync()\r\n }, [isUsedOnBorne])\r\n\r\n const handleClick = (): void => {\r\n setShowQrCode((current) => !current)\r\n }\r\n\r\n return (\r\n <div className='rf-w-full rf-py-2 rf-flex rf-justify-center'>\r\n {isUsedOnBorne ? (\r\n <React.Fragment>\r\n <div className='rf-relative rf-text-sm hover:rf-cursor-pointer' onClick={handleClick}>\r\n {translation.weather.attribution}\r\n {showQrCode && qrCodeData ? (\r\n <div className='rf-absolute rf-left-1/2 rf-top-0 -rf-translate-x-1/2 -rf-translate-y-full'>\r\n <QRCodeComponent src={qrCodeData} />\r\n </div>\r\n ) : (\r\n <React.Fragment />\r\n )}\r\n </div>\r\n </React.Fragment>\r\n ) : (\r\n <a href='https://open-meteo.com/' target='_blank' rel='noreferrer noopener' className='rf-text-sm'>\r\n {translation.weather.attribution}\r\n </a>\r\n )}\r\n </div>\r\n )\r\n}\r\n\r\nexport default OpenMeteoAttribution\r\n"],"names":[],"version":3,"file":"Weather.e81b7205.js.map"}