@davi-ai/retorik-framework 4.0.4 → 5.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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.1112c09f.js → Emergency.43605d14.js} +11 -2
  11. package/dist/Emergency.43605d14.js.map +1 -0
  12. package/dist/{Emergency.d5810ff2.js → Emergency.f1287bd5.js} +11 -2
  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.d9de093c.js → NewsContainer.a39630c3.js} +33 -26
  31. package/dist/NewsContainer.a39630c3.js.map +1 -0
  32. package/dist/{NewsContainer.463e74de.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.f3bafdec.js → VeilleManager.0b3f2454.js} +11 -13
  51. package/dist/VeilleManager.0b3f2454.js.map +1 -0
  52. package/dist/{VeilleManager.85967e7c.js → VeilleManager.340a7825.js} +11 -13
  53. package/dist/VeilleManager.340a7825.js.map +1 -0
  54. package/dist/{Weather.7e945307.js → Weather.abc13d88.js} +9 -3
  55. package/dist/Weather.abc13d88.js.map +1 -0
  56. package/dist/{Weather.e81b7205.js → Weather.b9d9f82e.js} +9 -3
  57. package/dist/Weather.b9d9f82e.js.map +1 -0
  58. package/dist/index.d.ts +21 -951
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/index.js +52952 -33750
  61. package/dist/index.js.map +1 -1
  62. package/dist/index.modern.js +53468 -34269
  63. package/dist/index.modern.js.map +1 -1
  64. package/package.json +21 -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.1112c09f.js.map +0 -1
  70. package/dist/Emergency.d5810ff2.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.463e74de.js.map +0 -1
  78. package/dist/NewsContainer.d9de093c.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.85967e7c.js.map +0 -1
  82. package/dist/VeilleManager.f3bafdec.js.map +0 -1
  83. package/dist/Weather.7e945307.js.map +0 -1
  84. package/dist/Weather.e81b7205.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"mappings":"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","sources":["src/components/History/HistoryList.tsx","src/hooks/useMessageActivities.ts","src/components/History/HistoryItem.tsx","src/components/History/HistoryQA.tsx"],"sourcesContent":["import React, { useEffect, useRef } from 'react'\r\nimport { useSelector, useDispatch } from 'react-redux'\r\nimport { RootState, storeActions, CurrentSubView } from '../../store'\r\n\r\nimport useMessageActivities from '../../hooks/useMessageActivities'\r\nimport { TemplateTarget } from '../../models/enums'\r\nimport preventEvents from '../../utils/preventEvents'\r\nimport { capitalizeFirstLetter } from '../../utils/capitalizeFirstLetter'\r\n\r\nimport TemplateGlobal from '../Templates/TemplateGlobal'\r\nimport HistoryItem from './HistoryItem'\r\n\r\nconst HistoryList = (): React.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 isWidget = useSelector((state: RootState) => state.viewReducer.isWidget)\r\n const isBorne = useSelector((state: RootState) => state.viewReducer.isBorne)\r\n\r\n const activities = useMessageActivities()\r\n const scrollRef = useRef<HTMLDivElement>(null)\r\n const divRef = useRef<HTMLDivElement>(null)\r\n\r\n const scrollToRef = (): void => {\r\n if (scrollRef && scrollRef.current !== null) {\r\n scrollRef.current.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'nearest'\r\n })\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n setTimeout(() => {\r\n scrollToRef()\r\n }, 200)\r\n }, [])\r\n\r\n useEffect(() => {\r\n divRef?.current && isWidget && preventEvents(null, divRef)\r\n }, [divRef?.current])\r\n\r\n const handleClose = (): void => {\r\n dispatch(storeActions.utils.setCurrentSubView(CurrentSubView.none))\r\n dispatch(storeActions.directline.sendEvent({ name: 'Davi.CloseWindow', callback: () => dispatch(storeActions.directline.sendEvent({ name: 'Davi.CloseWindowHistory' })) }))\r\n dispatch(storeActions.livekit.sendEvent({ name: 'Davi.CloseWindow', callback: () => dispatch(storeActions.livekit.sendEvent({ name: 'Davi.CloseWindowHistory' })) }))\r\n }\r\n\r\n return (\r\n <TemplateGlobal onClick={handleClose} remote={true} target={TemplateTarget.history}>\r\n <div\r\n ref={divRef}\r\n className={`rf-h-full rf-flex rf-flex-col rf-pb-4 rf-px-4 large:rf-px-6 rf-overflow-y-scroll ${isBorne ? 'rf-mt-[25vh] rf-mb-[15vh] rf-scrollbar-thin' : 'rf-scrollbar-hidden'}`}\r\n >\r\n {/* Title */}\r\n <div className='rf-mb-6 rf-title-bold-size-auto'>{capitalizeFirstLetter(translation.history.title, locale)}</div>\r\n\r\n {/* History items */}\r\n {activities.map((activity, key) => {\r\n return <HistoryItem key={key} activity={activity} />\r\n })}\r\n <div ref={scrollRef} />\r\n </div>\r\n </TemplateGlobal>\r\n )\r\n}\r\n\r\nexport default HistoryList\r\n","import type { HistoryActivity, RetorikActivity } from '../store/models/activityTypes'\r\nimport { useSelector } from 'react-redux'\r\nimport { RootState } from '../store'\r\nimport { createNewQuestionForTimestamp } from '../utils/activityUtils'\r\n\r\nexport default function useMessageActivities(): Array<HistoryActivity> {\r\n const activities = useSelector((state: RootState) => state.activityReducer.messageActivities)\r\n // processedId contains the ids of the activities already processed (because useActivities gives duplicate activities with different state depending on if it's been spoken or not )\r\n const processedId: Array<string> = []\r\n const history: HistoryActivity[] = []\r\n\r\n activities.forEach((activity) => {\r\n if (activity.id && !processedId.includes(activity.id)) {\r\n processedId.push(activity.id)\r\n // Check if this is a question or an answer (questions from the user don't have a replyToId field)\r\n if (activity.replyToId) {\r\n const question: HistoryActivity | undefined = history.find((historyItem) => historyItem.question.id === activity.replyToId)\r\n if (question) {\r\n question.answers.push(activity)\r\n } else {\r\n const newQuestion: RetorikActivity = createNewQuestionForTimestamp(activity)\r\n\r\n history.push({\r\n question: newQuestion,\r\n answers: [activity]\r\n })\r\n }\r\n } else {\r\n if ((activity as RetorikActivity).label === 'Davi.BringupMessage' && (activity as RetorikActivity).text) {\r\n const newQuestion: RetorikActivity = createNewQuestionForTimestamp(activity)\r\n history.push({\r\n question: newQuestion,\r\n answers: [activity]\r\n })\r\n } else {\r\n history.push({\r\n question: activity,\r\n answers: []\r\n })\r\n }\r\n }\r\n }\r\n })\r\n\r\n return history\r\n}\r\n","import React from 'react'\r\nimport type { HistoryActivity } from '../../store/models/activityTypes'\r\nimport HistoryQA from './HistoryQA'\r\n\r\ninterface HistoryItemProps {\r\n activity: HistoryActivity\r\n}\r\n\r\nconst HistoryItem = ({ activity }: HistoryItemProps): React.JSX.Element => {\r\n return (\r\n <div className='rf-mb-4 rf-flex rf-flex-col rf-justify-start rf-items-start rf-gap-4 rf-text-size-auto'>\r\n {/* Question */}\r\n {activity?.question && activity.question.type === 'message' && (\r\n <HistoryQA activity={activity.question} isQuestion={true} />\r\n )}\r\n\r\n {/* Answers */}\r\n {activity.answers.map((answer, j) => {\r\n return answer.type === 'message' ? (\r\n <HistoryQA key={j} activity={answer} isQuestion={false} />\r\n ) : (\r\n <React.Fragment />\r\n )\r\n })}\r\n </div>\r\n )\r\n}\r\n\r\nexport default HistoryItem\r\n","import React from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { RootState } from '../../store'\r\nimport type { RetorikActivity } from '../../store/models/activityTypes'\r\nimport { getTextWithoutSpeechMarkdown } from '../../utils/speechMarkdownUtils'\r\nimport Attachments from '../Attachments/Attachments'\r\n\r\ninterface HistoryQAProps {\r\n activity: RetorikActivity\r\n isQuestion: boolean\r\n}\r\n\r\nconst HistoryQA = ({ activity, isQuestion }: HistoryQAProps): React.JSX.Element => {\r\n const locale = useSelector((state: RootState) => state.localeReducer.locale)\r\n const time = activity.localTimestamp ? new Date(activity.localTimestamp) : activity.timestamp ? new Date(activity.timestamp) : new Date()\r\n\r\n return activity.text || !!activity.attachments?.length ? (\r\n <div className='rf-w-full rf-flex rf-flex-col rf-gap-1'>\r\n {/* Time */}\r\n <div className='rf-text-[#9A9A9A]'>\r\n {time.toLocaleString(locale, {\r\n hour: 'numeric',\r\n minute: 'numeric'\r\n })}\r\n </div>\r\n\r\n {/* Question or Answer */}\r\n <div className={`${isQuestion ? 'rf-text-secondary' : 'rf-text-textModePanelConversationBot'}`}>\r\n {activity.htmlText ? (\r\n <div\r\n dangerouslySetInnerHTML={{\r\n __html: activity.htmlText\r\n }}\r\n />\r\n ) : activity.text ? (\r\n getTextWithoutSpeechMarkdown(activity.text)\r\n ) : (\r\n ''\r\n )}\r\n {/* Display attachments if there are some and the display mode wasn't a list */}\r\n {!!activity.attachments?.length && !(activity.attachmentLayout && activity.attachmentLayout.toLowerCase() === 'davilist') && (\r\n <div className={`rf-w-full rf-min-h-16 rf-overflow-x-hidden rf-overflow-y-auto ${activity.text && 'rf-pt-4'}`}>\r\n <Attachments activity={activity} history={true} />\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n ) : (\r\n <React.Fragment />\r\n )\r\n}\r\n\r\nexport default HistoryQA\r\n"],"names":[],"version":3,"file":"HistoryList.e7262d62.js.map"}
@@ -46,14 +46,22 @@ const $4545a6dcb65287bd$var$LanguageChoice = ()=>{
46
46
  const skipWelcome = (0, $9NOUt$useSelector)((state)=>state.retorikReducer.configuration.skipWelcome);
47
47
  const [currentLanguage, setCurrentLanguage] = (0, $9NOUt$useState)(locale);
48
48
  const handleClose = (changed)=>{
49
- dispatch((0, $8ItUL.storeActions).utils.setCurrentSubView((0, $4ucVo.CurrentSubView).none));
49
+ dispatch((0, $8ItUL.storeActions).utils.setCurrentSubView((0, $8ItUL.CurrentSubView).none));
50
50
  // Only send events when language has not been changed, either way it will collide with the TriggerWelcome event
51
- if (!changed) dispatch((0, $8ItUL.storeActions).directline.sendEvent({
52
- name: 'Davi.CloseWindow',
53
- callback: ()=>dispatch((0, $8ItUL.storeActions).directline.sendEvent({
54
- name: 'Davi.CloseWindowLanguages'
55
- }))
56
- }));
51
+ if (!changed) {
52
+ dispatch((0, $8ItUL.storeActions).directline.sendEvent({
53
+ name: 'Davi.CloseWindow',
54
+ callback: ()=>dispatch((0, $8ItUL.storeActions).directline.sendEvent({
55
+ name: 'Davi.CloseWindowLanguages'
56
+ }))
57
+ }));
58
+ dispatch((0, $8ItUL.storeActions).livekit.sendEvent({
59
+ name: 'Davi.CloseWindow',
60
+ callback: ()=>dispatch((0, $8ItUL.storeActions).livekit.sendEvent({
61
+ name: 'Davi.CloseWindowLanguages'
62
+ }))
63
+ }));
64
+ }
57
65
  };
58
66
  const handleChange = (language)=>{
59
67
  setCurrentLanguage(language);
@@ -70,6 +78,9 @@ const $4545a6dcb65287bd$var$LanguageChoice = ()=>{
70
78
  dispatch((0, $8ItUL.storeActions).directline.sendEvent({
71
79
  name: 'TriggerWelcome'
72
80
  }));
81
+ dispatch((0, $8ItUL.storeActions).livekit.sendEvent({
82
+ name: 'TriggerWelcome'
83
+ }));
73
84
  }, 150);
74
85
  }
75
86
  handleClose(changed);
@@ -116,4 +127,4 @@ var $4545a6dcb65287bd$export$2e2bcd8739ae039 = $4545a6dcb65287bd$var$LanguageCho
116
127
  });
117
128
 
118
129
 
119
- //# sourceMappingURL=LanguageChoice.1d866cfa.js.map
130
+ //# sourceMappingURL=LanguageChoice.54fae1dc.js.map
@@ -0,0 +1 @@
1
+ {"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,MAAM,uCAAiB;IACrB,MAAM,WAAW,CAAA,GAAA,kBAAU;IAC3B,MAAM,SAAS,CAAA,GAAA,kBAAU,EAAE,CAAC,QAAqB,MAAM,aAAa,CAAC,MAAM;IAC3E,MAAM,cAAc,CAAA,GAAA,kBAAU,EAAE,CAAC,QAAqB,MAAM,aAAa,CAAC,mBAAmB;IAC7F,MAAM,YAAY,CAAA,GAAA,kBAAU,EAAE,CAAC,QAAqB,MAAM,aAAa,CAAC,SAAS;IACjF,MAAM,cAAc,CAAA,GAAA,kBAAU,EAAE,CAAC,QAAqB,MAAM,cAAc,CAAC,aAAa,CAAC,WAAW;IAEpG,MAAM,CAAC,iBAAiB,mBAAmB,GAAG,CAAA,GAAA,eAAO,EAAU;IAE/D,MAAM,cAAc,CAAC;QACnB,SAAS,CAAA,GAAA,mBAAW,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAA,GAAA,qBAAa,EAAE,IAAI;QAEjE,gHAAgH;QAChH,IAAI,CAAC,SAAS;YACZ,SAAS,CAAA,GAAA,mBAAW,EAAE,UAAU,CAAC,SAAS,CAAC;gBAAE,MAAM;gBAAoB,UAAU,IAAM,SAAS,CAAA,GAAA,mBAAW,EAAE,UAAU,CAAC,SAAS,CAAC;wBAAE,MAAM;oBAA4B;YAAI;YAC1K,SAAS,CAAA,GAAA,mBAAW,EAAE,OAAO,CAAC,SAAS,CAAC;gBAAE,MAAM;gBAAoB,UAAU,IAAM,SAAS,CAAA,GAAA,mBAAW,EAAE,OAAO,CAAC,SAAS,CAAC;wBAAE,MAAM;oBAA4B;YAAI;QACtK;IACF;IAEA,MAAM,eAAe,CAAC;QACpB,mBAAmB;IACrB;IAEA;;;;GAIC,GACD,MAAM,eAAe,CAAC;QACpB,MAAM,UAAU,aAAa;QAC7B,IAAI,SAAS;YACX,SAAS,CAAA,GAAA,mBAAW,EAAE,MAAM,CAAC,SAAS,CAAC;YACvC,CAAC,eACC,WAAW;gBACT,SAAS,CAAA,GAAA,mBAAW,EAAE,UAAU,CAAC,SAAS,CAAC;oBAAE,MAAM;gBAAiB;gBACpE,SAAS,CAAA,GAAA,mBAAW,EAAE,OAAO,CAAC,SAAS,CAAC;oBAAE,MAAM;gBAAiB;YACnE,GAAG;QACP;QAEA,YAAY;IACd;IAEA,qBACE,gBAAC,CAAA,GAAA,cAAa;QAAE,SAAS,IAAM,YAAY;QAAQ,QAAQ;QAAM,QAAQ,CAAA,GAAA,qBAAa,EAAE,SAAS;kBAC/F,cAAA,iBAAC;YAAI,WAAU;;8BAEb,gBAAC;oBAAI,WAAU;8BAAwC,CAAA,GAAA,4BAAoB,EAAE,YAAY,QAAQ,CAAC,MAAM,EAAE;;8BAG1G,gBAAC;oBAAI,WAAU;8BAAqC,CAAA,GAAA,4BAAoB,EAAE,YAAY,QAAQ,CAAC,MAAM,EAAE;;gBAGtG,UAAU,GAAG,CAAC,CAAC,UAAU;oBACxB,qBACE,gBAAC;wBAAc,WAAW,CAAC,qDAAqD,EAAE,QAAQ,KAAK,uBAAuB;kCACpH,cAAA,gBAAC,CAAA,GAAA,YAAI;4BAAE,OAAO,CAAA,GAAA,6CAAqB,CAAC,CAAC,SAAS;4BAAE,SAAS,aAAa;4BAAiB,cAAc,IAAY,aAAa;;uBADtH;gBAId;8BAGA,gBAAC;oBAAI,WAAU;8BACb,cAAA,gBAAC;wBAAO,WAAU;wBAA+F,SAAS,IAAY,aAAa;kCAChJ,CAAA,GAAA,4BAAoB,EAAE,YAAY,MAAM,CAAC,QAAQ,EAAE;;;;;;AAMhE;IAEA,2CAAe","sources":["src/components/Language/LanguageChoice.tsx"],"sourcesContent":["import React, { useState } from 'react'\r\nimport { useSelector, useDispatch } from 'react-redux'\r\nimport { RootState, storeActions, CurrentSubView } from '../../store'\r\n\r\nimport languageInMotherTongue from '../../translations/languageCodeToMotherTongue.json'\r\nimport { TemplateTarget } from '../../models/enums'\r\nimport { capitalizeFirstLetter } from '../../utils/capitalizeFirstLetter'\r\n\r\nimport TemplateGlobal from '../Templates/TemplateGlobal'\r\nimport { Radio } from '../Utils'\r\n\r\nconst LanguageChoice = (): React.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 supported = useSelector((state: RootState) => state.localeReducer.supported)\r\n const skipWelcome = useSelector((state: RootState) => state.retorikReducer.configuration.skipWelcome)\r\n\r\n const [currentLanguage, setCurrentLanguage] = useState<string>(locale)\r\n\r\n const handleClose = (changed?: boolean): void => {\r\n dispatch(storeActions.utils.setCurrentSubView(CurrentSubView.none))\r\n\r\n // Only send events when language has not been changed, either way it will collide with the TriggerWelcome event\r\n if (!changed) {\r\n dispatch(storeActions.directline.sendEvent({ name: 'Davi.CloseWindow', callback: () => dispatch(storeActions.directline.sendEvent({ name: 'Davi.CloseWindowLanguages' })) }))\r\n dispatch(storeActions.livekit.sendEvent({ name: 'Davi.CloseWindow', callback: () => dispatch(storeActions.livekit.sendEvent({ name: 'Davi.CloseWindowLanguages' })) }))\r\n }\r\n }\r\n\r\n const handleChange = (language: string): void => {\r\n setCurrentLanguage(language)\r\n }\r\n\r\n /**\r\n * Change current locale with the one selected if they are different.\r\n * Send a 'TriggerWelcome' event to get the welcome message in the new language.\r\n * @param language string\r\n */\r\n const handleSelect = (language: string): void => {\r\n const changed = language !== locale\r\n if (changed) {\r\n dispatch(storeActions.locale.setLocale(language))\r\n !skipWelcome &&\r\n setTimeout(() => {\r\n dispatch(storeActions.directline.sendEvent({ name: 'TriggerWelcome' }))\r\n dispatch(storeActions.livekit.sendEvent({ name: 'TriggerWelcome' }))\r\n }, 150)\r\n }\r\n\r\n handleClose(changed)\r\n }\r\n\r\n return (\r\n <TemplateGlobal onClick={() => handleClose(false)} remote={true} target={TemplateTarget.languages}>\r\n <div className='rf-h-full rf-flex rf-flex-col rf-justify-center rf-px-4 large:rf-px-6'>\r\n {/* Title */}\r\n <div className='rf-title-bold-size-auto rf-font-bold'>{capitalizeFirstLetter(translation.language.change, locale)}</div>\r\n\r\n {/* Subtitle */}\r\n <div className='rf-text-lightgray rf-pt-1 rf-pb-2'>{capitalizeFirstLetter(translation.language.select, locale)}</div>\r\n\r\n {/* Languages */}\r\n {supported.map((language, key) => {\r\n return (\r\n <div key={key} className={`rf-w-full rf-py-4 rf-border-t rf-border-t-menuBorder ${key === 0 && 'large:rf-border-t-0'}`}>\r\n <Radio title={languageInMotherTongue[language]} checked={language === currentLanguage} handleChange={(): void => handleChange(language)} />\r\n </div>\r\n )\r\n })}\r\n\r\n {/* Validation button */}\r\n <div className='rf-w-full rf-mt-8 rf-flex rf-justify-center'>\r\n <button className='rf-px-8 rf-py-3 rf-text-secondary rf-font-bold rf-border-2 rf-border-secondary rf-rounded-lg' onClick={(): void => handleSelect(currentLanguage)}>\r\n {capitalizeFirstLetter(translation.common.validate, locale)}\r\n </button>\r\n </div>\r\n </div>\r\n </TemplateGlobal>\r\n )\r\n}\r\n\r\nexport default LanguageChoice\r\n"],"names":[],"version":3,"file":"LanguageChoice.54fae1dc.js.map"}
@@ -55,14 +55,22 @@ const $6bd994e5ef61a032$var$LanguageChoice = ()=>{
55
55
  const skipWelcome = (0, $381Go$reactredux.useSelector)((state)=>state.retorikReducer.configuration.skipWelcome);
56
56
  const [currentLanguage, setCurrentLanguage] = (0, $381Go$react.useState)(locale);
57
57
  const handleClose = (changed)=>{
58
- dispatch((0, $kpW3P.storeActions).utils.setCurrentSubView((0, $7WHA7.CurrentSubView).none));
58
+ dispatch((0, $kpW3P.storeActions).utils.setCurrentSubView((0, $kpW3P.CurrentSubView).none));
59
59
  // Only send events when language has not been changed, either way it will collide with the TriggerWelcome event
60
- if (!changed) dispatch((0, $kpW3P.storeActions).directline.sendEvent({
61
- name: 'Davi.CloseWindow',
62
- callback: ()=>dispatch((0, $kpW3P.storeActions).directline.sendEvent({
63
- name: 'Davi.CloseWindowLanguages'
64
- }))
65
- }));
60
+ if (!changed) {
61
+ dispatch((0, $kpW3P.storeActions).directline.sendEvent({
62
+ name: 'Davi.CloseWindow',
63
+ callback: ()=>dispatch((0, $kpW3P.storeActions).directline.sendEvent({
64
+ name: 'Davi.CloseWindowLanguages'
65
+ }))
66
+ }));
67
+ dispatch((0, $kpW3P.storeActions).livekit.sendEvent({
68
+ name: 'Davi.CloseWindow',
69
+ callback: ()=>dispatch((0, $kpW3P.storeActions).livekit.sendEvent({
70
+ name: 'Davi.CloseWindowLanguages'
71
+ }))
72
+ }));
73
+ }
66
74
  };
67
75
  const handleChange = (language)=>{
68
76
  setCurrentLanguage(language);
@@ -79,6 +87,9 @@ const $6bd994e5ef61a032$var$LanguageChoice = ()=>{
79
87
  dispatch((0, $kpW3P.storeActions).directline.sendEvent({
80
88
  name: 'TriggerWelcome'
81
89
  }));
90
+ dispatch((0, $kpW3P.storeActions).livekit.sendEvent({
91
+ name: 'TriggerWelcome'
92
+ }));
82
93
  }, 150);
83
94
  }
84
95
  handleClose(changed);
@@ -125,4 +136,4 @@ var $6bd994e5ef61a032$export$2e2bcd8739ae039 = $6bd994e5ef61a032$var$LanguageCho
125
136
  });
126
137
 
127
138
 
128
- //# sourceMappingURL=LanguageChoice.cce361a3.js.map
139
+ //# sourceMappingURL=LanguageChoice.6e8b74f6.js.map
@@ -0,0 +1 @@
1
+ {"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,MAAM,uCAAiB;IACrB,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,YAAY,CAAA,GAAA,6BAAU,EAAE,CAAC,QAAqB,MAAM,aAAa,CAAC,SAAS;IACjF,MAAM,cAAc,CAAA,GAAA,6BAAU,EAAE,CAAC,QAAqB,MAAM,cAAc,CAAC,aAAa,CAAC,WAAW;IAEpG,MAAM,CAAC,iBAAiB,mBAAmB,GAAG,CAAA,GAAA,qBAAO,EAAU;IAE/D,MAAM,cAAc,CAAC;QACnB,SAAS,CAAA,GAAA,mBAAW,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAA,GAAA,qBAAa,EAAE,IAAI;QAEjE,gHAAgH;QAChH,IAAI,CAAC,SAAS;YACZ,SAAS,CAAA,GAAA,mBAAW,EAAE,UAAU,CAAC,SAAS,CAAC;gBAAE,MAAM;gBAAoB,UAAU,IAAM,SAAS,CAAA,GAAA,mBAAW,EAAE,UAAU,CAAC,SAAS,CAAC;wBAAE,MAAM;oBAA4B;YAAI;YAC1K,SAAS,CAAA,GAAA,mBAAW,EAAE,OAAO,CAAC,SAAS,CAAC;gBAAE,MAAM;gBAAoB,UAAU,IAAM,SAAS,CAAA,GAAA,mBAAW,EAAE,OAAO,CAAC,SAAS,CAAC;wBAAE,MAAM;oBAA4B;YAAI;QACtK;IACF;IAEA,MAAM,eAAe,CAAC;QACpB,mBAAmB;IACrB;IAEA;;;;GAIC,GACD,MAAM,eAAe,CAAC;QACpB,MAAM,UAAU,aAAa;QAC7B,IAAI,SAAS;YACX,SAAS,CAAA,GAAA,mBAAW,EAAE,MAAM,CAAC,SAAS,CAAC;YACvC,CAAC,eACC,WAAW;gBACT,SAAS,CAAA,GAAA,mBAAW,EAAE,UAAU,CAAC,SAAS,CAAC;oBAAE,MAAM;gBAAiB;gBACpE,SAAS,CAAA,GAAA,mBAAW,EAAE,OAAO,CAAC,SAAS,CAAC;oBAAE,MAAM;gBAAiB;YACnE,GAAG;QACP;QAEA,YAAY;IACd;IAEA,qBACE,gCAAC,CAAA,GAAA,cAAa;QAAE,SAAS,IAAM,YAAY;QAAQ,QAAQ;QAAM,QAAQ,CAAA,GAAA,qBAAa,EAAE,SAAS;kBAC/F,cAAA,iCAAC;YAAI,WAAU;;8BAEb,gCAAC;oBAAI,WAAU;8BAAwC,CAAA,GAAA,4BAAoB,EAAE,YAAY,QAAQ,CAAC,MAAM,EAAE;;8BAG1G,gCAAC;oBAAI,WAAU;8BAAqC,CAAA,GAAA,4BAAoB,EAAE,YAAY,QAAQ,CAAC,MAAM,EAAE;;gBAGtG,UAAU,GAAG,CAAC,CAAC,UAAU;oBACxB,qBACE,gCAAC;wBAAc,WAAW,CAAC,qDAAqD,EAAE,QAAQ,KAAK,uBAAuB;kCACpH,cAAA,gCAAC,CAAA,GAAA,YAAI;4BAAE,OAAO,CAAA,GAAA,6CAAqB,CAAC,CAAC,SAAS;4BAAE,SAAS,aAAa;4BAAiB,cAAc,IAAY,aAAa;;uBADtH;gBAId;8BAGA,gCAAC;oBAAI,WAAU;8BACb,cAAA,gCAAC;wBAAO,WAAU;wBAA+F,SAAS,IAAY,aAAa;kCAChJ,CAAA,GAAA,4BAAoB,EAAE,YAAY,MAAM,CAAC,QAAQ,EAAE;;;;;;AAMhE;IAEA,2CAAe","sources":["src/components/Language/LanguageChoice.tsx"],"sourcesContent":["import React, { useState } from 'react'\r\nimport { useSelector, useDispatch } from 'react-redux'\r\nimport { RootState, storeActions, CurrentSubView } from '../../store'\r\n\r\nimport languageInMotherTongue from '../../translations/languageCodeToMotherTongue.json'\r\nimport { TemplateTarget } from '../../models/enums'\r\nimport { capitalizeFirstLetter } from '../../utils/capitalizeFirstLetter'\r\n\r\nimport TemplateGlobal from '../Templates/TemplateGlobal'\r\nimport { Radio } from '../Utils'\r\n\r\nconst LanguageChoice = (): React.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 supported = useSelector((state: RootState) => state.localeReducer.supported)\r\n const skipWelcome = useSelector((state: RootState) => state.retorikReducer.configuration.skipWelcome)\r\n\r\n const [currentLanguage, setCurrentLanguage] = useState<string>(locale)\r\n\r\n const handleClose = (changed?: boolean): void => {\r\n dispatch(storeActions.utils.setCurrentSubView(CurrentSubView.none))\r\n\r\n // Only send events when language has not been changed, either way it will collide with the TriggerWelcome event\r\n if (!changed) {\r\n dispatch(storeActions.directline.sendEvent({ name: 'Davi.CloseWindow', callback: () => dispatch(storeActions.directline.sendEvent({ name: 'Davi.CloseWindowLanguages' })) }))\r\n dispatch(storeActions.livekit.sendEvent({ name: 'Davi.CloseWindow', callback: () => dispatch(storeActions.livekit.sendEvent({ name: 'Davi.CloseWindowLanguages' })) }))\r\n }\r\n }\r\n\r\n const handleChange = (language: string): void => {\r\n setCurrentLanguage(language)\r\n }\r\n\r\n /**\r\n * Change current locale with the one selected if they are different.\r\n * Send a 'TriggerWelcome' event to get the welcome message in the new language.\r\n * @param language string\r\n */\r\n const handleSelect = (language: string): void => {\r\n const changed = language !== locale\r\n if (changed) {\r\n dispatch(storeActions.locale.setLocale(language))\r\n !skipWelcome &&\r\n setTimeout(() => {\r\n dispatch(storeActions.directline.sendEvent({ name: 'TriggerWelcome' }))\r\n dispatch(storeActions.livekit.sendEvent({ name: 'TriggerWelcome' }))\r\n }, 150)\r\n }\r\n\r\n handleClose(changed)\r\n }\r\n\r\n return (\r\n <TemplateGlobal onClick={() => handleClose(false)} remote={true} target={TemplateTarget.languages}>\r\n <div className='rf-h-full rf-flex rf-flex-col rf-justify-center rf-px-4 large:rf-px-6'>\r\n {/* Title */}\r\n <div className='rf-title-bold-size-auto rf-font-bold'>{capitalizeFirstLetter(translation.language.change, locale)}</div>\r\n\r\n {/* Subtitle */}\r\n <div className='rf-text-lightgray rf-pt-1 rf-pb-2'>{capitalizeFirstLetter(translation.language.select, locale)}</div>\r\n\r\n {/* Languages */}\r\n {supported.map((language, key) => {\r\n return (\r\n <div key={key} className={`rf-w-full rf-py-4 rf-border-t rf-border-t-menuBorder ${key === 0 && 'large:rf-border-t-0'}`}>\r\n <Radio title={languageInMotherTongue[language]} checked={language === currentLanguage} handleChange={(): void => handleChange(language)} />\r\n </div>\r\n )\r\n })}\r\n\r\n {/* Validation button */}\r\n <div className='rf-w-full rf-mt-8 rf-flex rf-justify-center'>\r\n <button className='rf-px-8 rf-py-3 rf-text-secondary rf-font-bold rf-border-2 rf-border-secondary rf-rounded-lg' onClick={(): void => handleSelect(currentLanguage)}>\r\n {capitalizeFirstLetter(translation.common.validate, locale)}\r\n </button>\r\n </div>\r\n </div>\r\n </TemplateGlobal>\r\n )\r\n}\r\n\r\nexport default LanguageChoice\r\n"],"names":[],"version":3,"file":"LanguageChoice.6e8b74f6.js.map","sourceRoot":"../"}
@@ -1 +1 @@
1
- {"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,MAAM,+CAAyB;IAC7B,MAAM,WAAW,CAAA,GAAA,6BAAU,EAAE,CAAC,QAAqB,MAAM,cAAc,CAAC,aAAa,CAAC,QAAQ;IAE9F,OAAO,CAAA,qBAAA,+BAAA,SAAU,QAAQ,KAAI,SAAS,SAAS,iBAC7C,gCAAC;QAAI,WAAU;kBACb,cAAA,gCAAC,CAAA,GAAA,yCAAY;YACX,UAAU;gBACR,QAAQ,EAAE,qBAAA,+BAAA,SAAU,QAAQ;gBAC5B,WAAW,SAAS,SAAS;YAC/B;;uBAIJ,gCAAC,CAAA,GAAA,sCAAI,EAAE,QAAQ;AAEnB;IAEA,2CAAe","sources":["src/components/Weather/LittleWeatherContainer.tsx"],"sourcesContent":["import React from 'react'\r\n// @ts-ignore\r\nimport { LittleWeather } from '@davi-ai/retorik-weather'\r\nimport { useSelector } from 'react-redux'\r\nimport { RootState } from '../../store'\r\n\r\nconst LittleWeatherContainer = (): JSX.Element => {\r\n const position = useSelector((state: RootState) => state.retorikReducer.configuration.position)\r\n\r\n return position?.latitude && position.longitude ? (\r\n <div className='rf-absolute rf-top-8 rf-right-12'>\r\n <LittleWeather\r\n position={{\r\n latitude: position?.latitude,\r\n longitude: position.longitude\r\n }}\r\n />\r\n </div>\r\n ) : (\r\n <React.Fragment />\r\n )\r\n}\r\n\r\nexport default LittleWeatherContainer\r\n"],"names":[],"version":3,"file":"LittleWeatherContainer.7e41105e.js.map","sourceRoot":"../"}
1
+ {"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,MAAM,+CAAyB;IAC7B,MAAM,WAAW,CAAA,GAAA,6BAAU,EAAE,CAAC,QAAqB,MAAM,cAAc,CAAC,aAAa,CAAC,QAAQ;IAE9F,OAAO,CAAA,qBAAA,+BAAA,SAAU,QAAQ,KAAI,SAAS,SAAS,iBAC7C,gCAAC;QAAI,WAAU;kBACb,cAAA,gCAAC,CAAA,GAAA,yCAAY;YACX,UAAU;gBACR,QAAQ,EAAE,qBAAA,+BAAA,SAAU,QAAQ;gBAC5B,WAAW,SAAS,SAAS;YAC/B;;uBAIJ,gCAAC,CAAA,GAAA,sCAAI,EAAE,QAAQ;AAEnB;IAEA,2CAAe","sources":["src/components/Weather/LittleWeatherContainer.tsx"],"sourcesContent":["import React from 'react'\r\n// @ts-ignore\r\nimport { LittleWeather } from '@davi-ai/retorik-weather'\r\nimport { useSelector } from 'react-redux'\r\nimport { RootState } from '../../store'\r\n\r\nconst LittleWeatherContainer = (): React.JSX.Element => {\r\n const position = useSelector((state: RootState) => state.retorikReducer.configuration.position)\r\n\r\n return position?.latitude && position.longitude ? (\r\n <div className='rf-absolute rf-top-8 rf-right-12'>\r\n <LittleWeather\r\n position={{\r\n latitude: position?.latitude,\r\n longitude: position.longitude\r\n }}\r\n />\r\n </div>\r\n ) : (\r\n <React.Fragment />\r\n )\r\n}\r\n\r\nexport default LittleWeatherContainer\r\n"],"names":[],"version":3,"file":"LittleWeatherContainer.7e41105e.js.map","sourceRoot":"../"}
@@ -1 +1 @@
1
- {"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,MAAM,+CAAyB;IAC7B,MAAM,WAAW,CAAA,GAAA,kBAAU,EAAE,CAAC,QAAqB,MAAM,cAAc,CAAC,aAAa,CAAC,QAAQ;IAE9F,OAAO,UAAU,YAAY,SAAS,SAAS,iBAC7C,gBAAC;QAAI,WAAU;kBACb,cAAA,gBAAC,CAAA,GAAA,oBAAY;YACX,UAAU;gBACR,UAAU,UAAU;gBACpB,WAAW,SAAS,SAAS;YAC/B;;uBAIJ,gBAAC,CAAA,GAAA,YAAI,EAAE,QAAQ;AAEnB;IAEA,2CAAe","sources":["src/components/Weather/LittleWeatherContainer.tsx"],"sourcesContent":["import React from 'react'\r\n// @ts-ignore\r\nimport { LittleWeather } from '@davi-ai/retorik-weather'\r\nimport { useSelector } from 'react-redux'\r\nimport { RootState } from '../../store'\r\n\r\nconst LittleWeatherContainer = (): JSX.Element => {\r\n const position = useSelector((state: RootState) => state.retorikReducer.configuration.position)\r\n\r\n return position?.latitude && position.longitude ? (\r\n <div className='rf-absolute rf-top-8 rf-right-12'>\r\n <LittleWeather\r\n position={{\r\n latitude: position?.latitude,\r\n longitude: position.longitude\r\n }}\r\n />\r\n </div>\r\n ) : (\r\n <React.Fragment />\r\n )\r\n}\r\n\r\nexport default LittleWeatherContainer\r\n"],"names":[],"version":3,"file":"LittleWeatherContainer.ee087e22.js.map"}
1
+ {"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,MAAM,+CAAyB;IAC7B,MAAM,WAAW,CAAA,GAAA,kBAAU,EAAE,CAAC,QAAqB,MAAM,cAAc,CAAC,aAAa,CAAC,QAAQ;IAE9F,OAAO,UAAU,YAAY,SAAS,SAAS,iBAC7C,gBAAC;QAAI,WAAU;kBACb,cAAA,gBAAC,CAAA,GAAA,oBAAY;YACX,UAAU;gBACR,UAAU,UAAU;gBACpB,WAAW,SAAS,SAAS;YAC/B;;uBAIJ,gBAAC,CAAA,GAAA,YAAI,EAAE,QAAQ;AAEnB;IAEA,2CAAe","sources":["src/components/Weather/LittleWeatherContainer.tsx"],"sourcesContent":["import React from 'react'\r\n// @ts-ignore\r\nimport { LittleWeather } from '@davi-ai/retorik-weather'\r\nimport { useSelector } from 'react-redux'\r\nimport { RootState } from '../../store'\r\n\r\nconst LittleWeatherContainer = (): React.JSX.Element => {\r\n const position = useSelector((state: RootState) => state.retorikReducer.configuration.position)\r\n\r\n return position?.latitude && position.longitude ? (\r\n <div className='rf-absolute rf-top-8 rf-right-12'>\r\n <LittleWeather\r\n position={{\r\n latitude: position?.latitude,\r\n longitude: position.longitude\r\n }}\r\n />\r\n </div>\r\n ) : (\r\n <React.Fragment />\r\n )\r\n}\r\n\r\nexport default LittleWeatherContainer\r\n"],"names":[],"version":3,"file":"LittleWeatherContainer.ee087e22.js.map"}
@@ -56,7 +56,7 @@ const $c883882885e099fb$var$MapContainer = ()=>{
56
56
  (0, $3dOGh$react.useLayoutEffect)(()=>{
57
57
  if (!(location === null || location === void 0 ? void 0 : location.latitude) || !(location === null || location === void 0 ? void 0 : location.longitude)) {
58
58
  dispatch((0, $kpW3P.storeActions).retorik.setShowPositionModal(true));
59
- dispatch((0, $kpW3P.storeActions).utils.setCurrentSubView((0, $7WHA7.CurrentSubView).none));
59
+ dispatch((0, $kpW3P.storeActions).utils.setCurrentSubView((0, $kpW3P.CurrentSubView).none));
60
60
  }
61
61
  }, [
62
62
  location
@@ -74,12 +74,21 @@ const $c883882885e099fb$var$MapContainer = ()=>{
74
74
  dispatch((0, $kpW3P.storeActions).directline.sendEvent({
75
75
  name: 'Davi.CloseWindow',
76
76
  callback: ()=>{
77
- dispatch((0, $kpW3P.storeActions).utils.setCurrentSubView((0, $7WHA7.CurrentSubView).none));
77
+ dispatch((0, $kpW3P.storeActions).utils.setCurrentSubView((0, $kpW3P.CurrentSubView).none));
78
78
  dispatch((0, $kpW3P.storeActions).directline.sendEvent({
79
79
  name: 'Davi.CloseWindowMap'
80
80
  }));
81
81
  }
82
82
  }));
83
+ dispatch((0, $kpW3P.storeActions).livekit.sendEvent({
84
+ name: 'Davi.CloseWindow',
85
+ callback: ()=>{
86
+ dispatch((0, $kpW3P.storeActions).utils.setCurrentSubView((0, $kpW3P.CurrentSubView).none));
87
+ dispatch((0, $kpW3P.storeActions).livekit.sendEvent({
88
+ name: 'Davi.CloseWindowMap'
89
+ }));
90
+ }
91
+ }));
83
92
  };
84
93
  return /*#__PURE__*/ (0, $3dOGh$reactjsxruntime.jsx)((0, $eYKUg.default), {
85
94
  target: (0, $7WHA7.TemplateTarget).map,
@@ -95,10 +104,16 @@ const $c883882885e099fb$var$MapContainer = ()=>{
95
104
  mapCenter: mapConfiguration.mapCenter || processedLocation,
96
105
  limitAroundCenter: mapConfiguration.limitAroundCenter,
97
106
  settings: mapConfiguration.settings,
98
- sendMessage: (text, value)=>dispatch((0, $kpW3P.storeActions).directline.sendMessage({
107
+ sendMessage: (text, value)=>{
108
+ dispatch((0, $kpW3P.storeActions).directline.sendMessage({
109
+ text: text,
110
+ value: value
111
+ }));
112
+ dispatch((0, $kpW3P.storeActions).livekit.sendMessage({
99
113
  text: text,
100
114
  value: value
101
- })),
115
+ }));
116
+ },
102
117
  setModalFullscreenContent: (data)=>dispatch((0, $kpW3P.storeActions).utils.setModalFullscreenContent(data))
103
118
  }),
104
119
  /*#__PURE__*/ (0, $3dOGh$reactjsxruntime.jsx)((0, $lONbp.default), {
@@ -114,4 +129,4 @@ var $c883882885e099fb$export$2e2bcd8739ae039 = $c883882885e099fb$var$MapContaine
114
129
  });
115
130
 
116
131
 
117
- //# sourceMappingURL=MapContainer.14c28128.js.map
132
+ //# sourceMappingURL=MapContainer.25c8f4b4.js.map
@@ -0,0 +1 @@
1
+ {"mappings":"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","sources":["src/components/Map/MapContainer.tsx"],"sourcesContent":["import React, { useLayoutEffect, useMemo } from 'react'\r\nimport { LatLngExpression } from 'leaflet'\r\nimport { Map as InteractiveMap } from '@davi-ai/retorik-map'\r\nimport { useSelector, useDispatch } from 'react-redux'\r\nimport { RootState, storeActions, CurrentSubView } from '../../store'\r\nimport { TemplateTarget } from '../../models/enums'\r\nimport TemplateGlobal from '../Templates/TemplateGlobal'\r\nimport AbsoluteLargeClosingButton from '../Utils/SubView/AbsoluteLargeClosingButton'\r\n\r\nconst MapContainer = (): React.JSX.Element => {\r\n const dispatch = useDispatch()\r\n const locale = useSelector((state: RootState) => state.localeReducer.locale)\r\n const baseAddress = useSelector((state: RootState) => state.localeReducer.baseAddress)\r\n const isWidget = useSelector((state: RootState) => state.viewReducer.isWidget)\r\n const mapConfiguration = useSelector((state: RootState) => state.viewReducer.mapConfiguration)\r\n const isUsedOnBorne = useSelector((state: RootState) => state.retorikReducer.configuration.isUsedOnBorne)\r\n const location = useSelector((state: RootState) => state.retorikReducer.configuration.position)\r\n\r\n useLayoutEffect(() => {\r\n if (!location?.latitude || !location?.longitude) {\r\n dispatch(storeActions.retorik.setShowPositionModal(true))\r\n dispatch(storeActions.utils.setCurrentSubView(CurrentSubView.none))\r\n }\r\n }, [location])\r\n\r\n const processedLocation = useMemo<LatLngExpression | undefined>(() => {\r\n if (location?.latitude && location.longitude) {\r\n return [location?.latitude, location.longitude]\r\n }\r\n\r\n return undefined\r\n }, [location])\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.CloseWindowMap' }))\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.CloseWindowMap' }))\r\n }\r\n })\r\n )\r\n }\r\n\r\n return (\r\n <TemplateGlobal target={TemplateTarget.map} onClick={handleBack}>\r\n {processedLocation ? (\r\n <React.Fragment>\r\n <InteractiveMap\r\n locale={locale}\r\n isWidget={isWidget}\r\n isUsedOnBorne={!!isUsedOnBorne}\r\n tenantAddress={baseAddress}\r\n userLocation={processedLocation}\r\n mapCenter={mapConfiguration.mapCenter || processedLocation}\r\n limitAroundCenter={mapConfiguration.limitAroundCenter}\r\n settings={mapConfiguration.settings}\r\n sendMessage={(text: string | undefined, value: Record<string, string>) => {\r\n dispatch(storeActions.directline.sendMessage({ text: text, value: value }))\r\n dispatch(storeActions.livekit.sendMessage({ text: text, value: value }))\r\n }}\r\n setModalFullscreenContent={(data) => dispatch(storeActions.utils.setModalFullscreenContent(data))}\r\n />\r\n\r\n {/* Closing button */}\r\n <AbsoluteLargeClosingButton dashboardVisible={true} onClick={handleBack} />\r\n </React.Fragment>\r\n ) : (\r\n <React.Fragment />\r\n )}\r\n </TemplateGlobal>\r\n )\r\n}\r\n\r\nexport default MapContainer\r\n"],"names":[],"version":3,"file":"MapContainer.25c8f4b4.js.map","sourceRoot":"../"}
@@ -43,7 +43,7 @@ const $f146c357e203cf79$var$MapContainer = ()=>{
43
43
  (0, $l0i8l$useLayoutEffect)(()=>{
44
44
  if (!location?.latitude || !location?.longitude) {
45
45
  dispatch((0, $8ItUL.storeActions).retorik.setShowPositionModal(true));
46
- dispatch((0, $8ItUL.storeActions).utils.setCurrentSubView((0, $4ucVo.CurrentSubView).none));
46
+ dispatch((0, $8ItUL.storeActions).utils.setCurrentSubView((0, $8ItUL.CurrentSubView).none));
47
47
  }
48
48
  }, [
49
49
  location
@@ -61,12 +61,21 @@ const $f146c357e203cf79$var$MapContainer = ()=>{
61
61
  dispatch((0, $8ItUL.storeActions).directline.sendEvent({
62
62
  name: 'Davi.CloseWindow',
63
63
  callback: ()=>{
64
- dispatch((0, $8ItUL.storeActions).utils.setCurrentSubView((0, $4ucVo.CurrentSubView).none));
64
+ dispatch((0, $8ItUL.storeActions).utils.setCurrentSubView((0, $8ItUL.CurrentSubView).none));
65
65
  dispatch((0, $8ItUL.storeActions).directline.sendEvent({
66
66
  name: 'Davi.CloseWindowMap'
67
67
  }));
68
68
  }
69
69
  }));
70
+ dispatch((0, $8ItUL.storeActions).livekit.sendEvent({
71
+ name: 'Davi.CloseWindow',
72
+ callback: ()=>{
73
+ dispatch((0, $8ItUL.storeActions).utils.setCurrentSubView((0, $8ItUL.CurrentSubView).none));
74
+ dispatch((0, $8ItUL.storeActions).livekit.sendEvent({
75
+ name: 'Davi.CloseWindowMap'
76
+ }));
77
+ }
78
+ }));
70
79
  };
71
80
  return /*#__PURE__*/ (0, $l0i8l$jsx)((0, $aMohu.default), {
72
81
  target: (0, $4ucVo.TemplateTarget).map,
@@ -82,10 +91,16 @@ const $f146c357e203cf79$var$MapContainer = ()=>{
82
91
  mapCenter: mapConfiguration.mapCenter || processedLocation,
83
92
  limitAroundCenter: mapConfiguration.limitAroundCenter,
84
93
  settings: mapConfiguration.settings,
85
- sendMessage: (text, value)=>dispatch((0, $8ItUL.storeActions).directline.sendMessage({
94
+ sendMessage: (text, value)=>{
95
+ dispatch((0, $8ItUL.storeActions).directline.sendMessage({
96
+ text: text,
97
+ value: value
98
+ }));
99
+ dispatch((0, $8ItUL.storeActions).livekit.sendMessage({
86
100
  text: text,
87
101
  value: value
88
- })),
102
+ }));
103
+ },
89
104
  setModalFullscreenContent: (data)=>dispatch((0, $8ItUL.storeActions).utils.setModalFullscreenContent(data))
90
105
  }),
91
106
  /*#__PURE__*/ (0, $l0i8l$jsx)((0, $9uOFS.default), {
@@ -101,4 +116,4 @@ var $f146c357e203cf79$export$2e2bcd8739ae039 = $f146c357e203cf79$var$MapContaine
101
116
  });
102
117
 
103
118
 
104
- //# sourceMappingURL=MapContainer.f22ad81f.js.map
119
+ //# sourceMappingURL=MapContainer.d00ab5b2.js.map
@@ -0,0 +1 @@
1
+ {"mappings":"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","sources":["src/components/Map/MapContainer.tsx"],"sourcesContent":["import React, { useLayoutEffect, useMemo } from 'react'\r\nimport { LatLngExpression } from 'leaflet'\r\nimport { Map as InteractiveMap } from '@davi-ai/retorik-map'\r\nimport { useSelector, useDispatch } from 'react-redux'\r\nimport { RootState, storeActions, CurrentSubView } from '../../store'\r\nimport { TemplateTarget } from '../../models/enums'\r\nimport TemplateGlobal from '../Templates/TemplateGlobal'\r\nimport AbsoluteLargeClosingButton from '../Utils/SubView/AbsoluteLargeClosingButton'\r\n\r\nconst MapContainer = (): React.JSX.Element => {\r\n const dispatch = useDispatch()\r\n const locale = useSelector((state: RootState) => state.localeReducer.locale)\r\n const baseAddress = useSelector((state: RootState) => state.localeReducer.baseAddress)\r\n const isWidget = useSelector((state: RootState) => state.viewReducer.isWidget)\r\n const mapConfiguration = useSelector((state: RootState) => state.viewReducer.mapConfiguration)\r\n const isUsedOnBorne = useSelector((state: RootState) => state.retorikReducer.configuration.isUsedOnBorne)\r\n const location = useSelector((state: RootState) => state.retorikReducer.configuration.position)\r\n\r\n useLayoutEffect(() => {\r\n if (!location?.latitude || !location?.longitude) {\r\n dispatch(storeActions.retorik.setShowPositionModal(true))\r\n dispatch(storeActions.utils.setCurrentSubView(CurrentSubView.none))\r\n }\r\n }, [location])\r\n\r\n const processedLocation = useMemo<LatLngExpression | undefined>(() => {\r\n if (location?.latitude && location.longitude) {\r\n return [location?.latitude, location.longitude]\r\n }\r\n\r\n return undefined\r\n }, [location])\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.CloseWindowMap' }))\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.CloseWindowMap' }))\r\n }\r\n })\r\n )\r\n }\r\n\r\n return (\r\n <TemplateGlobal target={TemplateTarget.map} onClick={handleBack}>\r\n {processedLocation ? (\r\n <React.Fragment>\r\n <InteractiveMap\r\n locale={locale}\r\n isWidget={isWidget}\r\n isUsedOnBorne={!!isUsedOnBorne}\r\n tenantAddress={baseAddress}\r\n userLocation={processedLocation}\r\n mapCenter={mapConfiguration.mapCenter || processedLocation}\r\n limitAroundCenter={mapConfiguration.limitAroundCenter}\r\n settings={mapConfiguration.settings}\r\n sendMessage={(text: string | undefined, value: Record<string, string>) => {\r\n dispatch(storeActions.directline.sendMessage({ text: text, value: value }))\r\n dispatch(storeActions.livekit.sendMessage({ text: text, value: value }))\r\n }}\r\n setModalFullscreenContent={(data) => dispatch(storeActions.utils.setModalFullscreenContent(data))}\r\n />\r\n\r\n {/* Closing button */}\r\n <AbsoluteLargeClosingButton dashboardVisible={true} onClick={handleBack} />\r\n </React.Fragment>\r\n ) : (\r\n <React.Fragment />\r\n )}\r\n </TemplateGlobal>\r\n )\r\n}\r\n\r\nexport default MapContainer\r\n"],"names":[],"version":3,"file":"MapContainer.d00ab5b2.js.map"}
@@ -1,4 +1,4 @@
1
- require("./Weather.7e945307.js");
1
+ require("./Weather.abc13d88.js");
2
2
  var $4L16K$reactjsxruntime = require("react/jsx-runtime");
3
3
  var $4L16K$react = require("react");
4
4
  var $4L16K$reactredux = require("react-redux");
@@ -39,8 +39,6 @@ $parcel$export(module.exports, "default", () => $39527ef13f22f094$export$2e2bcd8
39
39
 
40
40
  var $kpW3P = parcelRequire("kpW3P");
41
41
 
42
- var $7WHA7 = parcelRequire("7WHA7");
43
-
44
42
  var $lo3s5 = parcelRequire("lo3s5");
45
43
 
46
44
  var $dMQiv = parcelRequire("dMQiv");
@@ -89,7 +87,7 @@ const $39527ef13f22f094$var$NewsContainer = ({ hideMenu: hideMenu, isRetorikNews
89
87
  * - else set ViewContext's route state to 'home'
90
88
  */ const handleBack = ()=>{
91
89
  if (isRetorikNews) return;
92
- dispatch((0, $kpW3P.storeActions).view.setRoute((0, $7WHA7.Routes).Home));
90
+ dispatch((0, $kpW3P.storeActions).view.setRoute((0, $kpW3P.Routes).Home));
93
91
  };
94
92
  (0, $4L16K$react.useEffect)(()=>{
95
93
  configuration.useOldRemote && dispatch((0, $kpW3P.storeActions).view.setDisplayControls(false));
@@ -105,12 +103,20 @@ const $39527ef13f22f094$var$NewsContainer = ({ hideMenu: hideMenu, isRetorikNews
105
103
  dispatch((0, $kpW3P.storeActions).retorik.setDisplaySubtitles(oldDiplaySubtitles.current));
106
104
  }
107
105
  // Send closing events unless we are using RetorikNews component
108
- if (!isRetorikNews) dispatch((0, $kpW3P.storeActions).directline.sendEvent({
109
- name: 'Davi.CloseWindow',
110
- callback: ()=>dispatch((0, $kpW3P.storeActions).directline.sendEvent({
111
- name: 'Davi.CloseWindowNews'
112
- }))
113
- }));
106
+ if (!isRetorikNews) {
107
+ dispatch((0, $kpW3P.storeActions).directline.sendEvent({
108
+ name: 'Davi.CloseWindow',
109
+ callback: ()=>dispatch((0, $kpW3P.storeActions).directline.sendEvent({
110
+ name: 'Davi.CloseWindowNews'
111
+ }))
112
+ }));
113
+ dispatch((0, $kpW3P.storeActions).livekit.sendEvent({
114
+ name: 'Davi.CloseWindow',
115
+ callback: ()=>dispatch((0, $kpW3P.storeActions).livekit.sendEvent({
116
+ name: 'Davi.CloseWindowNews'
117
+ }))
118
+ }));
119
+ }
114
120
  };
115
121
  }, []);
116
122
  /**
@@ -295,7 +301,7 @@ const $01d9bb41fd368021$var$Time = ({ belowReturnButton: belowReturnButton })=>{
295
301
  className: "rf-w-fit rf-h-fit rf-flex rf-flex-col rf-justify-start rf-items-start rf-text-white",
296
302
  children: [
297
303
  /*#__PURE__*/ (0, $4L16K$reactjsxruntime.jsx)("div", {
298
- className: "rf-w-full rf-text-size-auto rf-px-3 rf-py-0 large:rf-px-4 large:rf-py-1 rf-text-center rf-font-semibold rf-bg-red-600 rf-whitespace-nowrap",
304
+ className: "rf-w-full rf-text-size-auto rf-px-3 rf-py-0 large:rf-px-4 large:rf-py-1 rf-text-center rf-font-semibold rf-bg-red rf-whitespace-nowrap",
299
305
  children: `${translation.news.live.toLocaleUpperCase(locale)} \u25cf`
300
306
  }),
301
307
  /*#__PURE__*/ (0, $4L16K$reactjsxruntime.jsx)("div", {
@@ -321,8 +327,6 @@ var $kpW3P = parcelRequire("kpW3P");
321
327
 
322
328
  var $aNVXv = parcelRequire("aNVXv");
323
329
 
324
- var $7WHA7 = parcelRequire("7WHA7");
325
-
326
330
  var $31VZU = parcelRequire("31VZU");
327
331
 
328
332
  var $fpnh0 = parcelRequire("fpnh0");
@@ -352,6 +356,9 @@ const $d399eaf5da71d3d6$var$News = ({ intervalInSeconds: intervalInSeconds = 3,
352
356
  dispatch((0, $kpW3P.storeActions).directline.sendEvent({
353
357
  name: 'news.getAllNews'
354
358
  }));
359
+ dispatch((0, $kpW3P.storeActions).livekit.sendEvent({
360
+ name: 'news.getAllNews'
361
+ }));
355
362
  }, 2000);
356
363
  return ()=>{
357
364
  timerRef.current && clearTimeout(timerRef.current);
@@ -359,8 +366,8 @@ const $d399eaf5da71d3d6$var$News = ({ intervalInSeconds: intervalInSeconds = 3,
359
366
  }, []);
360
367
  (0, $4L16K$react.useEffect)(()=>{
361
368
  switch(currentDeviceType){
362
- case (0, $7WHA7.DeviceType).mobile:
363
- case (0, $7WHA7.DeviceType).widget:
369
+ case (0, $kpW3P.DeviceType).mobile:
370
+ case (0, $kpW3P.DeviceType).widget:
364
371
  // Set carousel's and banner's positions
365
372
  setAlignSelfEnd(true);
366
373
  setCarouselGridRowStart(1);
@@ -368,8 +375,8 @@ const $d399eaf5da71d3d6$var$News = ({ intervalInSeconds: intervalInSeconds = 3,
368
375
  setBannerGridRowStart(10);
369
376
  setBannerGridRowSpan(3);
370
377
  break;
371
- case (0, $7WHA7.DeviceType).landscape:
372
- case (0, $7WHA7.DeviceType).widgetLandscape:
378
+ case (0, $kpW3P.DeviceType).landscape:
379
+ case (0, $kpW3P.DeviceType).widgetLandscape:
373
380
  var _newsConfiguration_bannerPosition, _newsConfiguration_mediaPosition;
374
381
  // Check banner's position and set carousel's position if there are no position data for this one
375
382
  if (newsConfiguration === null || newsConfiguration === void 0 ? void 0 : (_newsConfiguration_bannerPosition = newsConfiguration.bannerPosition) === null || _newsConfiguration_bannerPosition === void 0 ? void 0 : _newsConfiguration_bannerPosition.landscape) {
@@ -406,8 +413,8 @@ const $d399eaf5da71d3d6$var$News = ({ intervalInSeconds: intervalInSeconds = 3,
406
413
  setCarouselGridRowSpan(9);
407
414
  }
408
415
  break;
409
- case (0, $7WHA7.DeviceType).borne:
410
- case (0, $7WHA7.DeviceType).widgetBorne:
416
+ case (0, $kpW3P.DeviceType).borne:
417
+ case (0, $kpW3P.DeviceType).widgetBorne:
411
418
  var _newsConfiguration_bannerPosition1, _newsConfiguration_mediaPosition2;
412
419
  // Check banner's position and set carousel's position if there are no position data for this one
413
420
  if (newsConfiguration === null || newsConfiguration === void 0 ? void 0 : (_newsConfiguration_bannerPosition1 = newsConfiguration.bannerPosition) === null || _newsConfiguration_bannerPosition1 === void 0 ? void 0 : _newsConfiguration_bannerPosition1.borne) {
@@ -484,7 +491,7 @@ const $d399eaf5da71d3d6$var$News = ({ intervalInSeconds: intervalInSeconds = 3,
484
491
  if (current < news.length - 1) {
485
492
  const delay = current < news.length - 1 ? intervalInSeconds : intervalInSeconds * 3;
486
493
  timerRef.current && clearTimeout(timerRef.current);
487
- if (route === (0, $7WHA7.Routes).News || isRetorikNews) timerRef.current = setTimeout(next, delay * 1000);
494
+ if (route === (0, $kpW3P.Routes).News || isRetorikNews) timerRef.current = setTimeout(next, delay * 1000);
488
495
  } else onEnd();
489
496
  }
490
497
  dispatch((0, $kpW3P.storeActions).utils.setRetorikNewsEnded(false));
@@ -531,8 +538,8 @@ parcelRegister("aNVXv", function(module, exports) {
531
538
 
532
539
  $parcel$export(module.exports, "default", () => $d3f2491623efa760$export$2e2bcd8739ae039);
533
540
 
534
- var $guzQO = parcelRequire("guzQO");
535
541
 
542
+ var $kpW3P = parcelRequire("kpW3P");
536
543
  const $d3f2491623efa760$var$useNews = ()=>{
537
544
  var _activity_attachments;
538
545
  const activities = (0, $4L16K$reactredux.useSelector)((state)=>state.activityReducer.botEventActivities);
@@ -548,8 +555,8 @@ const $d3f2491623efa760$var$useNews = ()=>{
548
555
  };
549
556
  const newsAttachments = [];
550
557
  activity.attachments.forEach((attachment)=>{
551
- if (attachment.contentType === (0, $guzQO.CONTENT_TYPE_NEWS)) newsAttachments.push({
552
- contentType: (0, $guzQO.CONTENT_TYPE_NEWS),
558
+ if (attachment.contentType === (0, $kpW3P.CONTENT_TYPE_NEWS)) newsAttachments.push({
559
+ contentType: (0, $kpW3P.CONTENT_TYPE_NEWS),
553
560
  content: attachment.content || ''
554
561
  });
555
562
  });
@@ -671,7 +678,7 @@ const $5ffb87b569a304f8$var$BannerTopMobile = ({ category: category, title: titl
671
678
  return /*#__PURE__*/ (0, $4L16K$reactjsxruntime.jsxs)((0, ($parcel$interopDefault($4L16K$react))).Fragment, {
672
679
  children: [
673
680
  /*#__PURE__*/ (0, $4L16K$reactjsxruntime.jsx)("div", {
674
- className: "rf-w-full rf-px-4 rf-py-2 rf-font-bold rf-bg-red-600 rf-whitespace-nowrap rf-text-size-auto",
681
+ className: "rf-w-full rf-px-4 rf-py-2 rf-font-bold rf-bg-red rf-whitespace-nowrap rf-text-size-auto",
675
682
  children: category === null || category === void 0 ? void 0 : category.toLocaleUpperCase(locale)
676
683
  }),
677
684
  /*#__PURE__*/ (0, $4L16K$reactjsxruntime.jsxs)("div", {
@@ -724,7 +731,7 @@ const $a94481e954312e6d$var$BannerTopLarge = ({ category: category, title: title
724
731
  className: "rf-w-full rf-flex rf-flex-row rf-justify-start rf-text-size-auto",
725
732
  children: [
726
733
  /*#__PURE__*/ (0, $4L16K$reactjsxruntime.jsx)("div", {
727
- className: "rf-px-4 rf-py-3 rf-font-bold rf-bg-red-600 rf-whitespace-nowrap",
734
+ className: "rf-px-4 rf-py-3 rf-font-bold rf-bg-red rf-whitespace-nowrap",
728
735
  children: category === null || category === void 0 ? void 0 : category.toLocaleUpperCase(locale)
729
736
  }),
730
737
  /*#__PURE__*/ (0, $4L16K$reactjsxruntime.jsx)("div", {
@@ -751,4 +758,4 @@ var $a94481e954312e6d$export$2e2bcd8739ae039 = $a94481e954312e6d$var$BannerTopLa
751
758
 
752
759
 
753
760
 
754
- //# sourceMappingURL=NewsContainer.d9de093c.js.map
761
+ //# sourceMappingURL=NewsContainer.a39630c3.js.map
@@ -0,0 +1 @@
1
+ {"mappings":"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","sources":["src/components/News/NewsContainer.tsx","src/components/News/Time.tsx","src/components/News/News.tsx","src/hooks/useNews.tsx","src/components/News/Banner.tsx","src/components/News/BannerTopMobile.tsx","src/components/News/BannerTopLarge.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef } from 'react'\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { RootState, storeActions, Routes } from '../../store'\r\n\r\nimport type { NewsConfig } from '../../store/models/types'\r\n\r\nimport Background from '../Common/Background'\r\nimport Time from '../News/Time'\r\nimport News from '../News/News'\r\nimport Weather from '../Weather/Weather'\r\nimport AbsoluteLargeClosingButton from '../Utils/SubView/AbsoluteLargeClosingButton'\r\nimport CloseButton from '../Common/CloseButton'\r\nimport MenuDisplayer from '../Menus/MenuDisplayer'\r\nimport { BackButton } from '../Menu/Common'\r\n\r\ninterface NewsContainerProps {\r\n hideMenu?: boolean\r\n isRetorikNews?: boolean\r\n loop?: boolean\r\n fromVeille?: boolean\r\n handleEndedWithoutloop?: () => void\r\n}\r\n\r\n// Steps enum\r\nenum Steps {\r\n opening = 1,\r\n news,\r\n events,\r\n weather,\r\n ending\r\n}\r\n\r\nconst NewsContainer = ({ hideMenu, isRetorikNews, loop, fromVeille, handleEndedWithoutloop }: NewsContainerProps): React.JSX.Element => {\r\n const dispatch = useDispatch()\r\n const translation = useSelector((state: RootState) => state.localeReducer.currentTranslations)\r\n const configuration = useSelector((state: RootState) => state.retorikReducer.configuration)\r\n const displaySubtitles = useSelector((state: RootState) => state.retorikReducer.displaySubtitles)\r\n const muted = useSelector((state: RootState) => state.speechReducer.muted)\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 configurations = useSelector((state: RootState) => state.viewReducer.configurations)\r\n const conversationId = useSelector((state: RootState) => state.activityReducer.conversationId)\r\n const storedConversationData = useSelector((state: RootState) => state.directlineReducer.storedVeilleConversationData)\r\n\r\n const [displayData, setDisplayData] = useState<NewsConfig>(configurations.views.news || configurations.views.home)\r\n const [step, setStep] = useState<number>(configurations.views.news?.openingVideo ? Steps.opening : Steps.news)\r\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\r\n const newsEndedTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null)\r\n const oldDiplaySubtitles = useRef<boolean>(displaySubtitles)\r\n\r\n /**\r\n * On call :\r\n * - if the component is news-only, return\r\n * - else set ViewContext's route state to 'home'\r\n */\r\n const handleBack = (): void => {\r\n if (isRetorikNews) {\r\n return\r\n }\r\n dispatch(storeActions.view.setRoute(Routes.Home))\r\n }\r\n\r\n useEffect(() => {\r\n configuration.useOldRemote && dispatch(storeActions.view.setDisplayControls(false))\r\n // Force muted state to false if we are not in the veille\r\n muted && !fromVeille && dispatch(storeActions.speech.setMuted(false))\r\n // Force hiding subtitles if we are in the veille\r\n fromVeille && dispatch(storeActions.retorik.setDisplaySubtitles(false))\r\n\r\n return () => {\r\n // If we exit news from the veille, let's store the conversation id for next turn, clear activity store and set back subtitles\r\n if (fromVeille) {\r\n !storedConversationData?.id && conversationId && dispatch(storeActions.directline.setStoredVeilleConversationData(conversationId))\r\n dispatch(storeActions.activity.resetActivityStore())\r\n dispatch(storeActions.retorik.setDisplaySubtitles(oldDiplaySubtitles.current))\r\n }\r\n // Send closing events unless we are using RetorikNews component\r\n if (!isRetorikNews) {\r\n dispatch(storeActions.directline.sendEvent({ name: 'Davi.CloseWindow', callback: () => dispatch(storeActions.directline.sendEvent({ name: 'Davi.CloseWindowNews' })) }))\r\n dispatch(storeActions.livekit.sendEvent({ name: 'Davi.CloseWindow', callback: () => dispatch(storeActions.livekit.sendEvent({ name: 'Davi.CloseWindowNews' })) }))\r\n }\r\n }\r\n }, [])\r\n\r\n /**\r\n * On step change :\r\n * - switch on the current step to launch corresponding processing\r\n * On component unmount :\r\n * - clear timerRef timeout\r\n */\r\n useEffect(() => {\r\n switch (step) {\r\n case Steps.opening: {\r\n dispatch(storeActions.retorik.setDisplayAgentInNews(false))\r\n const videoUrl = configurations.views.news?.openingVideo\r\n videoUrl && !fromVeille ? setViewContextCurrentConfiguration(videoUrl as string) : setStep(Steps.news)\r\n break\r\n }\r\n case Steps.news:\r\n dispatch(storeActions.retorik.setDisplayAgentInNews(true))\r\n setDisplayData(configurations.views.news || configurations.views.home)\r\n break\r\n case Steps.events:\r\n break\r\n case Steps.weather:\r\n dispatch(storeActions.retorik.setDisplayAgentInNews(false))\r\n // If the position is known, display the weather page during 10 seconds, otherwise switch to the next step directly\r\n configuration.position?.latitude && configuration.position?.longitude\r\n ? (timerRef.current = setTimeout(() => {\r\n setStep(Steps.ending)\r\n }, 10000))\r\n : setStep(Steps.ending)\r\n break\r\n case Steps.ending: {\r\n dispatch(storeActions.retorik.setDisplayAgentInNews(false))\r\n const videoUrl = configurations.views.news?.openingVideo\r\n videoUrl && !fromVeille ? setViewContextCurrentConfiguration(videoUrl as string) : exitNewsOrLoop()\r\n break\r\n }\r\n default:\r\n break\r\n }\r\n\r\n return (): void => {\r\n timerRef?.current && clearTimeout(timerRef.current)\r\n newsEndedTimerRef?.current && clearTimeout(newsEndedTimerRef.current)\r\n }\r\n }, [step])\r\n\r\n /**\r\n * On call :\r\n * - set the current display configuration to have the given video as background\r\n * @param videoUrl\r\n */\r\n const setViewContextCurrentConfiguration = (videoUrl: string): void => {\r\n setDisplayData({\r\n ...configurations.views.news,\r\n background: {\r\n video: videoUrl,\r\n style: 'video'\r\n }\r\n })\r\n }\r\n\r\n /**\r\n * On call :\r\n * - if the component is news-only :\r\n * + if 'loop' is explicitly set to false, call props' handleEndedWithoutloop method if defined. Call handleBack method otherwise\r\n * + if 'loop' is not false, loop by setting step state to Steps.news\r\n * - or else if 'loop' parameter in configuration is true, get back to Steps.news step. Call handleBack method otherwise\r\n */\r\n const exitNewsOrLoop = (): void => {\r\n // Relaunch from the start if this is a news-only component and loop hasn't explicitly been set to false\r\n if (isRetorikNews) {\r\n if (fromVeille) {\r\n loop ? setStep(Steps.news) : handleEndedWithoutloop?.()\r\n } else {\r\n displayData.loop !== false || loop ? setStep(Steps.news) : handleEndedWithoutloop ? handleEndedWithoutloop() : handleBack()\r\n }\r\n } else {\r\n // Relaunch from the start if the loop is activated, otherwise get back to homepage\r\n displayData.loop || loop ? setStep(Steps.news) : handleBack()\r\n }\r\n }\r\n\r\n /**\r\n * On video end :\r\n * - if we are at the opening step, let's set the step state to Steps.news to launch the news\r\n * - if we are at the ending step, call exitNewsOrLoop function\r\n */\r\n const handleVideoEnd = (): void => {\r\n switch (step) {\r\n case Steps.opening:\r\n setStep(Steps.news)\r\n break\r\n case Steps.ending:\r\n exitNewsOrLoop()\r\n break\r\n }\r\n }\r\n\r\n /**\r\n * On news end :\r\n * - wait 3 seconds\r\n * - get to the next step (Steps.events)\r\n */\r\n const handleNewsEnd = (): void => {\r\n newsEndedTimerRef &&\r\n (newsEndedTimerRef.current = setTimeout(() => {\r\n // setStep(Steps.events)\r\n setStep(Steps.weather)\r\n }, 3000))\r\n }\r\n\r\n return (\r\n <div 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 <Background config={displayData.background} videoLoop={false} videoMuted={true} onVideoEnded={handleVideoEnd} />\r\n\r\n {/* Timer + back button in mobile / widget mode */}\r\n {isMobile && !isRetorikNews && !hideMenu ? (\r\n <div className='rf-relative rf-z-util rf-col-start-1 rf-col-span-full rf-row-start-1 rf-flex rf-flex-col rf-gap-2 rf-items-start'>\r\n <BackButton title={translation.common.back} handleBack={handleBack} className='rf-pr-2 rf-mt-4 rf-ml-4 rf-text-size-auto rf-bg-truewhite rf-rounded-lg' />\r\n <Time belowReturnButton={true} />\r\n </div>\r\n ) : (\r\n <Time />\r\n )}\r\n\r\n {/* News step */}\r\n {step === Steps.news && <News intervalInSeconds={displayData.intervalInSeconds ? (displayData.intervalInSeconds as number) : undefined} onEnd={handleNewsEnd} isRetorikNews={isRetorikNews} />}\r\n\r\n {step === Steps.weather && configuration.position?.latitude && configuration.position?.longitude && <Weather handleClose={handleBack} />}\r\n\r\n {/* Closing button if it needs to be displayed */}\r\n {!hideMenu && <AbsoluteLargeClosingButton dashboardVisible={true} onClick={handleBack} />}\r\n\r\n {!hideMenu && isLandscape && !configuration.useOldRemote && !isRetorikNews && <CloseButton onClick={handleBack} showLabel={true} />}\r\n\r\n {!hideMenu && isBorne && !configuration.useOldRemote && !isRetorikNews && <MenuDisplayer hideMenu={configuration?.hideMenu} />}\r\n </div>\r\n )\r\n}\r\n\r\nexport default NewsContainer\r\n","import React, { useEffect, useState, useRef } from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { RootState } from '../../store'\r\n\r\ninterface TimeProps {\r\n belowReturnButton?: boolean\r\n}\r\n\r\nconst Time = ({ belowReturnButton }: TimeProps): 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 [time, setTime] = useState<string>('')\r\n const timerRef: React.MutableRefObject<any> = useRef(null)\r\n\r\n /**\r\n * Set current time (hours and minutes) depending on the locale (ex: adds AM/PM when needed)\r\n */\r\n const setCurrentTime = (): void => {\r\n const now = new Date()\r\n setTime(\r\n now.toLocaleTimeString(locale, {\r\n hour: '2-digit',\r\n minute: '2-digit'\r\n })\r\n )\r\n }\r\n\r\n /**\r\n * On component mount :\r\n * - set time\r\n * - set interval for time update\r\n * On component unmount :\r\n * - clear interval\r\n */\r\n useEffect(() => {\r\n setCurrentTime()\r\n timerRef && (timerRef.current = setInterval(setCurrentTime, 1000))\r\n\r\n return (): void => timerRef && clearInterval(timerRef.current)\r\n }, [])\r\n\r\n return (\r\n <div className={`rf-relative ${belowReturnButton ? 'rf-ml-4' : 'rf-col-start-1 rf-col-span-2 rf-row-start-1 rf-row-span-2 rf-self-start rf-justify-self-start rf-m-4 large:rf-m-8'}`}>\r\n <div className='rf-w-fit rf-h-fit rf-flex rf-flex-col rf-justify-start rf-items-start rf-text-white'>\r\n {/* Text 'Live' + round */}\r\n <div className='rf-w-full rf-text-size-auto rf-px-3 rf-py-0 large:rf-px-4 large:rf-py-1 rf-text-center rf-font-semibold rf-bg-red rf-whitespace-nowrap'>\r\n {`${translation.news.live.toLocaleUpperCase(locale)} \\u25cf`}\r\n </div>\r\n {/* Time */}\r\n <div className='rf-w-full rf-title-size-auto rf-px-3 rf-py-0 large:rf-px-4 large:rf-py-1 rf-text-center rf-font-bold rf-bg-blue-500'>{time}</div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default Time\r\n","import React, { useEffect, useMemo, useState, useRef } from 'react'\r\nimport { useSelector, useDispatch } from 'react-redux'\r\nimport { RootState, storeActions, DeviceType, Routes } from '../../store'\r\nimport useNews from '../../hooks/useNews'\r\n\r\nimport type { Image, Media } from '../../models/attachmentTypes'\r\nimport { RetorikActivity } from '../../store/models/activityTypes'\r\n\r\nimport Banner from './Banner'\r\nimport { Carousel } from '../Utils'\r\n\r\ntype NewsProps = {\r\n intervalInSeconds?: number\r\n onEnd: () => void\r\n isRetorikNews?: boolean\r\n}\r\n\r\nconst News = ({ intervalInSeconds = 3, onEnd, isRetorikNews }: NewsProps): React.JSX.Element => {\r\n const dispatch = useDispatch()\r\n const { newsAttachments, activity } = useNews()\r\n const route = useSelector((state: RootState) => state.viewReducer.route)\r\n const isMobile = useSelector((state: RootState) => state.viewReducer.isMobile)\r\n const newsConfiguration = useSelector((state: RootState) => state.viewReducer.configurations.views.news)\r\n const currentDeviceType = useSelector((state: RootState) => state.viewReducer.currentDeviceType)\r\n const retorikNewsEnded = useSelector((state: RootState) => state.utilsReducer.retorikNewsEnded)\r\n\r\n const [carouselGridRowStart, setCarouselGridRowStart] = useState<number>()\r\n const [carouselGridRowSpan, setCarouselGridRowSpan] = useState<number>()\r\n const [bannerGridRowStart, setBannerGridRowStart] = useState<number>(10)\r\n const [bannerGridRowSpan, setBannerGridRowSpan] = useState<number>(3)\r\n // Banner's align-self is flex-end if the position of the banner hasn't been changed, flex-start in borne / landscape modes otherwise\r\n const [alignSelfEnd, setAlignSelfEnd] = useState<boolean>(true)\r\n const [current, setCurrent] = useState<number>(0)\r\n const timerRef = useRef<NodeJS.Timer | null>(null)\r\n\r\n const news = useMemo(() => {\r\n return newsAttachments.map((newsAttachement) => newsAttachement.content)\r\n }, [newsAttachments])\r\n\r\n useEffect(() => {\r\n if (!newsAttachments.length) {\r\n setTimeout(() => {\r\n dispatch(storeActions.directline.sendEvent({ name: 'news.getAllNews' }))\r\n dispatch(storeActions.livekit.sendEvent({ name: 'news.getAllNews' }))\r\n }, 2000)\r\n }\r\n\r\n return (): void => {\r\n timerRef.current && clearTimeout(timerRef.current)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n switch (currentDeviceType) {\r\n case DeviceType.mobile:\r\n case DeviceType.widget: {\r\n // Set carousel's and banner's positions\r\n setAlignSelfEnd(true)\r\n setCarouselGridRowStart(1)\r\n setCarouselGridRowSpan(9)\r\n setBannerGridRowStart(10)\r\n setBannerGridRowSpan(3)\r\n break\r\n }\r\n case DeviceType.landscape:\r\n case DeviceType.widgetLandscape: {\r\n // Check banner's position and set carousel's position if there are no position data for this one\r\n if (newsConfiguration?.bannerPosition?.landscape) {\r\n const start = newsConfiguration.bannerPosition.landscape.containerRowStart || 10\r\n const end = newsConfiguration.bannerPosition.landscape.containerRowEnd || 13\r\n\r\n setAlignSelfEnd(false)\r\n setBannerGridRowStart(start)\r\n setBannerGridRowSpan(end - start)\r\n\r\n if (!newsConfiguration?.mediaPosition?.landscape) {\r\n // The base row span of the carousel is 9, if the custom position of the banner allows this span, let's keep it. If not, let's use the max span available.\r\n if (start > 9) {\r\n setCarouselGridRowStart(start - 9)\r\n setCarouselGridRowSpan(9)\r\n } else {\r\n setCarouselGridRowStart(1)\r\n setCarouselGridRowSpan(start - 1)\r\n }\r\n\r\n break\r\n }\r\n } else {\r\n setAlignSelfEnd(true)\r\n setBannerGridRowStart(10)\r\n setBannerGridRowSpan(3)\r\n }\r\n\r\n // Check carousel's position\r\n if (newsConfiguration?.mediaPosition?.landscape) {\r\n const start = newsConfiguration.mediaPosition.landscape.containerRowStart || 1\r\n const end = newsConfiguration.mediaPosition.landscape.containerRowEnd || 10\r\n\r\n setCarouselGridRowStart(start)\r\n setCarouselGridRowStart(end - start)\r\n } else {\r\n setCarouselGridRowStart(1)\r\n setCarouselGridRowSpan(9)\r\n }\r\n\r\n break\r\n }\r\n case DeviceType.borne:\r\n case DeviceType.widgetBorne: {\r\n // Check banner's position and set carousel's position if there are no position data for this one\r\n if (newsConfiguration?.bannerPosition?.borne) {\r\n const start = newsConfiguration.bannerPosition.borne.containerRowStart || 10\r\n const end = newsConfiguration.bannerPosition.borne.containerRowEnd || 13\r\n\r\n setAlignSelfEnd(false)\r\n setBannerGridRowStart(start)\r\n setBannerGridRowSpan(end - start)\r\n\r\n if (!newsConfiguration?.mediaPosition?.borne) {\r\n // The base row span of the carousel is 4, if the custom position of the banner allows this span, let's keep it. If not, let's use the max span available.\r\n if (start > 4) {\r\n setCarouselGridRowStart(start - 4)\r\n setCarouselGridRowSpan(4)\r\n } else {\r\n setCarouselGridRowStart(1)\r\n setCarouselGridRowSpan(start - 1)\r\n }\r\n\r\n break\r\n }\r\n } else {\r\n setAlignSelfEnd(true)\r\n setBannerGridRowStart(10)\r\n setBannerGridRowSpan(3)\r\n }\r\n\r\n // Check carousel's position\r\n if (newsConfiguration?.mediaPosition?.borne) {\r\n const start = newsConfiguration.mediaPosition.borne.containerRowStart || 7\r\n const end = newsConfiguration.mediaPosition.borne.containerRowEnd || 11\r\n\r\n setCarouselGridRowStart(start)\r\n setCarouselGridRowSpan(end - start)\r\n } else {\r\n setCarouselGridRowStart(7)\r\n setCarouselGridRowSpan(4)\r\n }\r\n break\r\n }\r\n }\r\n }, [newsConfiguration, currentDeviceType])\r\n\r\n useEffect(() => {\r\n const currentNew = news[current]\r\n if (currentNew) {\r\n const textTitle = newsConfiguration?.removeTitleFromTextToSpeak ? '' : `${currentNew.title}, <break/> `\r\n const textSubtitle = newsConfiguration?.removeSubtitleFromTextToSpeak ? '' : `${currentNew.subtitle}: <break/> `\r\n\r\n const tempActivity: RetorikActivity = {\r\n ...activity,\r\n speak: `${textTitle}${textSubtitle}${currentNew.text}`\r\n } as RetorikActivity\r\n\r\n dispatch(storeActions.speech.addToStreamingQueue(tempActivity))\r\n }\r\n }, [activity, current])\r\n\r\n const currentMedia = useMemo<Array<Image | Media>>(() => {\r\n const currentNew = news[current]\r\n if (currentNew) {\r\n if (currentNew.media?.length) {\r\n return currentNew.media\r\n } else if (currentNew.image?.url) {\r\n return [currentNew.image]\r\n }\r\n }\r\n\r\n return []\r\n }, [news, current])\r\n\r\n useEffect(() => {\r\n if (retorikNewsEnded) {\r\n if (news.length) {\r\n if (current < news.length - 1) {\r\n const delay = current < news.length - 1 ? intervalInSeconds : intervalInSeconds * 3\r\n timerRef.current && clearTimeout(timerRef.current)\r\n if (route === Routes.News || isRetorikNews) {\r\n timerRef.current = setTimeout(next, delay * 1000)\r\n }\r\n } else {\r\n onEnd()\r\n }\r\n }\r\n\r\n dispatch(storeActions.utils.setRetorikNewsEnded(false))\r\n }\r\n }, [retorikNewsEnded])\r\n\r\n const next = (): void => {\r\n const next = (current + 1) % news.length\r\n changeNews(next)\r\n }\r\n\r\n const changeNews = (next: number): void => {\r\n setCurrent(next)\r\n }\r\n\r\n return news.length && current >= 0 ? (\r\n <React.Fragment>\r\n {/* Carousel in landscape / borne display */}\r\n {!isMobile && (\r\n <div\r\n className='rf-relative rf-col-start-5 rf-col-span-3 large-vertical:rf-col-start-2 large-vertical:rf-col-end-8 rf-flex rf-justify-center rf-items-center'\r\n style={{\r\n gridRow: `${carouselGridRowStart} / span ${carouselGridRowSpan}`\r\n }}\r\n >\r\n {currentMedia.length ? (\r\n <Carousel className='rf-z-[10] rf-max-h-4/5 large-vertical:rf-max-h-11/12 rf-max-w-full' medias={news[current].media || [news[current].image || { url: '' }]} />\r\n ) : (\r\n <React.Fragment />\r\n )}\r\n </div>\r\n )}\r\n\r\n {/* Lower banner with title / subtitle / text */}\r\n <Banner news={news[current]} gridRowStart={bannerGridRowStart} gridRowSpan={bannerGridRowSpan} alignSelfEnd={alignSelfEnd} />\r\n </React.Fragment>\r\n ) : (\r\n <React.Fragment />\r\n )\r\n}\r\n\r\nexport default News\r\n","import { NewsContent } from '../models/attachmentTypes'\r\nimport { useSelector } from 'react-redux'\r\nimport { RootState, CONTENT_TYPE_NEWS } from '../store'\r\nimport type { RetorikActivity } from '../store/models/activityTypes'\r\n\r\ntype NewsAttachment = {\r\n contentType: string\r\n content: NewsContent\r\n}\r\n\r\nconst useNews = (): {\r\n newsAttachments: Array<NewsAttachment>\r\n activity?: RetorikActivity\r\n} => {\r\n const activities = useSelector((state: RootState) => state.activityReducer.botEventActivities)\r\n\r\n if (!activities.length) {\r\n return { newsAttachments: [] }\r\n }\r\n\r\n // Filter messages that can income during news, with label = Davi.BringupMessage\r\n const filterBringUpActivities = activities.filter((act: any) => act.label !== 'Davi.BringupMessage')\r\n\r\n const activity = filterBringUpActivities[filterBringUpActivities.length - 1] as any\r\n\r\n if (!activity || !activity.attachments?.length) {\r\n return { newsAttachments: [], activity }\r\n }\r\n\r\n const newsAttachments: NewsAttachment[] = []\r\n activity.attachments.forEach((attachment) => {\r\n if (attachment.contentType === CONTENT_TYPE_NEWS) {\r\n newsAttachments.push({\r\n contentType: CONTENT_TYPE_NEWS,\r\n content: attachment.content || ''\r\n })\r\n }\r\n })\r\n\r\n return { newsAttachments, activity }\r\n}\r\n\r\nexport default useNews\r\n","import React, { useEffect, useMemo, useRef, useState } from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { RootState } from '../../store'\r\nimport type { NewsContent } from '../../models/attachmentTypes'\r\nimport { capitalizeFirstLetter } from '../../utils/capitalizeFirstLetter'\r\nimport BannerTopMobile from './BannerTopMobile'\r\nimport BannerTopLarge from './BannerTopLarge'\r\n\r\ninterface BannerProps {\r\n news: NewsContent\r\n gridRowStart: number\r\n gridRowSpan: number\r\n alignSelfEnd: boolean\r\n}\r\n\r\nconst Banner = ({ news, gridRowStart, gridRowSpan, alignSelfEnd }: BannerProps): React.JSX.Element => {\r\n const translation = useSelector((state: RootState) => state.localeReducer.currentTranslations)\r\n const locale = useSelector((state: RootState) => state.localeReducer.localeForRetorikStudioContent)\r\n const localizedBannerTitle = useSelector((state: RootState) => state.localeReducer.localizedBannerTitle)\r\n const isRTL = useSelector((state: RootState) => state.localeReducer.isRTL)\r\n const isMobile = useSelector((state: RootState) => state.viewReducer.isMobile)\r\n const currentWidth = useSelector((state: RootState) => state.viewReducer.currentWidth)\r\n const newsConfiguration = useSelector((state: RootState) => state.viewReducer.configurations.views.news)\r\n\r\n const timerRef: React.MutableRefObject<any> = useRef(null)\r\n const [scrollDuration, setScrollDuration] = useState<number>(0)\r\n\r\n const category = useMemo<string>(() => {\r\n return news.category || newsConfiguration?.bannerTitleLocalized?.[locale] || localizedBannerTitle || newsConfiguration?.bannerTitle || translation.news.continuous\r\n }, [news, newsConfiguration, locale, localizedBannerTitle, translation])\r\n\r\n /**\r\n * Set animation for text horizontal scrolling if necessary\r\n */\r\n const updateDuration = (): void => {\r\n // Reset animation\r\n setScrollDuration(0)\r\n // Set animation, after a 1s timeout\r\n timerRef &&\r\n (timerRef.current = setTimeout(() => {\r\n setScrollDuration(Math.floor(news.text.length / 11))\r\n }, 1000))\r\n }\r\n\r\n /**\r\n * On news props change :\r\n * - call updateDuration function\r\n * On component unmount :\r\n * - clear timeout\r\n */\r\n useEffect(() => {\r\n updateDuration()\r\n\r\n return (): void => timerRef && clearTimeout(timerRef.current)\r\n }, [news])\r\n\r\n return (\r\n <div\r\n dir={isRTL ? 'rtl' : 'ltr'}\r\n className='rf-h-fit rf-z-util rf-col-start-1 rf-col-span-full large:rf-mb-6 rf-flex rf-flex-col rf-items-center rf-glass-background rf-text-white'\r\n style={{\r\n alignSelf: alignSelfEnd ? 'flex-end' : 'flex-start',\r\n gridRow: `${gridRowStart} / span ${gridRowSpan}`\r\n }}\r\n >\r\n {/* Category + Image (mobile) + Title + Subtitle */}\r\n {isMobile ? (\r\n <BannerTopMobile category={category} title={news.title} subtitle={news.subtitle} url={news.image?.url} />\r\n ) : (\r\n <BannerTopLarge category={category} title={news.title} subtitle={news.subtitle} />\r\n )}\r\n\r\n {/* Text */}\r\n <div\r\n dir='ltr'\r\n className='rf-w-full rf-pr-4 rf-py-2 large:rf-py-4 rf-subtitle-size-auto rf-text-black rf-bg-white rf-overflow-clip'\r\n style={{\r\n paddingLeft: currentWidth\r\n }}\r\n >\r\n {scrollDuration !== 0 ? (\r\n <p\r\n className='rf-w-max rf-whitespace-nowrap rf-animate-hScroll'\r\n style={{\r\n animation: `rf-hScroll ${scrollDuration}s infinite linear`,\r\n paddingRight: currentWidth\r\n }}\r\n >\r\n {news.text ? capitalizeFirstLetter(news.text) : '...'}\r\n </p>\r\n ) : (\r\n <p className='rf-w-max rf-whitespace-nowrap'>{news.text ? capitalizeFirstLetter(news.text) : '...'}</p>\r\n )}\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default Banner\r\n","import React from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { RootState } from '../../store'\r\nimport { capitalizeFirstLetter } from '../../utils/capitalizeFirstLetter'\r\n\r\ninterface BannerTopMobileProps {\r\n category: string\r\n title?: string\r\n subtitle?: string\r\n url?: string\r\n}\r\n\r\nconst BannerTopMobile = ({ category, title, subtitle, url }: BannerTopMobileProps): React.JSX.Element => {\r\n const locale = useSelector((state: RootState) => state.localeReducer.locale)\r\n\r\n return (\r\n <React.Fragment>\r\n <div className='rf-w-full rf-px-4 rf-py-2 rf-font-bold rf-bg-red rf-whitespace-nowrap rf-text-size-auto'>{category?.toLocaleUpperCase(locale)}</div>\r\n\r\n <div className='rf-w-full rf-flex rf-flex-row'>\r\n {/* Image */}\r\n {url && (\r\n <div\r\n className='rf-aspect-video rf-w-1/4'\r\n style={{\r\n backgroundImage: `url(${url})`,\r\n backgroundSize: 'cover',\r\n backgroundRepeat: 'no-repeat',\r\n backgroundPosition: 'center'\r\n }}\r\n />\r\n )}\r\n\r\n {/* Title + Subtitle */}\r\n <div className='rf-px-4 rf-py-1 rf-font-bold'>\r\n <div className='rf-text-size-auto rf-line-clamp-1'>{title && title.toLocaleUpperCase(locale)}</div>\r\n <div className='rf-text-basecustom rf-line-clamp-2'>{subtitle ? capitalizeFirstLetter(subtitle) : '...'}</div>\r\n </div>\r\n </div>\r\n </React.Fragment>\r\n )\r\n}\r\n\r\nexport default BannerTopMobile\r\n","import React from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { RootState } from '../../store'\r\nimport { capitalizeFirstLetter } from '../../utils/capitalizeFirstLetter'\r\n\r\ninterface BannerTopLargeProps {\r\n category: string\r\n title?: string\r\n subtitle?: string\r\n}\r\n\r\nconst BannerTopLarge = ({ category, title, subtitle }: BannerTopLargeProps): React.JSX.Element => {\r\n const locale = useSelector((state: RootState) => state.localeReducer.locale)\r\n\r\n return (\r\n <React.Fragment>\r\n {/* Category + title */}\r\n <div className='rf-w-full rf-flex rf-flex-row rf-justify-start rf-text-size-auto'>\r\n <div className='rf-px-4 rf-py-3 rf-font-bold rf-bg-red rf-whitespace-nowrap'>{category?.toLocaleUpperCase(locale)}</div>\r\n <div className='rf-px-4 rf-mb-2 rf-mt-2 large:rf-mt-3 rf-font-bold rf-line-clamp-1'>{title?.toLocaleUpperCase(locale)}</div>\r\n </div>\r\n\r\n {/* Subtitle */}\r\n <div className='rf-w-full rf-h-fit rf-flex rf-flex-row rf-justify-start'>\r\n <div className='rf-px-4 rf-my-2 large:rf-my-3 rf-title-large-size-auto rf-line-clamp-2'>{subtitle ? capitalizeFirstLetter(subtitle) : '...'}</div>\r\n </div>\r\n </React.Fragment>\r\n )\r\n}\r\n\r\nexport default BannerTopLarge\r\n"],"names":[],"version":3,"file":"NewsContainer.a39630c3.js.map","sourceRoot":"../"}