@davi-ai/retorik-framework 3.2.5 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{AttachmentDetail.0a576bf3.js → AttachmentDetail.37a709af.js} +160 -174
- package/dist/AttachmentDetail.37a709af.js.map +1 -0
- package/dist/{AttachmentDetail.c4286a45.js → AttachmentDetail.53ba969a.js} +159 -173
- package/dist/AttachmentDetail.53ba969a.js.map +1 -0
- package/dist/{CustomView.913a9f32.js → CustomView.9930c671.js} +16 -20
- package/dist/CustomView.9930c671.js.map +1 -0
- package/dist/{CustomView.edf84de1.js → CustomView.bf84bdf3.js} +16 -20
- package/dist/CustomView.bf84bdf3.js.map +1 -0
- package/dist/{Emergency.0cf005ce.js → Emergency.1e63c85f.js} +38 -30
- package/dist/Emergency.1e63c85f.js.map +1 -0
- package/dist/{Emergency.897ee3c7.js → Emergency.89b4d9ed.js} +37 -29
- package/dist/Emergency.89b4d9ed.js.map +1 -0
- package/dist/{FullScreenImage.9a9b978e.js → FullScreenImage.17df27bf.js} +11 -18
- package/dist/FullScreenImage.17df27bf.js.map +1 -0
- package/dist/{FullScreenImage.1fe27198.js → FullScreenImage.99e19e10.js} +11 -18
- package/dist/FullScreenImage.99e19e10.js.map +1 -0
- package/dist/{HistoryList.4c303dc6.js → HistoryList.3b4b1ffb.js} +35 -36
- package/dist/HistoryList.3b4b1ffb.js.map +1 -0
- package/dist/{HistoryList.03a56119.js → HistoryList.e5c01f21.js} +35 -36
- package/dist/HistoryList.e5c01f21.js.map +1 -0
- package/dist/LanguageChoice.1d866cfa.js +119 -0
- package/dist/LanguageChoice.1d866cfa.js.map +1 -0
- package/dist/LanguageChoice.cce361a3.js +128 -0
- package/dist/LanguageChoice.cce361a3.js.map +1 -0
- package/dist/{LittleWeatherContainer.07937cf3.js → LittleWeatherContainer.7e41105e.js} +3 -3
- package/dist/LittleWeatherContainer.7e41105e.js.map +1 -0
- package/dist/{LittleWeatherContainer.d27a6b8a.js → LittleWeatherContainer.ee087e22.js} +3 -3
- package/dist/LittleWeatherContainer.ee087e22.js.map +1 -0
- package/dist/MapContainer.14c28128.js +117 -0
- package/dist/MapContainer.14c28128.js.map +1 -0
- package/dist/MapContainer.f22ad81f.js +104 -0
- package/dist/MapContainer.f22ad81f.js.map +1 -0
- package/dist/{NewsContainer.a91d9131.js → NewsContainer.c0a24775.js} +84 -88
- package/dist/NewsContainer.c0a24775.js.map +1 -0
- package/dist/{NewsContainer.f0d2ee9c.js → NewsContainer.c3331d80.js} +79 -83
- package/dist/NewsContainer.c3331d80.js.map +1 -0
- package/dist/PrintingPreview.5351c733.js +147 -0
- package/dist/PrintingPreview.5351c733.js.map +1 -0
- package/dist/PrintingPreview.6d70355b.js +138 -0
- package/dist/PrintingPreview.6d70355b.js.map +1 -0
- package/dist/{SpiritEngineWrapper.1d8db53d.js → SpiritEngineWrapper.21ea10d4.js} +8 -7
- package/dist/SpiritEngineWrapper.21ea10d4.js.map +1 -0
- package/dist/{SpiritEngineWrapper.27e9c120.js → SpiritEngineWrapper.39627300.js} +8 -7
- package/dist/SpiritEngineWrapper.39627300.js.map +1 -0
- package/dist/{ThreeJsWrapper.09c689b8.js → ThreeJsWrapper.8f15a85b.js} +13 -16
- package/dist/ThreeJsWrapper.8f15a85b.js.map +1 -0
- package/dist/{ThreeJsWrapper.7918143f.js → ThreeJsWrapper.a46ee0e9.js} +13 -16
- package/dist/ThreeJsWrapper.a46ee0e9.js.map +1 -0
- package/dist/VeilleManager.443b366e.js +569 -0
- package/dist/VeilleManager.443b366e.js.map +1 -0
- package/dist/VeilleManager.d8bde1ee.js +550 -0
- package/dist/VeilleManager.d8bde1ee.js.map +1 -0
- package/dist/{Weather.99917b66.js → Weather.bb414852.js} +73 -117
- package/dist/Weather.bb414852.js.map +1 -0
- package/dist/{Weather.cf58823d.js → Weather.ced9b467.js} +70 -115
- package/dist/Weather.ced9b467.js.map +1 -0
- package/dist/index.d.ts +401 -366
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +47604 -19604
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +43539 -15580
- package/dist/index.modern.js.map +1 -1
- package/package.json +10 -10
- package/README.md +0 -6
- package/dist/AttachmentDetail.0a576bf3.js.map +0 -1
- package/dist/AttachmentDetail.c4286a45.js.map +0 -1
- package/dist/CustomView.913a9f32.js.map +0 -1
- package/dist/CustomView.edf84de1.js.map +0 -1
- package/dist/Emergency.0cf005ce.js.map +0 -1
- package/dist/Emergency.897ee3c7.js.map +0 -1
- package/dist/FullScreenImage.1fe27198.js.map +0 -1
- package/dist/FullScreenImage.9a9b978e.js.map +0 -1
- package/dist/HistoryList.03a56119.js.map +0 -1
- package/dist/HistoryList.4c303dc6.js.map +0 -1
- package/dist/LanguageChoice.623ee802.js +0 -113
- package/dist/LanguageChoice.623ee802.js.map +0 -1
- package/dist/LanguageChoice.ff0cd04c.js +0 -122
- package/dist/LanguageChoice.ff0cd04c.js.map +0 -1
- package/dist/LittleWeatherContainer.07937cf3.js.map +0 -1
- package/dist/LittleWeatherContainer.d27a6b8a.js.map +0 -1
- package/dist/NewsContainer.a91d9131.js.map +0 -1
- package/dist/NewsContainer.f0d2ee9c.js.map +0 -1
- package/dist/SpiritEngineWrapper.1d8db53d.js.map +0 -1
- package/dist/SpiritEngineWrapper.27e9c120.js.map +0 -1
- package/dist/ThreeJsWrapper.09c689b8.js.map +0 -1
- package/dist/ThreeJsWrapper.7918143f.js.map +0 -1
- package/dist/Weather.99917b66.js.map +0 -1
- package/dist/Weather.cf58823d.js.map +0 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import "./Weather.
|
|
1
|
+
import "./Weather.ced9b467.js";
|
|
2
2
|
import {jsxs as $7qgKV$jsxs, jsx as $7qgKV$jsx} from "react/jsx-runtime";
|
|
3
3
|
import $7qgKV$react, {useState as $7qgKV$useState, useRef as $7qgKV$useRef, useEffect as $7qgKV$useEffect, useMemo as $7qgKV$useMemo} from "react";
|
|
4
|
+
import {useDispatch as $7qgKV$useDispatch, useSelector as $7qgKV$useSelector} from "react-redux";
|
|
4
5
|
|
|
5
6
|
|
|
6
7
|
function $parcel$defineInteropFlag(a) {
|
|
@@ -22,15 +23,8 @@ $parcel$export(module.exports, "default", () => $aedc1e5f954603b8$export$2e2bcd8
|
|
|
22
23
|
|
|
23
24
|
|
|
24
25
|
|
|
25
|
-
var $2fuDN = parcelRequire("2fuDN");
|
|
26
26
|
|
|
27
|
-
var $
|
|
28
|
-
|
|
29
|
-
var $i1rfm = parcelRequire("i1rfm");
|
|
30
|
-
|
|
31
|
-
var $1x02c = parcelRequire("1x02c");
|
|
32
|
-
|
|
33
|
-
var $aNpqK = parcelRequire("aNpqK");
|
|
27
|
+
var $8ItUL = parcelRequire("8ItUL");
|
|
34
28
|
|
|
35
29
|
var $4ucVo = parcelRequire("4ucVo");
|
|
36
30
|
|
|
@@ -58,36 +52,51 @@ var $aedc1e5f954603b8$var$Steps = /*#__PURE__*/ function(Steps) {
|
|
|
58
52
|
Steps[Steps["ending"] = 5] = "ending";
|
|
59
53
|
return Steps;
|
|
60
54
|
}($aedc1e5f954603b8$var$Steps || {});
|
|
61
|
-
const $aedc1e5f954603b8$var$NewsContainer = ({ hideMenu: hideMenu, isRetorikNews: isRetorikNews, handleEndedWithoutloop: handleEndedWithoutloop })=>{
|
|
62
|
-
const
|
|
63
|
-
const
|
|
64
|
-
const
|
|
65
|
-
const
|
|
66
|
-
const
|
|
67
|
-
const
|
|
68
|
-
const
|
|
69
|
-
const
|
|
70
|
-
const
|
|
71
|
-
const
|
|
72
|
-
const
|
|
55
|
+
const $aedc1e5f954603b8$var$NewsContainer = ({ hideMenu: hideMenu, isRetorikNews: isRetorikNews, loop: loop, fromVeille: fromVeille, handleEndedWithoutloop: handleEndedWithoutloop })=>{
|
|
56
|
+
const dispatch = (0, $7qgKV$useDispatch)();
|
|
57
|
+
const translation = (0, $7qgKV$useSelector)((state)=>state.localeReducer.currentTranslations);
|
|
58
|
+
const configuration = (0, $7qgKV$useSelector)((state)=>state.retorikReducer.configuration);
|
|
59
|
+
const displaySubtitles = (0, $7qgKV$useSelector)((state)=>state.retorikReducer.displaySubtitles);
|
|
60
|
+
const muted = (0, $7qgKV$useSelector)((state)=>state.speechReducer.muted);
|
|
61
|
+
const isMobile = (0, $7qgKV$useSelector)((state)=>state.viewReducer.isMobile);
|
|
62
|
+
const isLandscape = (0, $7qgKV$useSelector)((state)=>state.viewReducer.isLandscape);
|
|
63
|
+
const isBorne = (0, $7qgKV$useSelector)((state)=>state.viewReducer.isBorne);
|
|
64
|
+
const configurations = (0, $7qgKV$useSelector)((state)=>state.viewReducer.configurations);
|
|
65
|
+
const conversationId = (0, $7qgKV$useSelector)((state)=>state.activityReducer.conversationId);
|
|
66
|
+
const storedConversationData = (0, $7qgKV$useSelector)((state)=>state.directlineReducer.storedVeilleConversationData);
|
|
73
67
|
const [displayData, setDisplayData] = (0, $7qgKV$useState)(configurations.views.news || configurations.views.home);
|
|
74
68
|
const [step, setStep] = (0, $7qgKV$useState)(configurations.views.news?.openingVideo ? 1 : 2);
|
|
75
69
|
const timerRef = (0, $7qgKV$useRef)(null);
|
|
76
70
|
const newsEndedTimerRef = (0, $7qgKV$useRef)(null);
|
|
71
|
+
const oldDiplaySubtitles = (0, $7qgKV$useRef)(displaySubtitles);
|
|
77
72
|
/**
|
|
78
73
|
* On call :
|
|
79
74
|
* - if the component is news-only, return
|
|
80
75
|
* - else set ViewContext's route state to 'home'
|
|
81
76
|
*/ const handleBack = ()=>{
|
|
82
77
|
if (isRetorikNews) return;
|
|
83
|
-
setRoute((0, $4ucVo.Routes).Home);
|
|
78
|
+
dispatch((0, $8ItUL.storeActions).view.setRoute((0, $4ucVo.Routes).Home));
|
|
84
79
|
};
|
|
85
80
|
(0, $7qgKV$useEffect)(()=>{
|
|
86
|
-
configuration.useOldRemote && setDisplayControls(false);
|
|
87
|
-
muted
|
|
81
|
+
configuration.useOldRemote && dispatch((0, $8ItUL.storeActions).view.setDisplayControls(false));
|
|
82
|
+
// Force muted state to false if we are not in the veille
|
|
83
|
+
muted && !fromVeille && dispatch((0, $8ItUL.storeActions).speech.setMuted(false));
|
|
84
|
+
// Force hiding subtitles if we are in the veille
|
|
85
|
+
fromVeille && dispatch((0, $8ItUL.storeActions).retorik.setDisplaySubtitles(false));
|
|
88
86
|
return ()=>{
|
|
87
|
+
// If we exit news from the veille, let's store the conversation id for next turn, clear activity store and set back subtitles
|
|
88
|
+
if (fromVeille) {
|
|
89
|
+
!storedConversationData?.id && conversationId && dispatch((0, $8ItUL.storeActions).directline.setStoredVeilleConversationData(conversationId));
|
|
90
|
+
dispatch((0, $8ItUL.storeActions).activity.resetActivityStore());
|
|
91
|
+
dispatch((0, $8ItUL.storeActions).retorik.setDisplaySubtitles(oldDiplaySubtitles.current));
|
|
92
|
+
}
|
|
89
93
|
// Send closing events unless we are using RetorikNews component
|
|
90
|
-
if (!isRetorikNews)
|
|
94
|
+
if (!isRetorikNews) dispatch((0, $8ItUL.storeActions).directline.sendEvent({
|
|
95
|
+
name: 'Davi.CloseWindow',
|
|
96
|
+
callback: ()=>dispatch((0, $8ItUL.storeActions).directline.sendEvent({
|
|
97
|
+
name: 'Davi.CloseWindowNews'
|
|
98
|
+
}))
|
|
99
|
+
}));
|
|
91
100
|
};
|
|
92
101
|
}, []);
|
|
93
102
|
/**
|
|
@@ -99,19 +108,19 @@ const $aedc1e5f954603b8$var$NewsContainer = ({ hideMenu: hideMenu, isRetorikNews
|
|
|
99
108
|
switch(step){
|
|
100
109
|
case 1:
|
|
101
110
|
{
|
|
102
|
-
setDisplayAgentInNews(false);
|
|
111
|
+
dispatch((0, $8ItUL.storeActions).retorik.setDisplayAgentInNews(false));
|
|
103
112
|
const videoUrl = configurations.views.news?.openingVideo;
|
|
104
|
-
videoUrl ? setViewContextCurrentConfiguration(videoUrl) : setStep(2);
|
|
113
|
+
videoUrl && !fromVeille ? setViewContextCurrentConfiguration(videoUrl) : setStep(2);
|
|
105
114
|
break;
|
|
106
115
|
}
|
|
107
116
|
case 2:
|
|
108
|
-
setDisplayAgentInNews(true);
|
|
117
|
+
dispatch((0, $8ItUL.storeActions).retorik.setDisplayAgentInNews(true));
|
|
109
118
|
setDisplayData(configurations.views.news || configurations.views.home);
|
|
110
119
|
break;
|
|
111
120
|
case 3:
|
|
112
121
|
break;
|
|
113
122
|
case 4:
|
|
114
|
-
setDisplayAgentInNews(false);
|
|
123
|
+
dispatch((0, $8ItUL.storeActions).retorik.setDisplayAgentInNews(false));
|
|
115
124
|
// If the position is known, display the weather page during 10 seconds, otherwise switch to the next step directly
|
|
116
125
|
configuration.position?.latitude && configuration.position?.longitude ? timerRef.current = setTimeout(()=>{
|
|
117
126
|
setStep(5);
|
|
@@ -119,17 +128,17 @@ const $aedc1e5f954603b8$var$NewsContainer = ({ hideMenu: hideMenu, isRetorikNews
|
|
|
119
128
|
break;
|
|
120
129
|
case 5:
|
|
121
130
|
{
|
|
122
|
-
setDisplayAgentInNews(false);
|
|
131
|
+
dispatch((0, $8ItUL.storeActions).retorik.setDisplayAgentInNews(false));
|
|
123
132
|
const videoUrl = configurations.views.news?.openingVideo;
|
|
124
|
-
videoUrl ? setViewContextCurrentConfiguration(videoUrl) : exitNewsOrLoop();
|
|
133
|
+
videoUrl && !fromVeille ? setViewContextCurrentConfiguration(videoUrl) : exitNewsOrLoop();
|
|
125
134
|
break;
|
|
126
135
|
}
|
|
127
136
|
default:
|
|
128
137
|
break;
|
|
129
138
|
}
|
|
130
139
|
return ()=>{
|
|
131
|
-
timerRef && clearTimeout(timerRef.current);
|
|
132
|
-
newsEndedTimerRef && clearTimeout(newsEndedTimerRef.current);
|
|
140
|
+
timerRef?.current && clearTimeout(timerRef.current);
|
|
141
|
+
newsEndedTimerRef?.current && clearTimeout(newsEndedTimerRef.current);
|
|
133
142
|
};
|
|
134
143
|
}, [
|
|
135
144
|
step
|
|
@@ -149,17 +158,17 @@ const $aedc1e5f954603b8$var$NewsContainer = ({ hideMenu: hideMenu, isRetorikNews
|
|
|
149
158
|
};
|
|
150
159
|
/**
|
|
151
160
|
* On call :
|
|
152
|
-
* - send the event 'newsEnded' used in retorik Kiosk
|
|
153
161
|
* - if the component is news-only :
|
|
154
162
|
* + if 'loop' is explicitly set to false, call props' handleEndedWithoutloop method if defined. Call handleBack method otherwise
|
|
155
163
|
* + if 'loop' is not false, loop by setting step state to Steps.news
|
|
156
164
|
* - or else if 'loop' parameter in configuration is true, get back to Steps.news step. Call handleBack method otherwise
|
|
157
165
|
*/ const exitNewsOrLoop = ()=>{
|
|
158
|
-
// Send event 'newsEnded'
|
|
159
|
-
const endEvent = new Event('newsEnded');
|
|
160
|
-
document.dispatchEvent(endEvent);
|
|
161
166
|
// Relaunch from the start if this is a news-only component and loop hasn't explicitly been set to false
|
|
162
|
-
|
|
167
|
+
if (isRetorikNews) {
|
|
168
|
+
if (fromVeille) loop ? setStep(2) : handleEndedWithoutloop?.();
|
|
169
|
+
else displayData.loop !== false || loop ? setStep(2) : handleEndedWithoutloop ? handleEndedWithoutloop() : handleBack();
|
|
170
|
+
} else // Relaunch from the start if the loop is activated, otherwise get back to homepage
|
|
171
|
+
displayData.loop || loop ? setStep(2) : handleBack();
|
|
163
172
|
};
|
|
164
173
|
/**
|
|
165
174
|
* On video end :
|
|
@@ -185,7 +194,8 @@ const $aedc1e5f954603b8$var$NewsContainer = ({ hideMenu: hideMenu, isRetorikNews
|
|
|
185
194
|
setStep(4);
|
|
186
195
|
}, 3000));
|
|
187
196
|
};
|
|
188
|
-
return /*#__PURE__*/ (0, $7qgKV$jsxs)(
|
|
197
|
+
return /*#__PURE__*/ (0, $7qgKV$jsxs)("div", {
|
|
198
|
+
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",
|
|
189
199
|
children: [
|
|
190
200
|
/*#__PURE__*/ (0, $7qgKV$jsx)((0, $6hdFJ.default), {
|
|
191
201
|
config: displayData.background,
|
|
@@ -211,7 +221,7 @@ const $aedc1e5f954603b8$var$NewsContainer = ({ hideMenu: hideMenu, isRetorikNews
|
|
|
211
221
|
onEnd: handleNewsEnd,
|
|
212
222
|
isRetorikNews: isRetorikNews
|
|
213
223
|
}),
|
|
214
|
-
step === 4 && /*#__PURE__*/ (0, $7qgKV$jsx)((0, $2pbjN.default), {
|
|
224
|
+
step === 4 && configuration.position?.latitude && configuration.position?.longitude && /*#__PURE__*/ (0, $7qgKV$jsx)((0, $2pbjN.default), {
|
|
215
225
|
handleClose: handleBack
|
|
216
226
|
}),
|
|
217
227
|
!hideMenu && /*#__PURE__*/ (0, $7qgKV$jsx)((0, $9uOFS.default), {
|
|
@@ -220,7 +230,6 @@ const $aedc1e5f954603b8$var$NewsContainer = ({ hideMenu: hideMenu, isRetorikNews
|
|
|
220
230
|
}),
|
|
221
231
|
!hideMenu && isLandscape && !configuration.useOldRemote && !isRetorikNews && /*#__PURE__*/ (0, $7qgKV$jsx)((0, $g3FET.default), {
|
|
222
232
|
onClick: handleBack,
|
|
223
|
-
className: "rf-z-menu",
|
|
224
233
|
showLabel: true
|
|
225
234
|
}),
|
|
226
235
|
!hideMenu && isBorne && !configuration.useOldRemote && !isRetorikNews && /*#__PURE__*/ (0, $7qgKV$jsx)((0, $9r8dA.default), {
|
|
@@ -238,10 +247,9 @@ $parcel$export(module.exports, "default", () => $c1e5018217fb7fb5$export$2e2bcd8
|
|
|
238
247
|
|
|
239
248
|
|
|
240
249
|
|
|
241
|
-
var $2fuDN = parcelRequire("2fuDN");
|
|
242
250
|
const $c1e5018217fb7fb5$var$Time = ({ belowReturnButton: belowReturnButton })=>{
|
|
243
|
-
const translation = (0, $
|
|
244
|
-
const locale = (0, $
|
|
251
|
+
const translation = (0, $7qgKV$useSelector)((state)=>state.localeReducer.currentTranslations);
|
|
252
|
+
const locale = (0, $7qgKV$useSelector)((state)=>state.localeReducer.locale);
|
|
245
253
|
const [time, setTime] = (0, $7qgKV$useState)('');
|
|
246
254
|
const timerRef = (0, $7qgKV$useRef)(null);
|
|
247
255
|
/**
|
|
@@ -291,13 +299,8 @@ $parcel$export(module.exports, "default", () => $c6bafeb4a00d3b53$export$2e2bcd8
|
|
|
291
299
|
|
|
292
300
|
|
|
293
301
|
|
|
294
|
-
var $1Qww3 = parcelRequire("1Qww3");
|
|
295
|
-
|
|
296
|
-
var $aNpqK = parcelRequire("aNpqK");
|
|
297
302
|
|
|
298
|
-
var $
|
|
299
|
-
|
|
300
|
-
var $j67YK = parcelRequire("j67YK");
|
|
303
|
+
var $8ItUL = parcelRequire("8ItUL");
|
|
301
304
|
|
|
302
305
|
var $kThjX = parcelRequire("kThjX");
|
|
303
306
|
|
|
@@ -307,15 +310,13 @@ var $auAlt = parcelRequire("auAlt");
|
|
|
307
310
|
|
|
308
311
|
var $9lsRd = parcelRequire("9lsRd");
|
|
309
312
|
const $c6bafeb4a00d3b53$var$News = ({ intervalInSeconds: intervalInSeconds = 3, onEnd: onEnd, isRetorikNews: isRetorikNews })=>{
|
|
313
|
+
const dispatch = (0, $7qgKV$useDispatch)();
|
|
310
314
|
const { newsAttachments: newsAttachments, activity: activity } = (0, $kThjX.default)();
|
|
311
|
-
const route = (0, $
|
|
312
|
-
const isMobile = (0, $
|
|
313
|
-
const newsConfiguration = (0, $
|
|
314
|
-
const currentDeviceType = (0, $
|
|
315
|
-
const retorikNewsEnded = (0, $
|
|
316
|
-
const addToStreamingQueue = (0, $i1rfm.useSpeechStore)((state)=>state.actions.addToStreamingQueue);
|
|
317
|
-
const setRetorikNewsEnded = (0, $j67YK.useUtilsStore)((state)=>state.actions.setRetorikNewsEnded);
|
|
318
|
-
const sendEvent = (0, $aNpqK.useDirectlineStore)((state)=>state.actions.sendEvent);
|
|
315
|
+
const route = (0, $7qgKV$useSelector)((state)=>state.viewReducer.route);
|
|
316
|
+
const isMobile = (0, $7qgKV$useSelector)((state)=>state.viewReducer.isMobile);
|
|
317
|
+
const newsConfiguration = (0, $7qgKV$useSelector)((state)=>state.viewReducer.configurations.views.news);
|
|
318
|
+
const currentDeviceType = (0, $7qgKV$useSelector)((state)=>state.viewReducer.currentDeviceType);
|
|
319
|
+
const retorikNewsEnded = (0, $7qgKV$useSelector)((state)=>state.utilsReducer.retorikNewsEnded);
|
|
319
320
|
const [carouselGridRowStart, setCarouselGridRowStart] = (0, $7qgKV$useState)();
|
|
320
321
|
const [carouselGridRowSpan, setCarouselGridRowSpan] = (0, $7qgKV$useState)();
|
|
321
322
|
const [bannerGridRowStart, setBannerGridRowStart] = (0, $7qgKV$useState)(10);
|
|
@@ -331,10 +332,12 @@ const $c6bafeb4a00d3b53$var$News = ({ intervalInSeconds: intervalInSeconds = 3,
|
|
|
331
332
|
]);
|
|
332
333
|
(0, $7qgKV$useEffect)(()=>{
|
|
333
334
|
if (!newsAttachments.length) setTimeout(()=>{
|
|
334
|
-
|
|
335
|
+
dispatch((0, $8ItUL.storeActions).directline.sendEvent({
|
|
336
|
+
name: 'news.getAllNews'
|
|
337
|
+
}));
|
|
335
338
|
}, 2000);
|
|
336
339
|
return ()=>{
|
|
337
|
-
timerRef && clearTimeout(timerRef.current);
|
|
340
|
+
timerRef.current && clearTimeout(timerRef.current);
|
|
338
341
|
};
|
|
339
342
|
}, []);
|
|
340
343
|
(0, $7qgKV$useEffect)(()=>{
|
|
@@ -434,7 +437,7 @@ const $c6bafeb4a00d3b53$var$News = ({ intervalInSeconds: intervalInSeconds = 3,
|
|
|
434
437
|
...activity,
|
|
435
438
|
speak: `${textTitle}${textSubtitle}${currentNew.text}`
|
|
436
439
|
};
|
|
437
|
-
addToStreamingQueue(tempActivity);
|
|
440
|
+
dispatch((0, $8ItUL.storeActions).speech.addToStreamingQueue(tempActivity));
|
|
438
441
|
}
|
|
439
442
|
}, [
|
|
440
443
|
activity,
|
|
@@ -458,11 +461,11 @@ const $c6bafeb4a00d3b53$var$News = ({ intervalInSeconds: intervalInSeconds = 3,
|
|
|
458
461
|
if (news.length) {
|
|
459
462
|
if (current < news.length - 1) {
|
|
460
463
|
const delay = current < news.length - 1 ? intervalInSeconds : intervalInSeconds * 3;
|
|
461
|
-
timerRef && clearTimeout(timerRef.current);
|
|
464
|
+
timerRef.current && clearTimeout(timerRef.current);
|
|
462
465
|
if (route === (0, $4ucVo.Routes).News || isRetorikNews) timerRef.current = setTimeout(next, delay * 1000);
|
|
463
466
|
} else onEnd();
|
|
464
467
|
}
|
|
465
|
-
setRetorikNewsEnded(false);
|
|
468
|
+
dispatch((0, $8ItUL.storeActions).utils.setRetorikNewsEnded(false));
|
|
466
469
|
}
|
|
467
470
|
}, [
|
|
468
471
|
retorikNewsEnded
|
|
@@ -508,9 +511,8 @@ $parcel$export(module.exports, "default", () => $07fb045e03ad37d0$export$2e2bcd8
|
|
|
508
511
|
|
|
509
512
|
var $5CsC6 = parcelRequire("5CsC6");
|
|
510
513
|
|
|
511
|
-
var $9GPj7 = parcelRequire("9GPj7");
|
|
512
514
|
const $07fb045e03ad37d0$var$useNews = ()=>{
|
|
513
|
-
const activities = (0, $
|
|
515
|
+
const activities = (0, $7qgKV$useSelector)((state)=>state.activityReducer.botEventActivities);
|
|
514
516
|
if (!activities.length) return {
|
|
515
517
|
newsAttachments: []
|
|
516
518
|
};
|
|
@@ -543,9 +545,6 @@ $parcel$export(module.exports, "default", () => $de1f380ff3be314f$export$2e2bcd8
|
|
|
543
545
|
|
|
544
546
|
|
|
545
547
|
|
|
546
|
-
var $1Qww3 = parcelRequire("1Qww3");
|
|
547
|
-
|
|
548
|
-
var $2fuDN = parcelRequire("2fuDN");
|
|
549
548
|
|
|
550
549
|
var $7pypd = parcelRequire("7pypd");
|
|
551
550
|
|
|
@@ -553,23 +552,22 @@ var $fjXOk = parcelRequire("fjXOk");
|
|
|
553
552
|
|
|
554
553
|
var $6q7hI = parcelRequire("6q7hI");
|
|
555
554
|
const $de1f380ff3be314f$var$Banner = ({ news: news, gridRowStart: gridRowStart, gridRowSpan: gridRowSpan, alignSelfEnd: alignSelfEnd })=>{
|
|
556
|
-
const translation = (0, $
|
|
557
|
-
const locale = (0, $
|
|
558
|
-
const
|
|
559
|
-
const
|
|
560
|
-
const
|
|
561
|
-
const
|
|
555
|
+
const translation = (0, $7qgKV$useSelector)((state)=>state.localeReducer.currentTranslations);
|
|
556
|
+
const locale = (0, $7qgKV$useSelector)((state)=>state.localeReducer.localeForRetorikStudioContent);
|
|
557
|
+
const localizedBannerTitle = (0, $7qgKV$useSelector)((state)=>state.localeReducer.localizedBannerTitle);
|
|
558
|
+
const isRTL = (0, $7qgKV$useSelector)((state)=>state.localeReducer.isRTL);
|
|
559
|
+
const isMobile = (0, $7qgKV$useSelector)((state)=>state.viewReducer.isMobile);
|
|
560
|
+
const currentWidth = (0, $7qgKV$useSelector)((state)=>state.viewReducer.currentWidth);
|
|
561
|
+
const newsConfiguration = (0, $7qgKV$useSelector)((state)=>state.viewReducer.configurations.views.news);
|
|
562
562
|
const timerRef = (0, $7qgKV$useRef)(null);
|
|
563
563
|
const [scrollDuration, setScrollDuration] = (0, $7qgKV$useState)(0);
|
|
564
564
|
const category = (0, $7qgKV$useMemo)(()=>{
|
|
565
|
-
|
|
566
|
-
else if (newsConfiguration?.bannerTitleLocalized?.[locale]) return newsConfiguration.bannerTitleLocalized[locale];
|
|
567
|
-
else if (newsConfiguration?.bannerTitle) return newsConfiguration.bannerTitle;
|
|
568
|
-
return translation.news.continuous;
|
|
565
|
+
return news.category || newsConfiguration?.bannerTitleLocalized?.[locale] || localizedBannerTitle || newsConfiguration?.bannerTitle || translation.news.continuous;
|
|
569
566
|
}, [
|
|
570
567
|
news,
|
|
571
568
|
newsConfiguration,
|
|
572
569
|
locale,
|
|
570
|
+
localizedBannerTitle,
|
|
573
571
|
translation
|
|
574
572
|
]);
|
|
575
573
|
/**
|
|
@@ -641,11 +639,10 @@ $parcel$export(module.exports, "default", () => $262dee73bb235081$export$2e2bcd8
|
|
|
641
639
|
|
|
642
640
|
|
|
643
641
|
|
|
644
|
-
var $2fuDN = parcelRequire("2fuDN");
|
|
645
642
|
|
|
646
643
|
var $7pypd = parcelRequire("7pypd");
|
|
647
644
|
const $262dee73bb235081$var$BannerTopMobile = ({ category: category, title: title, subtitle: subtitle, url: url })=>{
|
|
648
|
-
const locale = (0, $
|
|
645
|
+
const locale = (0, $7qgKV$useSelector)((state)=>state.localeReducer.locale);
|
|
649
646
|
return /*#__PURE__*/ (0, $7qgKV$jsxs)((0, $7qgKV$react).Fragment, {
|
|
650
647
|
children: [
|
|
651
648
|
/*#__PURE__*/ (0, $7qgKV$jsx)("div", {
|
|
@@ -692,11 +689,10 @@ $parcel$export(module.exports, "default", () => $5485971f80937390$export$2e2bcd8
|
|
|
692
689
|
|
|
693
690
|
|
|
694
691
|
|
|
695
|
-
var $2fuDN = parcelRequire("2fuDN");
|
|
696
692
|
|
|
697
693
|
var $7pypd = parcelRequire("7pypd");
|
|
698
694
|
const $5485971f80937390$var$BannerTopLarge = ({ category: category, title: title, subtitle: subtitle })=>{
|
|
699
|
-
const locale = (0, $
|
|
695
|
+
const locale = (0, $7qgKV$useSelector)((state)=>state.localeReducer.locale);
|
|
700
696
|
return /*#__PURE__*/ (0, $7qgKV$jsxs)((0, $7qgKV$react).Fragment, {
|
|
701
697
|
children: [
|
|
702
698
|
/*#__PURE__*/ (0, $7qgKV$jsxs)("div", {
|
|
@@ -730,4 +726,4 @@ var $5485971f80937390$export$2e2bcd8739ae039 = $5485971f80937390$var$BannerTopLa
|
|
|
730
726
|
|
|
731
727
|
|
|
732
728
|
|
|
733
|
-
//# sourceMappingURL=NewsContainer.
|
|
729
|
+
//# sourceMappingURL=NewsContainer.c3331d80.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"mappings":"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","sources":["src/components/News/NewsContainer.tsx","src/components/News/Time.tsx","src/components/News/News.tsx","src/hooks/useNews.tsx","src/components/News/Banner.tsx","src/components/News/BannerTopMobile.tsx","src/components/News/BannerTopLarge.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef } from 'react'\r\nimport { useDispatch, useSelector } from 'react-redux'\r\nimport { RootState, storeActions } from '../../store'\r\n\r\nimport type { NewsConfig } from '../../models/types'\r\nimport { Routes } from '../../models/enums'\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): 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<NodeJS.Timer | null>(null)\r\n const newsEndedTimerRef = useRef<NodeJS.Timer | 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 }\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): 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-600 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 } from '../../store'\r\nimport useNews from '../../hooks/useNews'\r\n\r\nimport type { Image, Media } from '../../models/attachmentTypes'\r\nimport { RetorikActivity } from '../../models/activityTypes'\r\nimport { DeviceType, Routes } from '../../models/enums'\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): 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 }, 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 { CONTENT_TYPE_NEWS, NewsContent } from '../models/attachmentTypes'\r\nimport { useSelector } from 'react-redux'\r\nimport { RootState } from '../store'\r\nimport type { RetorikActivity } from '../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): 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): 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-600 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): 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-600 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.c3331d80.js.map"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
var $lKV5y$reactjsxruntime = require("react/jsx-runtime");
|
|
2
|
+
var $lKV5y$react = require("react");
|
|
3
|
+
var $lKV5y$reactpdf = require("react-pdf");
|
|
4
|
+
var $lKV5y$pdfjsdistbuildpdfworkerjs = require("pdfjs-dist/build/pdf.worker.js");
|
|
5
|
+
var $lKV5y$reactredux = require("react-redux");
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
function $parcel$defineInteropFlag(a) {
|
|
9
|
+
Object.defineProperty(a, '__esModule', {value: true, configurable: true});
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
function $parcel$export(e, n, v, s) {
|
|
13
|
+
Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
var $parcel$global =
|
|
17
|
+
typeof globalThis !== 'undefined'
|
|
18
|
+
? globalThis
|
|
19
|
+
: typeof self !== 'undefined'
|
|
20
|
+
? self
|
|
21
|
+
: typeof window !== 'undefined'
|
|
22
|
+
? window
|
|
23
|
+
: typeof global !== 'undefined'
|
|
24
|
+
? global
|
|
25
|
+
: {};
|
|
26
|
+
var parcelRequire = $parcel$global["parcelRequirea39d"];
|
|
27
|
+
var parcelRegister = parcelRequire.register;
|
|
28
|
+
parcelRegister("eO1En", function(module, exports) {
|
|
29
|
+
|
|
30
|
+
$parcel$defineInteropFlag(module.exports);
|
|
31
|
+
|
|
32
|
+
$parcel$export(module.exports, "default", () => $6e2b7d52dc071237$export$2e2bcd8739ae039);
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
var $kpW3P = parcelRequire("kpW3P");
|
|
40
|
+
|
|
41
|
+
var $7VgIE = parcelRequire("7VgIE");
|
|
42
|
+
|
|
43
|
+
var $60kUR = parcelRequire("60kUR");
|
|
44
|
+
|
|
45
|
+
var $eSTK6 = parcelRequire("eSTK6");
|
|
46
|
+
// Configure react-pdf worker
|
|
47
|
+
(0, $lKV5y$reactpdf.pdfjs).GlobalWorkerOptions.workerSrc = $lKV5y$pdfjsdistbuildpdfworkerjs;
|
|
48
|
+
const $6e2b7d52dc071237$var$PrintingPreview = ({ url: url, printingAllowed: printingAllowed })=>{
|
|
49
|
+
const dispatch = (0, $lKV5y$reactredux.useDispatch)();
|
|
50
|
+
const translation = (0, $lKV5y$reactredux.useSelector)((state)=>state.localeReducer.currentTranslations);
|
|
51
|
+
const printingCallback = (0, $lKV5y$reactredux.useSelector)((state)=>state.utilsReducer.printingCallback);
|
|
52
|
+
const [documentLoaded, setDocumentLoaded] = (0, $lKV5y$react.useState)(false);
|
|
53
|
+
const [numberOfPages, setNumberOfPages] = (0, $lKV5y$react.useState)(0);
|
|
54
|
+
const [pageNumber, setPageNumber] = (0, $lKV5y$react.useState)(1);
|
|
55
|
+
const onDocumentLoadSuccess = ({ numPages: numPages })=>{
|
|
56
|
+
setNumberOfPages(numPages);
|
|
57
|
+
setDocumentLoaded(true);
|
|
58
|
+
};
|
|
59
|
+
const handleClick = ()=>{
|
|
60
|
+
printingCallback === null || printingCallback === void 0 ? void 0 : printingCallback(url);
|
|
61
|
+
handleClose();
|
|
62
|
+
};
|
|
63
|
+
const handleClose = ()=>{
|
|
64
|
+
dispatch((0, $kpW3P.storeActions).utils.setModalFullscreenContent(null));
|
|
65
|
+
};
|
|
66
|
+
const changePage = (index)=>{
|
|
67
|
+
setPageNumber((current)=>current + index);
|
|
68
|
+
};
|
|
69
|
+
return /*#__PURE__*/ (0, $lKV5y$reactjsxruntime.jsxs)("div", {
|
|
70
|
+
className: "rf-h-full large-vertical:rf-mt-[20vh] large-vertical:rf-h-1/2 rf-max-w-1/2 large-vertical:rf-max-w-[60%] rf-py-4 rf-flex rf-flex-col rf-gap-4",
|
|
71
|
+
style: {
|
|
72
|
+
visibility: documentLoaded ? 'visible' : 'hidden'
|
|
73
|
+
},
|
|
74
|
+
children: [
|
|
75
|
+
/*#__PURE__*/ (0, $lKV5y$reactjsxruntime.jsxs)("div", {
|
|
76
|
+
className: "rf-grid rf-grid-cols-printingPreview rf-min-h-12 rf-h-12",
|
|
77
|
+
children: [
|
|
78
|
+
printingAllowed ? /*#__PURE__*/ (0, $lKV5y$reactjsxruntime.jsxs)("button", {
|
|
79
|
+
className: "rf-px-4 rf-py-1 rf-h-full rf-justify-self-center rf-flex rf-flex-row rf-items-center rf-gap-2 rf-font-bold rf-text-sm rf-rounded-lg rf-bg-truewhite",
|
|
80
|
+
onClick: handleClick,
|
|
81
|
+
children: [
|
|
82
|
+
/*#__PURE__*/ (0, $lKV5y$reactjsxruntime.jsx)((0, $7VgIE.PrintIcon), {}),
|
|
83
|
+
translation.common.print
|
|
84
|
+
]
|
|
85
|
+
}) : /*#__PURE__*/ (0, $lKV5y$reactjsxruntime.jsx)("div", {
|
|
86
|
+
children: '\u2800'
|
|
87
|
+
}),
|
|
88
|
+
/*#__PURE__*/ (0, $lKV5y$reactjsxruntime.jsx)("button", {
|
|
89
|
+
className: "rf-h-full rf-w-12 rf-justify-self-end rf-flex rf-justify-center rf-items-center rf-rounded-lg rf-bg-truewhite",
|
|
90
|
+
onClick: handleClose,
|
|
91
|
+
children: /*#__PURE__*/ (0, $lKV5y$reactjsxruntime.jsx)((0, $60kUR.CloseIcon), {})
|
|
92
|
+
})
|
|
93
|
+
]
|
|
94
|
+
}),
|
|
95
|
+
/*#__PURE__*/ (0, $lKV5y$reactjsxruntime.jsxs)("div", {
|
|
96
|
+
className: "rf-relative rf-w-full rf-flex rf-flex-col rf-rounded-lg rf-overflow-y-scroll rf-scrollbar-thin",
|
|
97
|
+
children: [
|
|
98
|
+
numberOfPages > 1 && /*#__PURE__*/ (0, $lKV5y$reactjsxruntime.jsxs)("div", {
|
|
99
|
+
className: "rf-w-full rf-px-4 rf-pt-3 rf-pb-2 rf-flex rf-flex-row rf-justify-between rf-items-center rf-bg-truewhite",
|
|
100
|
+
children: [
|
|
101
|
+
/*#__PURE__*/ (0, $lKV5y$reactjsxruntime.jsx)("button", {
|
|
102
|
+
className: `${pageNumber <= 1 ? 'rf-invisible' : 'rf-visible'}`,
|
|
103
|
+
onClick: ()=>changePage(-1),
|
|
104
|
+
children: /*#__PURE__*/ (0, $lKV5y$reactjsxruntime.jsx)((0, $eSTK6.ChevronLeftIcon), {
|
|
105
|
+
className: "rf-h-4",
|
|
106
|
+
color: "#000"
|
|
107
|
+
})
|
|
108
|
+
}),
|
|
109
|
+
/*#__PURE__*/ (0, $lKV5y$reactjsxruntime.jsxs)("p", {
|
|
110
|
+
className: "rf-text-xl",
|
|
111
|
+
children: [
|
|
112
|
+
pageNumber,
|
|
113
|
+
" / ",
|
|
114
|
+
numberOfPages
|
|
115
|
+
]
|
|
116
|
+
}),
|
|
117
|
+
/*#__PURE__*/ (0, $lKV5y$reactjsxruntime.jsx)("button", {
|
|
118
|
+
className: `${pageNumber >= numberOfPages ? 'rf-invisible' : 'rf-visible'}`,
|
|
119
|
+
onClick: ()=>changePage(1),
|
|
120
|
+
children: /*#__PURE__*/ (0, $lKV5y$reactjsxruntime.jsx)((0, $eSTK6.ChevronRightIcon), {
|
|
121
|
+
className: "rf-h-4",
|
|
122
|
+
color: "#000"
|
|
123
|
+
})
|
|
124
|
+
})
|
|
125
|
+
]
|
|
126
|
+
}),
|
|
127
|
+
/*#__PURE__*/ (0, $lKV5y$reactjsxruntime.jsx)((0, $lKV5y$reactpdf.Document), {
|
|
128
|
+
file: url,
|
|
129
|
+
onLoadSuccess: onDocumentLoadSuccess,
|
|
130
|
+
onLoadError: handleClose,
|
|
131
|
+
children: /*#__PURE__*/ (0, $lKV5y$reactjsxruntime.jsx)((0, $lKV5y$reactpdf.Page), {
|
|
132
|
+
pageNumber: pageNumber,
|
|
133
|
+
renderAnnotationLayer: false,
|
|
134
|
+
renderTextLayer: false
|
|
135
|
+
})
|
|
136
|
+
})
|
|
137
|
+
]
|
|
138
|
+
})
|
|
139
|
+
]
|
|
140
|
+
});
|
|
141
|
+
};
|
|
142
|
+
var $6e2b7d52dc071237$export$2e2bcd8739ae039 = $6e2b7d52dc071237$var$PrintingPreview;
|
|
143
|
+
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
//# sourceMappingURL=PrintingPreview.5351c733.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,6BAA6B;AAC7B,CAAA,GAAA,qBAAI,EAAE,mBAAmB,CAAC,SAAS,GAAG;AAOtC,MAAM,wCAAkB,CAAC,OAAE,GAAG,mBAAE,eAAe,EAAwB;IACrE,MAAM,WAAW,CAAA,GAAA,6BAAU;IAC3B,MAAM,cAAc,CAAA,GAAA,6BAAU,EAAE,CAAC,QAAqB,MAAM,aAAa,CAAC,mBAAmB;IAC7F,MAAM,mBAAmB,CAAA,GAAA,6BAAU,EAAE,CAAC,QAAqB,MAAM,YAAY,CAAC,gBAAgB;IAC9F,MAAM,CAAC,gBAAgB,kBAAkB,GAAG,CAAA,GAAA,qBAAO,EAAW;IAC9D,MAAM,CAAC,eAAe,iBAAiB,GAAG,CAAA,GAAA,qBAAO,EAAU;IAC3D,MAAM,CAAC,YAAY,cAAc,GAAG,CAAA,GAAA,qBAAO,EAAU;IAErD,MAAM,wBAAwB,CAAC,YAAE,QAAQ,EAAwB;QAC/D,iBAAiB;QACjB,kBAAkB;IACpB;IAEA,MAAM,cAAc;QAClB,6BAAA,uCAAA,iBAAmB;QACnB;IACF;IAEA,MAAM,cAAc;QAClB,SAAS,CAAA,GAAA,mBAAW,EAAE,KAAK,CAAC,yBAAyB,CAAC;IACxD;IAEA,MAAM,aAAa,CAAC;QAClB,cAAc,CAAC,UAAY,UAAU;IACvC;IAEA,qBACE,iCAAC;QACC,WAAU;QACV,OAAO;YACL,YAAY,iBAAiB,YAAY;QAC3C;;0BAGA,iCAAC;gBAAI,WAAU;;oBACZ,gCACC,iCAAC;wBAAO,WAAU;wBAAsJ,SAAS;;0CAC/K,gCAAC,CAAA,GAAA,gBAAQ;4BACR,YAAY,MAAM,CAAC,KAAK;;uCAG3B,gCAAC;kCAAK;;kCAER,gCAAC;wBAAO,WAAU;wBAAgH,SAAS;kCACzI,cAAA,gCAAC,CAAA,GAAA,gBAAQ;;;;0BAKb,iCAAC;gBAAI,WAAU;;oBAEZ,gBAAgB,mBACf,iCAAC;wBAAI,WAAU;;0CACb,gCAAC;gCAAO,WAAW,GAAG,cAAc,IAAI,iBAAiB,cAAc;gCAAE,SAAS,IAAM,WAAW;0CACjG,cAAA,gCAAC,CAAA,GAAA,sBAAc;oCAAE,WAAU;oCAAS,OAAM;;;0CAE5C,iCAAC;gCAAE,WAAU;;oCACV;oCAAW;oCAAI;;;0CAElB,gCAAC;gCAAO,WAAW,GAAG,cAAc,gBAAgB,iBAAiB,cAAc;gCAAE,SAAS,IAAM,WAAW;0CAC7G,cAAA,gCAAC,CAAA,GAAA,uBAAe;oCAAE,WAAU;oCAAS,OAAM;;;;;kCAMjD,gCAAC,CAAA,GAAA,wBAAO;wBAAE,MAAM;wBAAK,eAAe;wBAAuB,aAAa;kCACtE,cAAA,gCAAC,CAAA,GAAA,oBAAG;4BAAE,YAAY;4BAAY,uBAAuB;4BAAO,iBAAiB;;;;;;;AAKvF;IAEA,2CAAe","sources":["src/components/Attachments/PrintingPreview.tsx"],"sourcesContent":["import React, { useState } from 'react'\r\nimport { pdfjs, Document, Page } from 'react-pdf'\r\nimport * as pdfJsWorker from 'pdfjs-dist/build/pdf.worker.js'\r\nimport { useSelector, useDispatch } from 'react-redux'\r\nimport { RootState, storeActions } from '../../store'\r\nimport { PrintIcon } from '../Icons/DetailedPOIIcons'\r\nimport { CloseIcon } from '../Icons/Miscellaneous'\r\nimport { ChevronLeftIcon, ChevronRightIcon } from '../Icons/ChevronIcons'\r\n\r\n// Configure react-pdf worker\r\npdfjs.GlobalWorkerOptions.workerSrc = pdfJsWorker\r\n\r\ninterface PrintingPreviewProps {\r\n url: string\r\n printingAllowed?: boolean\r\n}\r\n\r\nconst PrintingPreview = ({ url, printingAllowed }: PrintingPreviewProps): JSX.Element => {\r\n const dispatch = useDispatch()\r\n const translation = useSelector((state: RootState) => state.localeReducer.currentTranslations)\r\n const printingCallback = useSelector((state: RootState) => state.utilsReducer.printingCallback)\r\n const [documentLoaded, setDocumentLoaded] = useState<boolean>(false)\r\n const [numberOfPages, setNumberOfPages] = useState<number>(0)\r\n const [pageNumber, setPageNumber] = useState<number>(1)\r\n\r\n const onDocumentLoadSuccess = ({ numPages }: { numPages: number }): void => {\r\n setNumberOfPages(numPages)\r\n setDocumentLoaded(true)\r\n }\r\n\r\n const handleClick = (): void => {\r\n printingCallback?.(url)\r\n handleClose()\r\n }\r\n\r\n const handleClose = (): void => {\r\n dispatch(storeActions.utils.setModalFullscreenContent(null))\r\n }\r\n\r\n const changePage = (index: number): void => {\r\n setPageNumber((current) => current + index)\r\n }\r\n\r\n return (\r\n <div\r\n className='rf-h-full large-vertical:rf-mt-[20vh] large-vertical:rf-h-1/2 rf-max-w-1/2 large-vertical:rf-max-w-[60%] rf-py-4 rf-flex rf-flex-col rf-gap-4'\r\n style={{\r\n visibility: documentLoaded ? 'visible' : 'hidden'\r\n }}\r\n >\r\n {/* Upper part */}\r\n <div className='rf-grid rf-grid-cols-printingPreview rf-min-h-12 rf-h-12'>\r\n {printingAllowed ? (\r\n <button className='rf-px-4 rf-py-1 rf-h-full rf-justify-self-center rf-flex rf-flex-row rf-items-center rf-gap-2 rf-font-bold rf-text-sm rf-rounded-lg rf-bg-truewhite' onClick={handleClick}>\r\n <PrintIcon />\r\n {translation.common.print}\r\n </button>\r\n ) : (\r\n <div>{'\\u2800'}</div>\r\n )}\r\n <button className='rf-h-full rf-w-12 rf-justify-self-end rf-flex rf-justify-center rf-items-center rf-rounded-lg rf-bg-truewhite' onClick={handleClose}>\r\n <CloseIcon />\r\n </button>\r\n </div>\r\n\r\n {/* Document preview */}\r\n <div className='rf-relative rf-w-full rf-flex rf-flex-col rf-rounded-lg rf-overflow-y-scroll rf-scrollbar-thin'>\r\n {/* Number of pages + navigation between pages */}\r\n {numberOfPages > 1 && (\r\n <div className='rf-w-full rf-px-4 rf-pt-3 rf-pb-2 rf-flex rf-flex-row rf-justify-between rf-items-center rf-bg-truewhite'>\r\n <button className={`${pageNumber <= 1 ? 'rf-invisible' : 'rf-visible'}`} onClick={() => changePage(-1)}>\r\n <ChevronLeftIcon className='rf-h-4' color='#000' />\r\n </button>\r\n <p className='rf-text-xl'>\r\n {pageNumber} / {numberOfPages}\r\n </p>\r\n <button className={`${pageNumber >= numberOfPages ? 'rf-invisible' : 'rf-visible'}`} onClick={() => changePage(1)}>\r\n <ChevronRightIcon className='rf-h-4' color='#000' />\r\n </button>\r\n </div>\r\n )}\r\n\r\n {/* Pdf preview */}\r\n <Document file={url} onLoadSuccess={onDocumentLoadSuccess} onLoadError={handleClose}>\r\n <Page pageNumber={pageNumber} renderAnnotationLayer={false} renderTextLayer={false} />\r\n </Document>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default PrintingPreview\r\n"],"names":[],"version":3,"file":"PrintingPreview.5351c733.js.map","sourceRoot":"../"}
|