@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.
- package/README.md +13 -0
- package/dist/{AttachmentDetail.637ad44f.js → AttachmentDetail.3f9c113d.js} +15 -6
- package/dist/AttachmentDetail.3f9c113d.js.map +1 -0
- package/dist/{AttachmentDetail.83788045.js → AttachmentDetail.57c5579a.js} +15 -6
- package/dist/AttachmentDetail.57c5579a.js.map +1 -0
- package/dist/{CustomView.bf84bdf3.js → CustomView.6b96f53f.js} +8 -4
- package/dist/CustomView.6b96f53f.js.map +1 -0
- package/dist/{CustomView.9930c671.js → CustomView.b32a608f.js} +8 -4
- package/dist/CustomView.b32a608f.js.map +1 -0
- package/dist/{Emergency.1112c09f.js → Emergency.43605d14.js} +11 -2
- package/dist/Emergency.43605d14.js.map +1 -0
- package/dist/{Emergency.d5810ff2.js → Emergency.f1287bd5.js} +11 -2
- package/dist/Emergency.f1287bd5.js.map +1 -0
- package/dist/FullScreenImage.17df27bf.js.map +1 -1
- package/dist/FullScreenImage.99e19e10.js.map +1 -1
- package/dist/{HistoryList.3b4b1ffb.js → HistoryList.c19556a7.js} +8 -2
- package/dist/HistoryList.c19556a7.js.map +1 -0
- package/dist/{HistoryList.e5c01f21.js → HistoryList.e7262d62.js} +8 -2
- package/dist/HistoryList.e7262d62.js.map +1 -0
- package/dist/{LanguageChoice.1d866cfa.js → LanguageChoice.54fae1dc.js} +19 -8
- package/dist/LanguageChoice.54fae1dc.js.map +1 -0
- package/dist/{LanguageChoice.cce361a3.js → LanguageChoice.6e8b74f6.js} +19 -8
- package/dist/LanguageChoice.6e8b74f6.js.map +1 -0
- package/dist/LittleWeatherContainer.7e41105e.js.map +1 -1
- package/dist/LittleWeatherContainer.ee087e22.js.map +1 -1
- package/dist/{MapContainer.14c28128.js → MapContainer.25c8f4b4.js} +20 -5
- package/dist/MapContainer.25c8f4b4.js.map +1 -0
- package/dist/{MapContainer.f22ad81f.js → MapContainer.d00ab5b2.js} +20 -5
- package/dist/MapContainer.d00ab5b2.js.map +1 -0
- package/dist/{NewsContainer.d9de093c.js → NewsContainer.a39630c3.js} +33 -26
- package/dist/NewsContainer.a39630c3.js.map +1 -0
- package/dist/{NewsContainer.463e74de.js → NewsContainer.ec15c3bb.js} +33 -26
- package/dist/NewsContainer.ec15c3bb.js.map +1 -0
- package/dist/PrintingPreview.375e62b0.js.map +1 -1
- package/dist/PrintingPreview.c0ca7706.js.map +1 -1
- package/dist/RecognitionManager.c58b8a3d.js +298 -0
- package/dist/RecognitionManager.c58b8a3d.js.map +1 -0
- package/dist/RecognitionManager.cdfb39fc.js +314 -0
- package/dist/RecognitionManager.cdfb39fc.js.map +1 -0
- package/dist/SpiritEngineWrapper.21ea10d4.js.map +1 -1
- package/dist/SpiritEngineWrapper.39627300.js.map +1 -1
- package/dist/SynthesisPonyfillManager.10888d6d.js +888 -0
- package/dist/SynthesisPonyfillManager.10888d6d.js.map +1 -0
- package/dist/SynthesisPonyfillManager.f9f9a915.js +920 -0
- package/dist/SynthesisPonyfillManager.f9f9a915.js.map +1 -0
- package/dist/{ThreeJsWrapper.dd4906ff.js → ThreeJsWrapper.0285d280.js} +24 -12
- package/dist/ThreeJsWrapper.0285d280.js.map +1 -0
- package/dist/{ThreeJsWrapper.c02a077f.js → ThreeJsWrapper.ad746197.js} +24 -11
- package/dist/ThreeJsWrapper.ad746197.js.map +1 -0
- package/dist/{VeilleManager.f3bafdec.js → VeilleManager.0b3f2454.js} +11 -13
- package/dist/VeilleManager.0b3f2454.js.map +1 -0
- package/dist/{VeilleManager.85967e7c.js → VeilleManager.340a7825.js} +11 -13
- package/dist/VeilleManager.340a7825.js.map +1 -0
- package/dist/{Weather.7e945307.js → Weather.abc13d88.js} +9 -3
- package/dist/Weather.abc13d88.js.map +1 -0
- package/dist/{Weather.e81b7205.js → Weather.b9d9f82e.js} +9 -3
- package/dist/Weather.b9d9f82e.js.map +1 -0
- package/dist/index.d.ts +21 -951
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +52952 -33750
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +53468 -34269
- package/dist/index.modern.js.map +1 -1
- package/package.json +21 -21
- package/dist/AttachmentDetail.637ad44f.js.map +0 -1
- package/dist/AttachmentDetail.83788045.js.map +0 -1
- package/dist/CustomView.9930c671.js.map +0 -1
- package/dist/CustomView.bf84bdf3.js.map +0 -1
- package/dist/Emergency.1112c09f.js.map +0 -1
- package/dist/Emergency.d5810ff2.js.map +0 -1
- package/dist/HistoryList.3b4b1ffb.js.map +0 -1
- package/dist/HistoryList.e5c01f21.js.map +0 -1
- package/dist/LanguageChoice.1d866cfa.js.map +0 -1
- package/dist/LanguageChoice.cce361a3.js.map +0 -1
- package/dist/MapContainer.14c28128.js.map +0 -1
- package/dist/MapContainer.f22ad81f.js.map +0 -1
- package/dist/NewsContainer.463e74de.js.map +0 -1
- package/dist/NewsContainer.d9de093c.js.map +0 -1
- package/dist/ThreeJsWrapper.c02a077f.js.map +0 -1
- package/dist/ThreeJsWrapper.dd4906ff.js.map +0 -1
- package/dist/VeilleManager.85967e7c.js.map +0 -1
- package/dist/VeilleManager.f3bafdec.js.map +0 -1
- package/dist/Weather.7e945307.js.map +0 -1
- package/dist/Weather.e81b7205.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,MAAM,oCAAc;IAClB,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,WAAW,CAAA,GAAA,kBAAU,EAAE,CAAC,QAAqB,MAAM,WAAW,CAAC,QAAQ;IAC7E,MAAM,UAAU,CAAA,GAAA,kBAAU,EAAE,CAAC,QAAqB,MAAM,WAAW,CAAC,OAAO;IAE3E,MAAM,aAAa,CAAA,GAAA,cAAmB;IACtC,MAAM,YAAY,CAAA,GAAA,aAAK,EAAkB;IACzC,MAAM,SAAS,CAAA,GAAA,aAAK,EAAkB;IAEtC,MAAM,cAAc;QAClB,IAAI,aAAa,UAAU,OAAO,KAAK,MACrC,UAAU,OAAO,CAAC,cAAc,CAAC;YAC/B,UAAU;YACV,OAAO;QACT;IAEJ;IAEA,CAAA,GAAA,gBAAQ,EAAE;QACR,WAAW;YACT;QACF,GAAG;IACL,GAAG,EAAE;IAEL,CAAA,GAAA,gBAAQ,EAAE;QACR,QAAQ,WAAW,YAAY,CAAA,GAAA,cAAY,EAAE,MAAM;IACrD,GAAG;QAAC,QAAQ;KAAQ;IAEpB,MAAM,cAAc;QAClB,SAAS,CAAA,GAAA,mBAAW,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAA,GAAA,qBAAa,EAAE,IAAI;QACjE,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,SAAS,CAAA,GAAA,mBAAW,EAAE,OAAO,CAAC,SAAS,CAAC;YAAE,MAAM;YAAoB,UAAU,IAAM,SAAS,CAAA,GAAA,mBAAW,EAAE,OAAO,CAAC,SAAS,CAAC;oBAAE,MAAM;gBAA0B;QAAI;IACpK;IAEA,qBACE,gBAAC,CAAA,GAAA,cAAa;QAAE,SAAS;QAAa,QAAQ;QAAM,QAAQ,CAAA,GAAA,qBAAa,EAAE,OAAO;kBAChF,cAAA,iBAAC;YACC,KAAK;YACL,WAAW,CAAC,iFAAiF,EAAE,UAAU,gDAAgD,uBAAuB;;8BAGhL,gBAAC;oBAAI,WAAU;8BAAmC,CAAA,GAAA,4BAAoB,EAAE,YAAY,OAAO,CAAC,KAAK,EAAE;;gBAGlG,WAAW,GAAG,CAAC,CAAC,UAAU;oBACzB,qBAAO,gBAAC,CAAA,GAAA,cAAU;wBAAY,UAAU;uBAAf;gBAC3B;8BACA,gBAAC;oBAAI,KAAK;;;;;AAIlB;IAEA,2CAAe;;;;;;;;;AC9DA;IACb,MAAM,aAAa,CAAA,GAAA,kBAAU,EAAE,CAAC,QAAqB,MAAM,eAAe,CAAC,iBAAiB;IAC5F,oLAAoL;IACpL,MAAM,cAA6B,EAAE;IACrC,MAAM,UAA6B,EAAE;IAErC,WAAW,OAAO,CAAC,CAAC;QAClB,IAAI,SAAS,EAAE,IAAI,CAAC,YAAY,QAAQ,CAAC,SAAS,EAAE,GAAG;YACrD,YAAY,IAAI,CAAC,SAAS,EAAE;YAC5B,kGAAkG;YAClG,IAAI,SAAS,SAAS,EAAE;gBACtB,MAAM,WAAwC,QAAQ,IAAI,CAAC,CAAC,cAAgB,YAAY,QAAQ,CAAC,EAAE,KAAK,SAAS,SAAS;gBAC1H,IAAI,UACF,SAAS,OAAO,CAAC,IAAI,CAAC;qBACjB;oBACL,MAAM,cAA+B,CAAA,GAAA,oCAA4B,EAAE;oBAEnE,QAAQ,IAAI,CAAC;wBACX,UAAU;wBACV,SAAS;4BAAC;yBAAS;oBACrB;gBACF;YACF,OACE,IAAI,AAAC,SAA6B,KAAK,KAAK,yBAAyB,AAAC,SAA6B,IAAI,EAAE;gBACvG,MAAM,cAA+B,CAAA,GAAA,oCAA4B,EAAE;gBACnE,QAAQ,IAAI,CAAC;oBACX,UAAU;oBACV,SAAS;wBAAC;qBAAS;gBACrB;YACF,OACE,QAAQ,IAAI,CAAC;gBACX,UAAU;gBACV,SAAS,EAAE;YACb;QAGN;IACF;IAEA,OAAO;AACT;;;;;;;;;;;ACrCA,MAAM,oCAAc,CAAC,YAAE,QAAQ,EAAoB;IACjD,qBACE,iBAAC;QAAI,WAAU;;YAEZ,UAAU,YAAY,SAAS,QAAQ,CAAC,IAAI,KAAK,2BAChD,gBAAC,CAAA,GAAA,cAAQ;gBAAE,UAAU,SAAS,QAAQ;gBAAE,YAAY;;YAIrD,SAAS,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ;gBAC7B,OAAO,OAAO,IAAI,KAAK,0BACrB,gBAAC,CAAA,GAAA,cAAQ;oBAAU,UAAU;oBAAQ,YAAY;mBAAjC,mBAEhB,gBAAC,CAAA,GAAA,YAAI,EAAE,QAAQ;YAEnB;;;AAGN;IAEA,2CAAe;;;;;;;;;;;;;AChBf,MAAM,kCAAY,CAAC,YAAE,QAAQ,cAAE,UAAU,EAAkB;IACzD,MAAM,SAAS,CAAA,GAAA,kBAAU,EAAE,CAAC,QAAqB,MAAM,aAAa,CAAC,MAAM;IAC3E,MAAM,OAAO,SAAS,cAAc,GAAG,IAAI,KAAK,SAAS,cAAc,IAAI,SAAS,SAAS,GAAG,IAAI,KAAK,SAAS,SAAS,IAAI,IAAI;IAEnI,OAAO,SAAS,IAAI,IAAI,CAAC,CAAC,SAAS,WAAW,EAAE,uBAC9C,iBAAC;QAAI,WAAU;;0BAEb,gBAAC;gBAAI,WAAU;0BACZ,KAAK,cAAc,CAAC,QAAQ;oBAC3B,MAAM;oBACN,QAAQ;gBACV;;0BAIF,iBAAC;gBAAI,WAAW,GAAG,aAAa,sBAAsB,wCAAwC;;oBAC3F,SAAS,QAAQ,iBAChB,gBAAC;wBACC,yBAAyB;4BACvB,QAAQ,SAAS,QAAQ;wBAC3B;yBAEA,SAAS,IAAI,GACf,CAAA,GAAA,mCAA2B,EAAE,SAAS,IAAI,IAE1C;oBAGD,CAAC,CAAC,SAAS,WAAW,EAAE,UAAU,CAAE,CAAA,SAAS,gBAAgB,IAAI,SAAS,gBAAgB,CAAC,WAAW,OAAO,UAAS,mBACrH,gBAAC;wBAAI,WAAW,CAAC,8DAA8D,EAAE,SAAS,IAAI,IAAI,WAAW;kCAC3G,cAAA,gBAAC,CAAA,GAAA,cAAU;4BAAE,UAAU;4BAAU,SAAS;;;;;;uBAMlD,gBAAC,CAAA,GAAA,YAAI,EAAE,QAAQ;AAEnB;IAEA,2CAAe","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, $
|
|
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)
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
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.
|
|
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, $
|
|
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)
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
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.
|
|
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, $
|
|
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, $
|
|
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)=>
|
|
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.
|
|
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, $
|
|
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, $
|
|
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)=>
|
|
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.
|
|
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.
|
|
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, $
|
|
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)
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
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
|
|
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, $
|
|
363
|
-
case (0, $
|
|
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, $
|
|
372
|
-
case (0, $
|
|
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, $
|
|
410
|
-
case (0, $
|
|
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, $
|
|
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, $
|
|
552
|
-
contentType: (0, $
|
|
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
|
|
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
|
|
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.
|
|
761
|
+
//# sourceMappingURL=NewsContainer.a39630c3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBA,aAAa;AACb,IAAA,AAAK,qDAAA;;;;;;WAAA;EAAA;AAQL,MAAM,sCAAgB,CAAC,YAAE,QAAQ,iBAAE,aAAa,QAAE,IAAI,cAAE,UAAU,0BAAE,sBAAsB,EAAsB;QAcrE,4BAsKV,yBAAoC;IAnLnE,MAAM,WAAW,CAAA,GAAA,6BAAU;IAC3B,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,mBAAmB,CAAA,GAAA,6BAAU,EAAE,CAAC,QAAqB,MAAM,cAAc,CAAC,gBAAgB;IAChG,MAAM,QAAQ,CAAA,GAAA,6BAAU,EAAE,CAAC,QAAqB,MAAM,aAAa,CAAC,KAAK;IACzE,MAAM,WAAW,CAAA,GAAA,6BAAU,EAAE,CAAC,QAAqB,MAAM,WAAW,CAAC,QAAQ;IAC7E,MAAM,cAAc,CAAA,GAAA,6BAAU,EAAE,CAAC,QAAqB,MAAM,WAAW,CAAC,WAAW;IACnF,MAAM,UAAU,CAAA,GAAA,6BAAU,EAAE,CAAC,QAAqB,MAAM,WAAW,CAAC,OAAO;IAC3E,MAAM,iBAAiB,CAAA,GAAA,6BAAU,EAAE,CAAC,QAAqB,MAAM,WAAW,CAAC,cAAc;IACzF,MAAM,iBAAiB,CAAA,GAAA,6BAAU,EAAE,CAAC,QAAqB,MAAM,eAAe,CAAC,cAAc;IAC7F,MAAM,yBAAyB,CAAA,GAAA,6BAAU,EAAE,CAAC,QAAqB,MAAM,iBAAiB,CAAC,4BAA4B;IAErH,MAAM,CAAC,aAAa,eAAe,GAAG,CAAA,GAAA,qBAAO,EAAc,eAAe,KAAK,CAAC,IAAI,IAAI,eAAe,KAAK,CAAC,IAAI;IACjH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAA,GAAA,qBAAO,EAAU,EAAA,6BAAA,eAAe,KAAK,CAAC,IAAI,cAAzB,iDAAA,2BAA2B,YAAY;IAChF,MAAM,WAAW,CAAA,GAAA,mBAAK,EAAwC;IAC9D,MAAM,oBAAoB,CAAA,GAAA,mBAAK,EAAwC;IACvE,MAAM,qBAAqB,CAAA,GAAA,mBAAK,EAAW;IAE3C;;;;GAIC,GACD,MAAM,aAAa;QACjB,IAAI,eACF;QAEF,SAAS,CAAA,GAAA,mBAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA,GAAA,aAAK,EAAE,IAAI;IACjD;IAEA,CAAA,GAAA,sBAAQ,EAAE;QACR,cAAc,YAAY,IAAI,SAAS,CAAA,GAAA,mBAAW,EAAE,IAAI,CAAC,kBAAkB,CAAC;QAC5E,yDAAyD;QACzD,SAAS,CAAC,cAAc,SAAS,CAAA,GAAA,mBAAW,EAAE,MAAM,CAAC,QAAQ,CAAC;QAC9D,iDAAiD;QACjD,cAAc,SAAS,CAAA,GAAA,mBAAW,EAAE,OAAO,CAAC,mBAAmB,CAAC;QAEhE,OAAO;YACL,8HAA8H;YAC9H,IAAI,YAAY;gBACd,EAAC,mCAAA,6CAAA,uBAAwB,EAAE,KAAI,kBAAkB,SAAS,CAAA,GAAA,mBAAW,EAAE,UAAU,CAAC,+BAA+B,CAAC;gBAClH,SAAS,CAAA,GAAA,mBAAW,EAAE,QAAQ,CAAC,kBAAkB;gBACjD,SAAS,CAAA,GAAA,mBAAW,EAAE,OAAO,CAAC,mBAAmB,CAAC,mBAAmB,OAAO;YAC9E;YACA,gEAAgE;YAChE,IAAI,CAAC,eAAe;gBAClB,SAAS,CAAA,GAAA,mBAAW,EAAE,UAAU,CAAC,SAAS,CAAC;oBAAE,MAAM;oBAAoB,UAAU,IAAM,SAAS,CAAA,GAAA,mBAAW,EAAE,UAAU,CAAC,SAAS,CAAC;4BAAE,MAAM;wBAAuB;gBAAI;gBACrK,SAAS,CAAA,GAAA,mBAAW,EAAE,OAAO,CAAC,SAAS,CAAC;oBAAE,MAAM;oBAAoB,UAAU,IAAM,SAAS,CAAA,GAAA,mBAAW,EAAE,OAAO,CAAC,SAAS,CAAC;4BAAE,MAAM;wBAAuB;gBAAI;YACjK;QACF;IACF,GAAG,EAAE;IAEL;;;;;GAKC,GACD,CAAA,GAAA,sBAAQ,EAAE;QACR,OAAQ;YACN;gBAAoB;wBAED;oBADjB,SAAS,CAAA,GAAA,mBAAW,EAAE,OAAO,CAAC,qBAAqB,CAAC;oBACpD,MAAM,YAAW,6BAAA,eAAe,KAAK,CAAC,IAAI,cAAzB,iDAAA,2BAA2B,YAAY;oBACxD,YAAY,CAAC,aAAa,mCAAmC,YAAsB;oBACnF;gBACF;YACA;gBACE,SAAS,CAAA,GAAA,mBAAW,EAAE,OAAO,CAAC,qBAAqB,CAAC;gBACpD,eAAe,eAAe,KAAK,CAAC,IAAI,IAAI,eAAe,KAAK,CAAC,IAAI;gBACrE;YACF;gBACE;YACF;oBAEE,mHAAmH;gBACnH,yBAAoC;gBAFpC,SAAS,CAAA,GAAA,mBAAW,EAAE,OAAO,CAAC,qBAAqB,CAAC;gBAEpD,EAAA,0BAAA,cAAc,QAAQ,cAAtB,8CAAA,wBAAwB,QAAQ,OAAI,2BAAA,cAAc,QAAQ,cAAtB,+CAAA,yBAAwB,SAAS,IAChE,SAAS,OAAO,GAAG,WAAW;oBAC7B;gBACF,GAAG,SACH;gBACJ;YACF;gBAAmB;wBAEA;oBADjB,SAAS,CAAA,GAAA,mBAAW,EAAE,OAAO,CAAC,qBAAqB,CAAC;oBACpD,MAAM,YAAW,8BAAA,eAAe,KAAK,CAAC,IAAI,cAAzB,kDAAA,4BAA2B,YAAY;oBACxD,YAAY,CAAC,aAAa,mCAAmC,YAAsB;oBACnF;gBACF;YACA;gBACE;QACJ;QAEA,OAAO;YACL,CAAA,qBAAA,+BAAA,SAAU,OAAO,KAAI,aAAa,SAAS,OAAO;YAClD,CAAA,8BAAA,wCAAA,kBAAmB,OAAO,KAAI,aAAa,kBAAkB,OAAO;QACtE;IACF,GAAG;QAAC;KAAK;IAET;;;;GAIC,GACD,MAAM,qCAAqC,CAAC;QAC1C,eAAe;YACb,GAAG,eAAe,KAAK,CAAC,IAAI;YAC5B,YAAY;gBACV,OAAO;gBACP,OAAO;YACT;QACF;IACF;IAEA;;;;;;GAMC,GACD,MAAM,iBAAiB;QACrB,wGAAwG;QACxG,IAAI;YACF,IAAI,YACF,OAAO,aAAsB,mCAAA,6CAAA;iBAE7B,YAAY,IAAI,KAAK,SAAS,OAAO,aAAsB,yBAAyB,2BAA2B;eAGjH,mFAAmF;QACnF,YAAY,IAAI,IAAI,OAAO,aAAsB;IAErD;IAEA;;;;GAIC,GACD,MAAM,iBAAiB;QACrB,OAAQ;YACN;gBACE;gBACA;YACF;gBACE;gBACA;QACJ;IACF;IAEA;;;;GAIC,GACD,MAAM,gBAAgB;QACpB,qBACG,CAAA,kBAAkB,OAAO,GAAG,WAAW;YACtC,wBAAwB;YACxB;QACF,GAAG,KAAI;IACX;IAEA,qBACE,iCAAC;QAAI,WAAU;;0BACb,gCAAC,CAAA,GAAA,cAAS;gBAAE,QAAQ,YAAY,UAAU;gBAAE,WAAW;gBAAO,YAAY;gBAAM,cAAc;;YAG7F,YAAY,CAAC,iBAAiB,CAAC,yBAC9B,iCAAC;gBAAI,WAAU;;kCACb,gCAAC,CAAA,GAAA,iBAAS;wBAAE,OAAO,YAAY,MAAM,CAAC,IAAI;wBAAE,YAAY;wBAAY,WAAU;;kCAC9E,gCAAC,CAAA,GAAA,cAAG;wBAAE,mBAAmB;;;+BAG3B,gCAAC,CAAA,GAAA,cAAG;YAIL,4BAAuB,gCAAC,CAAA,GAAA,cAAG;gBAAE,mBAAmB,YAAY,iBAAiB,GAAI,YAAY,iBAAiB,GAAc;gBAAW,OAAO;gBAAe,eAAe;;YAE5K,gBAA0B,0BAAA,cAAc,QAAQ,cAAtB,8CAAA,wBAAwB,QAAQ,OAAI,2BAAA,cAAc,QAAQ,cAAtB,+CAAA,yBAAwB,SAAS,mBAAI,gCAAC,CAAA,GAAA,cAAM;gBAAE,aAAa;;YAGzH,CAAC,0BAAY,gCAAC,CAAA,GAAA,cAAyB;gBAAE,kBAAkB;gBAAM,SAAS;;YAE1E,CAAC,YAAY,eAAe,CAAC,cAAc,YAAY,IAAI,CAAC,+BAAiB,gCAAC,CAAA,GAAA,cAAU;gBAAE,SAAS;gBAAY,WAAW;;YAE1H,CAAC,YAAY,WAAW,CAAC,cAAc,YAAY,IAAI,CAAC,+BAAiB,gCAAC,CAAA,GAAA,cAAY;gBAAE,QAAQ,EAAE,0BAAA,oCAAA,cAAe,QAAQ;;;;AAGhI;IAEA,2CAAe;;;;;;;;;ACxNf,MAAM,6BAAO,CAAC,qBAAE,iBAAiB,EAAa;IAC5C,MAAM,cAAc,CAAA,GAAA,6BAAU,EAAE,CAAC,QAAqB,MAAM,aAAa,CAAC,mBAAmB;IAC7F,MAAM,SAAS,CAAA,GAAA,6BAAU,EAAE,CAAC,QAAqB,MAAM,aAAa,CAAC,MAAM;IAC3E,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAA,GAAA,qBAAO,EAAU;IACzC,MAAM,WAAwC,CAAA,GAAA,mBAAK,EAAE;IAErD;;GAEC,GACD,MAAM,iBAAiB;QACrB,MAAM,MAAM,IAAI;QAChB,QACE,IAAI,kBAAkB,CAAC,QAAQ;YAC7B,MAAM;YACN,QAAQ;QACV;IAEJ;IAEA;;;;;;GAMC,GACD,CAAA,GAAA,sBAAQ,EAAE;QACR;QACA,YAAa,CAAA,SAAS,OAAO,GAAG,YAAY,gBAAgB,KAAI;QAEhE,OAAO,IAAY,YAAY,cAAc,SAAS,OAAO;IAC/D,GAAG,EAAE;IAEL,qBACE,gCAAC;QAAI,WAAW,CAAC,YAAY,EAAE,oBAAoB,YAAY,qHAAqH;kBAClL,cAAA,iCAAC;YAAI,WAAU;;8BAEb,gCAAC;oBAAI,WAAU;8BACZ,GAAG,YAAY,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,OAAO,CAAC;;8BAG9D,gCAAC;oBAAI,WAAU;8BAAuH;;;;;AAI9I;IAEA,2CAAe;;;;;;;;;;;;;;;;;;ACtCf,MAAM,6BAAO,CAAC,qBAAE,oBAAoB,UAAG,KAAK,iBAAE,aAAa,EAAa;IACtE,MAAM,WAAW,CAAA,GAAA,6BAAU;IAC3B,MAAM,mBAAE,eAAe,YAAE,QAAQ,EAAE,GAAG,CAAA,GAAA,cAAM;IAC5C,MAAM,QAAQ,CAAA,GAAA,6BAAU,EAAE,CAAC,QAAqB,MAAM,WAAW,CAAC,KAAK;IACvE,MAAM,WAAW,CAAA,GAAA,6BAAU,EAAE,CAAC,QAAqB,MAAM,WAAW,CAAC,QAAQ;IAC7E,MAAM,oBAAoB,CAAA,GAAA,6BAAU,EAAE,CAAC,QAAqB,MAAM,WAAW,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI;IACvG,MAAM,oBAAoB,CAAA,GAAA,6BAAU,EAAE,CAAC,QAAqB,MAAM,WAAW,CAAC,iBAAiB;IAC/F,MAAM,mBAAmB,CAAA,GAAA,6BAAU,EAAE,CAAC,QAAqB,MAAM,YAAY,CAAC,gBAAgB;IAE9F,MAAM,CAAC,sBAAsB,wBAAwB,GAAG,CAAA,GAAA,qBAAO;IAC/D,MAAM,CAAC,qBAAqB,uBAAuB,GAAG,CAAA,GAAA,qBAAO;IAC7D,MAAM,CAAC,oBAAoB,sBAAsB,GAAG,CAAA,GAAA,qBAAO,EAAU;IACrE,MAAM,CAAC,mBAAmB,qBAAqB,GAAG,CAAA,GAAA,qBAAO,EAAU;IACnE,qIAAqI;IACrI,MAAM,CAAC,cAAc,gBAAgB,GAAG,CAAA,GAAA,qBAAO,EAAW;IAC1D,MAAM,CAAC,SAAS,WAAW,GAAG,CAAA,GAAA,qBAAO,EAAU;IAC/C,MAAM,WAAW,CAAA,GAAA,mBAAK,EAAuB;IAE7C,MAAM,OAAO,CAAA,GAAA,oBAAM,EAAE;QACnB,OAAO,gBAAgB,GAAG,CAAC,CAAC,kBAAoB,gBAAgB,OAAO;IACzE,GAAG;QAAC;KAAgB;IAEpB,CAAA,GAAA,sBAAQ,EAAE;QACR,IAAI,CAAC,gBAAgB,MAAM,EACzB,WAAW;YACT,SAAS,CAAA,GAAA,mBAAW,EAAE,UAAU,CAAC,SAAS,CAAC;gBAAE,MAAM;YAAkB;YACrE,SAAS,CAAA,GAAA,mBAAW,EAAE,OAAO,CAAC,SAAS,CAAC;gBAAE,MAAM;YAAkB;QACpE,GAAG;QAGL,OAAO;YACL,SAAS,OAAO,IAAI,aAAa,SAAS,OAAO;QACnD;IACF,GAAG,EAAE;IAEL,CAAA,GAAA,sBAAQ,EAAE;QACR,OAAQ;YACN,KAAK,CAAA,GAAA,iBAAS,EAAE,MAAM;YACtB,KAAK,CAAA,GAAA,iBAAS,EAAE,MAAM;gBACpB,wCAAwC;gBACxC,gBAAgB;gBAChB,wBAAwB;gBACxB,uBAAuB;gBACvB,sBAAsB;gBACtB,qBAAqB;gBACrB;YAEF,KAAK,CAAA,GAAA,iBAAS,EAAE,SAAS;YACzB,KAAK,CAAA,GAAA,iBAAS,EAAE,eAAe;oBAEzB,mCA2BA;gBA5BJ,iGAAiG;gBACjG,IAAI,8BAAA,yCAAA,oCAAA,kBAAmB,cAAc,cAAjC,wDAAA,kCAAmC,SAAS,EAAE;wBAQ3C;oBAPL,MAAM,QAAQ,kBAAkB,cAAc,CAAC,SAAS,CAAC,iBAAiB,IAAI;oBAC9E,MAAM,MAAM,kBAAkB,cAAc,CAAC,SAAS,CAAC,eAAe,IAAI;oBAE1E,gBAAgB;oBAChB,sBAAsB;oBACtB,qBAAqB,MAAM;oBAE3B,IAAI,EAAC,8BAAA,yCAAA,oCAAA,kBAAmB,aAAa,cAAhC,wDAAA,kCAAkC,SAAS,GAAE;wBAChD,0JAA0J;wBAC1J,IAAI,QAAQ,GAAG;4BACb,wBAAwB,QAAQ;4BAChC,uBAAuB;wBACzB,OAAO;4BACL,wBAAwB;4BACxB,uBAAuB,QAAQ;wBACjC;wBAEA;oBACF;gBACF,OAAO;oBACL,gBAAgB;oBAChB,sBAAsB;oBACtB,qBAAqB;gBACvB;gBAEA,4BAA4B;gBAC5B,IAAI,8BAAA,yCAAA,mCAAA,kBAAmB,aAAa,cAAhC,uDAAA,iCAAkC,SAAS,EAAE;oBAC/C,MAAM,QAAQ,kBAAkB,aAAa,CAAC,SAAS,CAAC,iBAAiB,IAAI;oBAC7E,MAAM,MAAM,kBAAkB,aAAa,CAAC,SAAS,CAAC,eAAe,IAAI;oBAEzE,wBAAwB;oBACxB,wBAAwB,MAAM;gBAChC,OAAO;oBACL,wBAAwB;oBACxB,uBAAuB;gBACzB;gBAEA;YAEF,KAAK,CAAA,GAAA,iBAAS,EAAE,KAAK;YACrB,KAAK,CAAA,GAAA,iBAAS,EAAE,WAAW;oBAErB,oCA2BA;gBA5BJ,iGAAiG;gBACjG,IAAI,8BAAA,yCAAA,qCAAA,kBAAmB,cAAc,cAAjC,yDAAA,mCAAmC,KAAK,EAAE;wBAQvC;oBAPL,MAAM,QAAQ,kBAAkB,cAAc,CAAC,KAAK,CAAC,iBAAiB,IAAI;oBAC1E,MAAM,MAAM,kBAAkB,cAAc,CAAC,KAAK,CAAC,eAAe,IAAI;oBAEtE,gBAAgB;oBAChB,sBAAsB;oBACtB,qBAAqB,MAAM;oBAE3B,IAAI,EAAC,8BAAA,yCAAA,oCAAA,kBAAmB,aAAa,cAAhC,wDAAA,kCAAkC,KAAK,GAAE;wBAC5C,0JAA0J;wBAC1J,IAAI,QAAQ,GAAG;4BACb,wBAAwB,QAAQ;4BAChC,uBAAuB;wBACzB,OAAO;4BACL,wBAAwB;4BACxB,uBAAuB,QAAQ;wBACjC;wBAEA;oBACF;gBACF,OAAO;oBACL,gBAAgB;oBAChB,sBAAsB;oBACtB,qBAAqB;gBACvB;gBAEA,4BAA4B;gBAC5B,IAAI,8BAAA,yCAAA,oCAAA,kBAAmB,aAAa,cAAhC,wDAAA,kCAAkC,KAAK,EAAE;oBAC3C,MAAM,QAAQ,kBAAkB,aAAa,CAAC,KAAK,CAAC,iBAAiB,IAAI;oBACzE,MAAM,MAAM,kBAAkB,aAAa,CAAC,KAAK,CAAC,eAAe,IAAI;oBAErE,wBAAwB;oBACxB,uBAAuB,MAAM;gBAC/B,OAAO;oBACL,wBAAwB;oBACxB,uBAAuB;gBACzB;gBACA;QAEJ;IACF,GAAG;QAAC;QAAmB;KAAkB;IAEzC,CAAA,GAAA,sBAAQ,EAAE;QACR,MAAM,aAAa,IAAI,CAAC,QAAQ;QAChC,IAAI,YAAY;YACd,MAAM,YAAY,CAAA,8BAAA,wCAAA,kBAAmB,0BAA0B,IAAG,KAAK,GAAG,WAAW,KAAK,CAAC,WAAW,CAAC;YACvG,MAAM,eAAe,CAAA,8BAAA,wCAAA,kBAAmB,6BAA6B,IAAG,KAAK,GAAG,WAAW,QAAQ,CAAC,WAAW,CAAC;YAEhH,MAAM,eAAgC;gBACpC,GAAG,QAAQ;gBACX,OAAO,GAAG,YAAY,eAAe,WAAW,IAAI,EAAE;YACxD;YAEA,SAAS,CAAA,GAAA,mBAAW,EAAE,MAAM,CAAC,mBAAmB,CAAC;QACnD;IACF,GAAG;QAAC;QAAU;KAAQ;IAEtB,MAAM,eAAe,CAAA,GAAA,oBAAM,EAAwB;QACjD,MAAM,aAAa,IAAI,CAAC,QAAQ;QAChC,IAAI,YAAY;gBACV,mBAEO;YAFX,KAAI,oBAAA,WAAW,KAAK,cAAhB,wCAAA,kBAAkB,MAAM,EAC1B,OAAO,WAAW,KAAK;iBAClB,KAAI,oBAAA,WAAW,KAAK,cAAhB,wCAAA,kBAAkB,GAAG,EAC9B,OAAO;gBAAC,WAAW,KAAK;aAAC;QAE7B;QAEA,OAAO,EAAE;IACX,GAAG;QAAC;QAAM;KAAQ;IAElB,CAAA,GAAA,sBAAQ,EAAE;QACR,IAAI,kBAAkB;YACpB,IAAI,KAAK,MAAM;gBACb,IAAI,UAAU,KAAK,MAAM,GAAG,GAAG;oBAC7B,MAAM,QAAQ,UAAU,KAAK,MAAM,GAAG,IAAI,oBAAoB,oBAAoB;oBAClF,SAAS,OAAO,IAAI,aAAa,SAAS,OAAO;oBACjD,IAAI,UAAU,CAAA,GAAA,aAAK,EAAE,IAAI,IAAI,eAC3B,SAAS,OAAO,GAAG,WAAW,MAAM,QAAQ;gBAEhD,OACE;;YAIJ,SAAS,CAAA,GAAA,mBAAW,EAAE,KAAK,CAAC,mBAAmB,CAAC;QAClD;IACF,GAAG;QAAC;KAAiB;IAErB,MAAM,OAAO;QACX,MAAM,OAAO,AAAC,CAAA,UAAU,CAAA,IAAK,KAAK,MAAM;QACxC,WAAW;IACb;IAEA,MAAM,aAAa,CAAC;QAClB,WAAW;IACb;IAEA,OAAO,KAAK,MAAM,IAAI,WAAW,kBAC/B,iCAAC,CAAA,GAAA,sCAAI,EAAE,QAAQ;;YAEZ,CAAC,0BACA,gCAAC;gBACC,WAAU;gBACV,OAAO;oBACL,SAAS,GAAG,qBAAqB,QAAQ,EAAE,qBAAqB;gBAClE;0BAEC,aAAa,MAAM,iBAClB,gCAAC,CAAA,GAAA,eAAO;oBAAE,WAAU;oBAAqE,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI;wBAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI;4BAAE,KAAK;wBAAG;qBAAE;mCAE5J,gCAAC,CAAA,GAAA,sCAAI,EAAE,QAAQ;;0BAMrB,gCAAC,CAAA,GAAA,cAAK;gBAAE,MAAM,IAAI,CAAC,QAAQ;gBAAE,cAAc;gBAAoB,aAAa;gBAAmB,cAAc;;;uBAG/G,gCAAC,CAAA,GAAA,sCAAI,EAAE,QAAQ;AAEnB;IAEA,2CAAe;;;;;;;;;AC/Nf,MAAM,gCAAU;QAeI;IAXlB,MAAM,aAAa,CAAA,GAAA,6BAAU,EAAE,CAAC,QAAqB,MAAM,eAAe,CAAC,kBAAkB;IAE7F,IAAI,CAAC,WAAW,MAAM,EACpB,OAAO;QAAE,iBAAiB,EAAE;IAAC;IAG/B,gFAAgF;IAChF,MAAM,0BAA0B,WAAW,MAAM,CAAC,CAAC,MAAa,IAAI,KAAK,KAAK;IAE9E,MAAM,WAAW,uBAAuB,CAAC,wBAAwB,MAAM,GAAG,EAAE;IAE5E,IAAI,CAAC,YAAY,GAAC,wBAAA,SAAS,WAAW,cAApB,4CAAA,sBAAsB,MAAM,GAC5C,OAAO;QAAE,iBAAiB,EAAE;kBAAE;IAAS;IAGzC,MAAM,kBAAoC,EAAE;IAC5C,SAAS,WAAW,CAAC,OAAO,CAAC,CAAC;QAC5B,IAAI,WAAW,WAAW,KAAK,CAAA,GAAA,wBAAgB,GAC7C,gBAAgB,IAAI,CAAC;YACnB,aAAa,CAAA,GAAA,wBAAgB;YAC7B,SAAS,WAAW,OAAO,IAAI;QACjC;IAEJ;IAEA,OAAO;yBAAE;kBAAiB;IAAS;AACrC;IAEA,2CAAe;;;;;;;;;;;;;;;;AC3Bf,MAAM,+BAAS,CAAC,QAAE,IAAI,gBAAE,YAAY,eAAE,WAAW,gBAAE,YAAY,EAAe;QAoDgB;IAnD5F,MAAM,cAAc,CAAA,GAAA,6BAAU,EAAE,CAAC,QAAqB,MAAM,aAAa,CAAC,mBAAmB;IAC7F,MAAM,SAAS,CAAA,GAAA,6BAAU,EAAE,CAAC,QAAqB,MAAM,aAAa,CAAC,6BAA6B;IAClG,MAAM,uBAAuB,CAAA,GAAA,6BAAU,EAAE,CAAC,QAAqB,MAAM,aAAa,CAAC,oBAAoB;IACvG,MAAM,QAAQ,CAAA,GAAA,6BAAU,EAAE,CAAC,QAAqB,MAAM,aAAa,CAAC,KAAK;IACzE,MAAM,WAAW,CAAA,GAAA,6BAAU,EAAE,CAAC,QAAqB,MAAM,WAAW,CAAC,QAAQ;IAC7E,MAAM,eAAe,CAAA,GAAA,6BAAU,EAAE,CAAC,QAAqB,MAAM,WAAW,CAAC,YAAY;IACrF,MAAM,oBAAoB,CAAA,GAAA,6BAAU,EAAE,CAAC,QAAqB,MAAM,WAAW,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI;IAEvG,MAAM,WAAwC,CAAA,GAAA,mBAAK,EAAE;IACrD,MAAM,CAAC,gBAAgB,kBAAkB,GAAG,CAAA,GAAA,qBAAO,EAAU;IAE7D,MAAM,WAAW,CAAA,GAAA,oBAAM,EAAU;YACP;QAAxB,OAAO,KAAK,QAAQ,KAAI,8BAAA,yCAAA,0CAAA,kBAAmB,oBAAoB,cAAvC,8DAAA,uCAAyC,CAAC,OAAO,KAAI,yBAAwB,8BAAA,wCAAA,kBAAmB,WAAW,KAAI,YAAY,IAAI,CAAC,UAAU;IACpK,GAAG;QAAC;QAAM;QAAmB;QAAQ;QAAsB;KAAY;IAEvE;;GAEC,GACD,MAAM,iBAAiB;QACrB,kBAAkB;QAClB,kBAAkB;QAClB,oCAAoC;QACpC,YACG,CAAA,SAAS,OAAO,GAAG,WAAW;YAC7B,kBAAkB,KAAK,KAAK,CAAC,KAAK,IAAI,CAAC,MAAM,GAAG;QAClD,GAAG,KAAI;IACX;IAEA;;;;;GAKC,GACD,CAAA,GAAA,sBAAQ,EAAE;QACR;QAEA,OAAO,IAAY,YAAY,aAAa,SAAS,OAAO;IAC9D,GAAG;QAAC;KAAK;IAET,qBACE,iCAAC;QACC,KAAK,QAAQ,QAAQ;QACrB,WAAU;QACV,OAAO;YACL,WAAW,eAAe,aAAa;YACvC,SAAS,GAAG,aAAa,QAAQ,EAAE,aAAa;QAClD;;YAGC,yBACC,gCAAC,CAAA,GAAA,cAAc;gBAAE,UAAU;gBAAU,OAAO,KAAK,KAAK;gBAAE,UAAU,KAAK,QAAQ;gBAAE,GAAG,GAAE,cAAA,KAAK,KAAK,cAAV,kCAAA,YAAY,GAAG;+BAErG,gCAAC,CAAA,GAAA,cAAa;gBAAE,UAAU;gBAAU,OAAO,KAAK,KAAK;gBAAE,UAAU,KAAK,QAAQ;;0BAIhF,gCAAC;gBACC,KAAI;gBACJ,WAAU;gBACV,OAAO;oBACL,aAAa;gBACf;0BAEC,mBAAmB,kBAClB,gCAAC;oBACC,WAAU;oBACV,OAAO;wBACL,WAAW,CAAC,WAAW,EAAE,eAAe,iBAAiB,CAAC;wBAC1D,cAAc;oBAChB;8BAEC,KAAK,IAAI,GAAG,CAAA,GAAA,4BAAoB,EAAE,KAAK,IAAI,IAAI;mCAGlD,gCAAC;oBAAE,WAAU;8BAAiC,KAAK,IAAI,GAAG,CAAA,GAAA,4BAAoB,EAAE,KAAK,IAAI,IAAI;;;;;AAKvG;IAEA,2CAAe;;;;;;;;;;;ACtFf,MAAM,wCAAkB,CAAC,YAAE,QAAQ,SAAE,KAAK,YAAE,QAAQ,OAAE,GAAG,EAAwB;IAC/E,MAAM,SAAS,CAAA,GAAA,6BAAU,EAAE,CAAC,QAAqB,MAAM,aAAa,CAAC,MAAM;IAE3E,qBACE,iCAAC,CAAA,GAAA,sCAAI,EAAE,QAAQ;;0BACb,gCAAC;gBAAI,WAAU;0BAA2F,qBAAA,+BAAA,SAAU,iBAAiB,CAAC;;0BAEtI,iCAAC;gBAAI,WAAU;;oBAEZ,qBACC,gCAAC;wBACC,WAAU;wBACV,OAAO;4BACL,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;4BAC9B,gBAAgB;4BAChB,kBAAkB;4BAClB,oBAAoB;wBACtB;;kCAKJ,iCAAC;wBAAI,WAAU;;0CACb,gCAAC;gCAAI,WAAU;0CAAqC,SAAS,MAAM,iBAAiB,CAAC;;0CACrF,gCAAC;gCAAI,WAAU;0CAAsC,WAAW,CAAA,GAAA,4BAAoB,EAAE,YAAY;;;;;;;;AAK5G;IAEA,2CAAe;;;;;;;;;;;;AChCf,MAAM,uCAAiB,CAAC,YAAE,QAAQ,SAAE,KAAK,YAAE,QAAQ,EAAuB;IACxE,MAAM,SAAS,CAAA,GAAA,6BAAU,EAAE,CAAC,QAAqB,MAAM,aAAa,CAAC,MAAM;IAE3E,qBACE,iCAAC,CAAA,GAAA,sCAAI,EAAE,QAAQ;;0BAEb,iCAAC;gBAAI,WAAU;;kCACb,gCAAC;wBAAI,WAAU;kCAA+D,qBAAA,+BAAA,SAAU,iBAAiB,CAAC;;kCAC1G,gCAAC;wBAAI,WAAU;kCAAsE,kBAAA,4BAAA,MAAO,iBAAiB,CAAC;;;;0BAIhH,gCAAC;gBAAI,WAAU;0BACb,cAAA,gCAAC;oBAAI,WAAU;8BAA0E,WAAW,CAAA,GAAA,4BAAoB,EAAE,YAAY;;;;;AAI9I;IAEA,2CAAe","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":"../"}
|