@davi-ai/retorik-framework 3.0.2 → 3.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +200 -64
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +198 -63
- package/dist/index.modern.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -115,25 +115,6 @@ $parcel$export(module.exports, "InputHintBehaviour", () => $71c613e2e831c34c$exp
|
|
|
115
115
|
|
|
116
116
|
|
|
117
117
|
|
|
118
|
-
function $d1249e1b373273e4$export$2e2bcd8739ae039(RetorikAgent, props, element) {
|
|
119
|
-
const root = (0, $dWhh5$reactdomclient.createRoot)(element);
|
|
120
|
-
root.render(/*#__PURE__*/ (0, $dWhh5$reactjsxruntime.jsx)(RetorikAgent, {
|
|
121
|
-
...props
|
|
122
|
-
}));
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
function $063ea7a515c267b7$export$2e2bcd8739ae039(RetorikWidget, props, element) {
|
|
130
|
-
const root = (0, $dWhh5$reactdomclient.createRoot)(element);
|
|
131
|
-
root.render(/*#__PURE__*/ (0, $dWhh5$reactjsxruntime.jsx)(RetorikWidget, {
|
|
132
|
-
...props
|
|
133
|
-
}));
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
|
|
137
118
|
|
|
138
119
|
|
|
139
120
|
|
|
@@ -556,7 +537,10 @@ const $2793f2455cec0982$var$createUtilsStore = ()=>(0, $dWhh5$zustand.createStor
|
|
|
556
537
|
},
|
|
557
538
|
setModalFullscreenContent: (value, fromActivity)=>{
|
|
558
539
|
set((state)=>{
|
|
559
|
-
if (!fromActivity
|
|
540
|
+
if (!fromActivity) return {
|
|
541
|
+
modalFullscreenContent: value
|
|
542
|
+
};
|
|
543
|
+
else if (fromActivity !== state.modalFullscreenContentNoDisplayId) // Set fromActivity data to check next time if we have to prevent unwanted re-rendering
|
|
560
544
|
return {
|
|
561
545
|
modalFullscreenContent: value,
|
|
562
546
|
modalFullscreenContentNoDisplayId: fromActivity
|
|
@@ -3234,7 +3218,7 @@ var $c8770452d727244a$export$2e2bcd8739ae039 = $c8770452d727244a$var$activityMid
|
|
|
3234
3218
|
|
|
3235
3219
|
|
|
3236
3220
|
var $696df75883117d57$exports = {};
|
|
3237
|
-
$696df75883117d57$exports = JSON.parse("{\"name\":\"@davi-ai/retorik-framework\",\"version\":\"3.0.
|
|
3221
|
+
$696df75883117d57$exports = JSON.parse("{\"name\":\"@davi-ai/retorik-framework\",\"version\":\"3.0.4\",\"description\":\"Retorik Framework package\",\"author\":\"DAVI\",\"license\":\"MIT\",\"repository\":\"none\",\"main\":\"dist/index.js\",\"module\":\"dist/index.modern.js\",\"types\":\"dist/index.d.ts\",\"source\":\"src/index.tsx\",\"standalone\":\"standalone/index.js\",\"targets\":{\"standalone\":{\"context\":\"browser\",\"outputFormat\":\"esmodule\",\"distDir\":\"standalone\",\"includeNodeModules\":{\"@testing-library/jest-dom\":false,\"@testing-library/react\":false,\"@testing-library/react-hooks\":false,\"@testing-library/user-event\":false,\"eslint\":false,\"eslint-config-prettier\":false,\"eslint-config-standard\":false,\"eslint-config-standard-react\":false,\"eslint-plugin-import\":false,\"eslint-plugin-node\":false,\"eslint-plugin-prettier\":false,\"eslint-plugin-promise\":false,\"eslint-plugin-react\":false,\"eslint-plugin-standard\":false,\"jest-junit\":false,\"npm-run-all\":false,\"parcel\":false,\"prettier\":false,\"raw-loader\":false,\"react-docgen-typescript-plugin\":false,\"react-scripts\":false,\"react-test-renderer\":false,\"tailwindcss\":false,\"typescript\":false}},\"module\":{\"context\":\"browser\",\"outputFormat\":\"esmodule\",\"distDir\":\"dist\"}},\"engines\":{\"node\":\">=10\"},\"scripts\":{\"build\":\"parcel build\",\"start\":\"parcel watch\",\"test\":\"jest --env=jsdom --reporters=jest-junit\",\"test-console\":\"jest --env=jsdom\",\"test-update-snapshots\":\"jest --env=jsdom --updateSnapshot\",\"test-coverage-console\":\"jest --env=jsdom --reporters=jest-junit --coverage\",\"test-coverage\":\"jest --env=jsdom --reporters=jest-junit --coverage --coverageReporters=cobertura\",\"report\":\"npx parcel build src/index.tsx --reporter @parcel/reporter-bundle-analyzer\",\"credentials\":\"vsts-npm-auth -config .npmrc\"},\"peerDependencies\":{\"react\":\"18.3.1\",\"react-dom\":\"18.3.1\"},\"devDependencies\":{\"@babel/core\":\"^7.19.1\",\"@babel/plugin-proposal-decorators\":\"^7.24.7\",\"@babel/plugin-proposal-private-property-in-object\":\"^7.21.11\",\"@babel/preset-env\":\"^7.25.4\",\"@babel/preset-react\":\"^7.24.7\",\"@babel/preset-typescript\":\"^7.24.7\",\"@babel/runtime\":\"^7.23.8\",\"@parcel/packager-ts\":\"^2.13.2\",\"@parcel/reporter-bundle-analyzer\":\"^2.13.2\",\"@parcel/reporter-sourcemap-visualiser\":\"^2.13.2\",\"@parcel/transformer-inline-string\":\"^2.13.2\",\"@parcel/transformer-typescript-types\":\"^2.13.2\",\"@parcel/validator-eslint\":\"^2.13.2\",\"@parcel/validator-typescript\":\"^2.13.2\",\"@testing-library/dom\":\"^10.4.0\",\"@testing-library/jest-dom\":\"6.5.0\",\"@testing-library/react\":\"16.0.1\",\"@testing-library/react-hooks\":\"8.0.1\",\"@testing-library/user-event\":\"14.5.2\",\"@types/jest\":\"^27.5.1\",\"@types/leaflet\":\"^1.8.0\",\"@types/node\":\"^12.12.38\",\"@types/react\":\"18.3.12\",\"@types/react-dom\":\"18.3.1\",\"@types/testing-library__jest-dom\":\"^5.14.5\",\"@types/testing-library__react\":\"latest\",\"@typescript-eslint/eslint-plugin\":\"^8.19.0\",\"@typescript-eslint/parser\":\"^8.19.0\",\"autoprefixer\":\"^10.4.7\",\"babel-eslint\":\"^10.0.3\",\"babel-jest\":\"^29.7.0\",\"babel-loader\":\"^8.2.5\",\"buffer\":\"^5.7.1\",\"canvas\":\"^2.9.0\",\"cross-env\":\"^7.0.2\",\"crypto-browserify\":\"^3.12.0\",\"eslint\":\"^9.16.0\",\"eslint-config-prettier\":\"^9.1.0\",\"eslint-config-standard\":\"^17.1.0\",\"eslint-config-standard-react\":\"^13.0.0\",\"eslint-plugin-import\":\"^2.31.0\",\"eslint-plugin-node\":\"^11.1.0\",\"eslint-plugin-prettier\":\"^5.2.1\",\"eslint-plugin-promise\":\"^7.2.1\",\"eslint-plugin-react\":\"^7.37.2\",\"https-browserify\":\"^1.0.0\",\"jest\":\"^29.7.0\",\"jest-environment-jsdom\":\"^29.7.0\",\"jest-junit\":\"16.0.0\",\"npm-run-all\":\"^4.1.5\",\"parcel\":\"^2.13.2\",\"postcss\":\"^8.4.14\",\"postcss-url\":\"^10.1.3\",\"prettier\":\"^2.0.4\",\"process\":\"^0.11.10\",\"punycode\":\"^1.4.1\",\"querystring-es3\":\"^0.2.1\",\"react\":\"^18\",\"react-docgen-typescript-plugin\":\"^1.0.5\",\"react-dom\":\"18.3.1\",\"react-scripts\":\"5.0.1\",\"react-test-renderer\":\"^18.3.1\",\"resize-observer-polyfill\":\"^1.5.1\",\"stream-browserify\":\"^3.0.0\",\"stream-http\":\"^3.2.0\",\"string_decoder\":\"^1.3.0\",\"tailwindcss\":\"^3.1.0\",\"typescript\":\"5.3.2\",\"url\":\"^0.11.0\",\"util\":\"^0.12.4\"},\"files\":[\"dist\"],\"dependencies\":{\"@davi-ai/body-engine-sprite\":\"3.0.0\",\"@davi-ai/react-bodyengine-three\":\"1.0.0\",\"@davi-ai/retorik-weather\":\"2.0.0\",\"@davi-ai/speechmarkdown-davi-js\":\"1.0.6\",\"@davi-ai/web-speech-cognitive-services-davi\":\"2.0.10\",\"@fluentui/react\":\"^8.103.3\",\"@lottiefiles/react-lottie-player\":\"^3.4.1\",\"@opentelemetry/api\":\"^1.9.0\",\"@opentelemetry/exporter-trace-otlp-http\":\"^0.200.0\",\"@opentelemetry/instrumentation\":\"^0.200.0\",\"@opentelemetry/instrumentation-document-load\":\"^0.45.0\",\"@opentelemetry/instrumentation-fetch\":\"^0.200.0\",\"@opentelemetry/resources\":\"^2.0.0\",\"@opentelemetry/sdk-trace-web\":\"^2.0.0\",\"@opentelemetry/semantic-conventions\":\"^1.32.0\",\"@react-spring/types\":\"^9.7.3\",\"@react-spring/web\":\"^9.7.3\",\"@react-three/drei\":\"^9.106.0\",\"@swc/helpers\":\"^0.5.0\",\"@types/geojson\":\"^7946.0.10\",\"@types/jsdom\":\"^16.2.14\",\"@use-gesture/react\":\"^10.2.15\",\"adaptivecards\":\"3.0.1\",\"botframework-directlinejs\":\"^0.15.5\",\"classnames\":\"^2.3.1\",\"detect-gpu\":\"^5.0.70\",\"leaflet\":\"^1.9.2\",\"markdown-it\":\"14.1.0\",\"pdfjs-dist\":\"3.11.174\",\"postcss-copy\":\"^7.1.0\",\"qrcode\":\"^1.5.1\",\"react-device-detect\":\"^2.2.3\",\"react-error-boundary\":\"^4.0.10\",\"react-leaflet\":\"^4.1.0\",\"react-pdf\":\"7.7.1\",\"react-shadow\":\"^20.5.0\",\"react-webcam\":\"^6.0.0\",\"swiper\":\"^8.4.5\",\"three\":\"0.174.0\",\"zustand\":\"^5.0.3\"},\"overrides\":{\"@davi-ai/web-speech-cognitive-services-davi\":\"$@davi-ai/web-speech-cognitive-services-davi\",\"three\":\"$three\",\"zustand\":\"$zustand\"},\"@parcel/resolver-default\":{\"packageExports\":true}}");
|
|
3238
3222
|
|
|
3239
3223
|
|
|
3240
3224
|
const $328a7f03b0982320$var$initialState = {
|
|
@@ -3257,7 +3241,7 @@ const $328a7f03b0982320$var$eventsWithoutCancel = [
|
|
|
3257
3241
|
'setuser',
|
|
3258
3242
|
'davi.gdprconsent'
|
|
3259
3243
|
];
|
|
3260
|
-
const $328a7f03b0982320$var$createDirectlineStore = (modeRef, recognitionStateRef, retrievingConversationRef, conversationIdRef, isTactileRef, localeRef, sendBoxRefRef, setIsWaitingForResponse, unlockClickedButton, addBotEvent, addBotMessage, addUserEvent, addUserMessage, checkConversationId, setRetrievingConversation, checkDumpedLocaleFallback, cancelCurrentUtterance, checkActivityReplyToId, addSpeechRecognitionDynamicGrammar, toggleMicrophone)=>{
|
|
3244
|
+
const $328a7f03b0982320$var$createDirectlineStore = (modeRef, recognitionStateRef, retrievingConversationRef, conversationIdRef, isTactileRef, localeRef, sendBoxRefRef, channelDataRef, setIsWaitingForResponse, unlockClickedButton, addBotEvent, addBotMessage, addUserEvent, addUserMessage, checkConversationId, setRetrievingConversation, checkDumpedLocaleFallback, cancelCurrentUtterance, checkActivityReplyToId, addSpeechRecognitionDynamicGrammar, toggleMicrophone)=>{
|
|
3261
3245
|
return (0, $dWhh5$zustand.createStore)((set, get)=>{
|
|
3262
3246
|
return {
|
|
3263
3247
|
...$328a7f03b0982320$var$initialState,
|
|
@@ -3428,7 +3412,10 @@ const $328a7f03b0982320$var$createDirectlineStore = (modeRef, recognitionStateRe
|
|
|
3428
3412
|
longitude: position.longitude
|
|
3429
3413
|
};
|
|
3430
3414
|
}
|
|
3431
|
-
return
|
|
3415
|
+
return channelDataRef.current ? {
|
|
3416
|
+
...dataAddedToChannelData,
|
|
3417
|
+
...channelDataRef.current
|
|
3418
|
+
} : dataAddedToChannelData;
|
|
3432
3419
|
},
|
|
3433
3420
|
checkMicrophoneAndCancel: ()=>{
|
|
3434
3421
|
if (modeRef.current === (0, $71c613e2e831c34c$export$9484bbecc3c49a2e).vocal && recognitionStateRef.current === (0, $71c613e2e831c34c$export$3f0071308968cd80).Listening) toggleMicrophone();
|
|
@@ -3568,12 +3555,12 @@ const $328a7f03b0982320$export$adc771f45cf9b273 = (selector)=>{
|
|
|
3568
3555
|
const $328a7f03b0982320$var$DirectlineProvider = ({ children: children })=>{
|
|
3569
3556
|
const mode = (0, $df401eb9a10f9e0e$export$f299240efcda25a2)((state)=>state.mode);
|
|
3570
3557
|
const recognitionState = (0, $df401eb9a10f9e0e$export$f299240efcda25a2)((state)=>state.activeRecognitionState);
|
|
3571
|
-
const speaking = (0, $df401eb9a10f9e0e$export$f299240efcda25a2)((state)=>state.speaking);
|
|
3572
3558
|
const retrievingConversation = (0, $8fc061e3e1dc64cb$export$b56465394e2b1287)((state)=>state.retrievingConversation);
|
|
3573
3559
|
const conversationId = (0, $8fc061e3e1dc64cb$export$b56465394e2b1287)((state)=>state.conversationId);
|
|
3574
3560
|
const isTactile = (0, $6acc5d637072b42e$export$d13b2577cb75f2ad)((state)=>state.isTactile);
|
|
3575
3561
|
const locale = (0, $0db969f5e79ce01b$export$6650dace022cfacc)((state)=>state.locale);
|
|
3576
3562
|
const sendBoxRef = (0, $1d4f8108de9ab73a$export$bd22554f31e5f96f)((state)=>state.sendBoxRef);
|
|
3563
|
+
const channelData = (0, $1d4f8108de9ab73a$export$bd22554f31e5f96f)((state)=>state.configuration.channelData);
|
|
3577
3564
|
const modeRef = (0, $dWhh5$react.useRef)((0, $71c613e2e831c34c$export$9484bbecc3c49a2e).text);
|
|
3578
3565
|
const recognitionStateRef = (0, $dWhh5$react.useRef)((0, $71c613e2e831c34c$export$3f0071308968cd80).Closed);
|
|
3579
3566
|
const retrievingConversationRef = (0, $dWhh5$react.useRef)(false);
|
|
@@ -3581,12 +3568,13 @@ const $328a7f03b0982320$var$DirectlineProvider = ({ children: children })=>{
|
|
|
3581
3568
|
const isTactileRef = (0, $dWhh5$react.useRef)(false);
|
|
3582
3569
|
const localeRef = (0, $dWhh5$react.useRef)('fr-FR');
|
|
3583
3570
|
const sendBoxRefRef = (0, $dWhh5$react.useRef)(null);
|
|
3571
|
+
const channelDataRef = (0, $dWhh5$react.useRef)(undefined);
|
|
3584
3572
|
const setIsWaitingForResponse = (0, $1d4f8108de9ab73a$export$bd22554f31e5f96f)((state)=>state.actions.setIsWaitingForResponse);
|
|
3585
3573
|
const unlockClickedButton = (0, $2793f2455cec0982$export$77e4cc5334565f28)((state)=>state.actions.unlockClickedButton);
|
|
3586
3574
|
const { addBotEvent: addBotEvent, addBotMessage: addBotMessage, addUserEvent: addUserEvent, addUserMessage: addUserMessage, checkConversationId: checkConversationId, setRetrievingConversation: setRetrievingConversation } = (0, $8fc061e3e1dc64cb$export$b56465394e2b1287)((state)=>state.actions);
|
|
3587
3575
|
const checkDumpedLocaleFallback = (0, $0db969f5e79ce01b$export$6650dace022cfacc)((state)=>state.actions.checkDumpedLocaleFallback);
|
|
3588
3576
|
const { cancelCurrentUtterance: cancelCurrentUtterance, checkActivityReplyToId: checkActivityReplyToId, addSpeechRecognitionDynamicGrammar: addSpeechRecognitionDynamicGrammar, toggleMicrophone: toggleMicrophone } = (0, $df401eb9a10f9e0e$export$f299240efcda25a2)((state)=>state.actions);
|
|
3589
|
-
const [store] = (0, $dWhh5$react.useState)(()=>$328a7f03b0982320$var$createDirectlineStore(modeRef, recognitionStateRef, retrievingConversationRef, conversationIdRef, isTactileRef, localeRef, sendBoxRefRef, setIsWaitingForResponse, unlockClickedButton, addBotEvent, addBotMessage, addUserEvent, addUserMessage, checkConversationId, setRetrievingConversation, checkDumpedLocaleFallback, cancelCurrentUtterance, checkActivityReplyToId, addSpeechRecognitionDynamicGrammar, toggleMicrophone));
|
|
3577
|
+
const [store] = (0, $dWhh5$react.useState)(()=>$328a7f03b0982320$var$createDirectlineStore(modeRef, recognitionStateRef, retrievingConversationRef, conversationIdRef, isTactileRef, localeRef, sendBoxRefRef, channelDataRef, setIsWaitingForResponse, unlockClickedButton, addBotEvent, addBotMessage, addUserEvent, addUserMessage, checkConversationId, setRetrievingConversation, checkDumpedLocaleFallback, cancelCurrentUtterance, checkActivityReplyToId, addSpeechRecognitionDynamicGrammar, toggleMicrophone));
|
|
3590
3578
|
(0, $dWhh5$react.useEffect)(()=>{
|
|
3591
3579
|
modeRef.current = mode;
|
|
3592
3580
|
}, [
|
|
@@ -3622,6 +3610,11 @@ const $328a7f03b0982320$var$DirectlineProvider = ({ children: children })=>{
|
|
|
3622
3610
|
}, [
|
|
3623
3611
|
sendBoxRef
|
|
3624
3612
|
]);
|
|
3613
|
+
(0, $dWhh5$react.useEffect)(()=>{
|
|
3614
|
+
channelDataRef.current = channelData;
|
|
3615
|
+
}, [
|
|
3616
|
+
channelData
|
|
3617
|
+
]);
|
|
3625
3618
|
return /*#__PURE__*/ (0, $dWhh5$reactjsxruntime.jsx)($328a7f03b0982320$var$DirectlineContext.Provider, {
|
|
3626
3619
|
value: store,
|
|
3627
3620
|
children: children
|
|
@@ -5147,6 +5140,7 @@ const $9b7229e19d910060$export$5e05ceb0f0c2d3f = async ({ configurationData: con
|
|
|
5147
5140
|
|
|
5148
5141
|
|
|
5149
5142
|
|
|
5143
|
+
|
|
5150
5144
|
const $ba3150a69d33f468$var$getRetorikConfigs = async (props, baseAddress)=>{
|
|
5151
5145
|
const retorikProps = {
|
|
5152
5146
|
...props
|
|
@@ -5286,7 +5280,14 @@ const $ba3150a69d33f468$var$processJson = (json, retorikProps, baseAddress)=>{
|
|
|
5286
5280
|
useOldRemote: json.useOldRemote != null ? json.useOldRemote : true,
|
|
5287
5281
|
// Temporary parameter, will be removed
|
|
5288
5282
|
showTemporaryBanner: undefined,
|
|
5289
|
-
preventVirtualKeyboard: undefined
|
|
5283
|
+
preventVirtualKeyboard: undefined,
|
|
5284
|
+
channelData: json.channelData,
|
|
5285
|
+
newsConfig: {
|
|
5286
|
+
bannerTitle: json.newsBannerTitle,
|
|
5287
|
+
bannerTitleLocalized: json.newBannerTitleLocalized,
|
|
5288
|
+
removeTitleFromTextToSpeak: json.newsRemoveTitleFromTextToSpeak,
|
|
5289
|
+
removeSubtitleFromTextToSpeak: json.newsRemoveSubtitleFromTextToSpeak
|
|
5290
|
+
}
|
|
5290
5291
|
},
|
|
5291
5292
|
viewsConfig: {
|
|
5292
5293
|
homeRoute: 'home',
|
|
@@ -5472,7 +5473,7 @@ const $ba3150a69d33f468$var$processJson = (json, retorikProps, baseAddress)=>{
|
|
|
5472
5473
|
}
|
|
5473
5474
|
}
|
|
5474
5475
|
},
|
|
5475
|
-
defaultMode: json.defaultMode,
|
|
5476
|
+
defaultMode: json.disableSpeechMode ? (0, $71c613e2e831c34c$export$9484bbecc3c49a2e).text : json.defaultMode,
|
|
5476
5477
|
skipLoader: json.skipLoader,
|
|
5477
5478
|
// Language data
|
|
5478
5479
|
defaultCulture: json.defaultCulture,
|
|
@@ -5587,12 +5588,12 @@ const $7f86b3828f8979bc$var$TextBlock = ({ text: text, isTitle: isTitle, isSubti
|
|
|
5587
5588
|
setStyle(styleToApply);
|
|
5588
5589
|
}
|
|
5589
5590
|
}, []);
|
|
5590
|
-
return
|
|
5591
|
+
return /*#__PURE__*/ (0, $dWhh5$reactjsxruntime.jsx)("div", {
|
|
5591
5592
|
className: `rf-w-full rf-text-cardFrameText ${style}`,
|
|
5592
5593
|
dangerouslySetInnerHTML: {
|
|
5593
|
-
__html: (0, $04321743da31c8db$export$d07f57595c356899)($7f86b3828f8979bc$var$md.render(text))
|
|
5594
|
+
__html: text ? (0, $04321743da31c8db$export$d07f57595c356899)($7f86b3828f8979bc$var$md.render(text)) : '\u00a0'
|
|
5594
5595
|
}
|
|
5595
|
-
})
|
|
5596
|
+
});
|
|
5596
5597
|
};
|
|
5597
5598
|
var $7f86b3828f8979bc$export$2e2bcd8739ae039 = $7f86b3828f8979bc$var$TextBlock;
|
|
5598
5599
|
|
|
@@ -10704,27 +10705,28 @@ function $6be7f5aa73e32bf5$export$bb3ea6dd2428edb6({ enabled: enabled, children:
|
|
|
10704
10705
|
|
|
10705
10706
|
|
|
10706
10707
|
|
|
10708
|
+
const $6259571439c6f7ce$var$checkResult = (lang, allLanguages)=>{
|
|
10709
|
+
let res;
|
|
10710
|
+
// Lang can be 2-chars
|
|
10711
|
+
if (lang.length === 2) res = allLanguages.find((language)=>{
|
|
10712
|
+
var _language_split_;
|
|
10713
|
+
return ((_language_split_ = language.split('-')[0]) === null || _language_split_ === void 0 ? void 0 : _language_split_.toLowerCase()) === lang.toLowerCase();
|
|
10714
|
+
});
|
|
10715
|
+
else {
|
|
10716
|
+
res = allLanguages.find((language)=>{
|
|
10717
|
+
return language.toLowerCase() === lang.toLowerCase();
|
|
10718
|
+
});
|
|
10719
|
+
if (!res) res = allLanguages.find((language)=>{
|
|
10720
|
+
return language.startsWith(`${lang.split('-')[0].toLowerCase()}-`);
|
|
10721
|
+
});
|
|
10722
|
+
}
|
|
10723
|
+
return res;
|
|
10724
|
+
};
|
|
10707
10725
|
// Check if the locale in the current browser is in the array of available locales
|
|
10708
10726
|
const $6259571439c6f7ce$var$checkLocaleFromBrowser = (allLanguages)=>{
|
|
10709
10727
|
var _navigator;
|
|
10710
10728
|
const navLang = (_navigator = navigator) === null || _navigator === void 0 ? void 0 : _navigator.language;
|
|
10711
|
-
if (navLang && (allLanguages === null || allLanguages === void 0 ? void 0 : allLanguages.length))
|
|
10712
|
-
let res;
|
|
10713
|
-
// Navigator language can be 2-chars
|
|
10714
|
-
if (navLang.length === 2) res = allLanguages.find((language)=>{
|
|
10715
|
-
var _language_split_;
|
|
10716
|
-
return ((_language_split_ = language.split('-')[0]) === null || _language_split_ === void 0 ? void 0 : _language_split_.toLowerCase()) === navLang.toLowerCase();
|
|
10717
|
-
});
|
|
10718
|
-
else {
|
|
10719
|
-
res = allLanguages.find((language)=>{
|
|
10720
|
-
return language.toLowerCase() === navLang.toLowerCase();
|
|
10721
|
-
});
|
|
10722
|
-
if (!res) res = allLanguages.find((language)=>{
|
|
10723
|
-
return language.startsWith(`${navLang.split('-')[0].toLowerCase()}-`);
|
|
10724
|
-
});
|
|
10725
|
-
}
|
|
10726
|
-
if (res) return res;
|
|
10727
|
-
}
|
|
10729
|
+
if (navLang && (allLanguages === null || allLanguages === void 0 ? void 0 : allLanguages.length)) return $6259571439c6f7ce$var$checkResult(navLang, allLanguages);
|
|
10728
10730
|
return undefined;
|
|
10729
10731
|
};
|
|
10730
10732
|
const $6259571439c6f7ce$export$d64c0ac95bb7fd72 = (languageData, localeConfig)=>{
|
|
@@ -10733,12 +10735,18 @@ const $6259571439c6f7ce$export$d64c0ac95bb7fd72 = (languageData, localeConfig)=>
|
|
|
10733
10735
|
const browserLocale = $6259571439c6f7ce$var$checkLocaleFromBrowser(languageData.all);
|
|
10734
10736
|
if (browserLocale) return browserLocale;
|
|
10735
10737
|
}
|
|
10738
|
+
// Else check the "lang" tag in the html element
|
|
10739
|
+
const htmlElements = document.getElementsByTagName('html');
|
|
10740
|
+
if (htmlElements.length && htmlElements[0].lang) {
|
|
10741
|
+
const htmlLocale = $6259571439c6f7ce$var$checkResult(htmlElements[0].lang, languageData.all);
|
|
10742
|
+
if (htmlLocale) return htmlLocale;
|
|
10743
|
+
}
|
|
10736
10744
|
// Else, use default from languageData
|
|
10737
10745
|
return languageData.default;
|
|
10738
10746
|
};
|
|
10739
10747
|
const $6259571439c6f7ce$export$91fc93b93c368955 = (locale)=>{
|
|
10740
10748
|
const split = locale.split('-');
|
|
10741
|
-
return split.length
|
|
10749
|
+
return split.length ? split[1] : split[0];
|
|
10742
10750
|
};
|
|
10743
10751
|
|
|
10744
10752
|
|
|
@@ -13240,6 +13248,13 @@ const $354469513bda8262$var$RemoteButton = ({ type: type, backgroundColor: backg
|
|
|
13240
13248
|
const sendEvent = (0, $328a7f03b0982320$export$adc771f45cf9b273)((state)=>state.actions.sendEvent);
|
|
13241
13249
|
const [icon, setIcon] = (0, $dWhh5$react.useState)();
|
|
13242
13250
|
const [label, setLabel] = (0, $dWhh5$react.useState)();
|
|
13251
|
+
const [hover, setHover] = (0, $dWhh5$react.useState)(false);
|
|
13252
|
+
const [backgroundColorHover, setBackgroundColorHover] = (0, $dWhh5$react.useState)(undefined);
|
|
13253
|
+
(0, $dWhh5$react.useEffect)(()=>{
|
|
13254
|
+
setBackgroundColorHover(backgroundColor === null || backgroundColor === void 0 ? void 0 : backgroundColor.replace('99', 'E6'));
|
|
13255
|
+
}, [
|
|
13256
|
+
backgroundColor
|
|
13257
|
+
]);
|
|
13243
13258
|
(0, $dWhh5$react.useEffect)(()=>{
|
|
13244
13259
|
switch(type){
|
|
13245
13260
|
case (0, $71c613e2e831c34c$export$4112462e5af80a05).history:
|
|
@@ -13383,13 +13398,15 @@ const $354469513bda8262$var$RemoteButton = ({ type: type, backgroundColor: backg
|
|
|
13383
13398
|
className: "rf-w-10 rf-h-10 rf-rounded-half rf-flex rf-justify-center rf-items-center rf-cursor-pointer",
|
|
13384
13399
|
style: {
|
|
13385
13400
|
zIndex: type === (0, $71c613e2e831c34c$export$4112462e5af80a05).close ? 60 : 5,
|
|
13386
|
-
backgroundColor: backgroundColor,
|
|
13401
|
+
backgroundColor: hover ? backgroundColorHover : backgroundColor,
|
|
13387
13402
|
boxShadow: type === (0, $71c613e2e831c34c$export$4112462e5af80a05).text || type === (0, $71c613e2e831c34c$export$4112462e5af80a05).close ? '0px 0px 6px #1A1A1A80' : undefined
|
|
13388
13403
|
},
|
|
13389
13404
|
"aria-label": label,
|
|
13390
13405
|
// data-map used in interactive map to use this button externaly
|
|
13391
13406
|
"data-map": type === (0, $71c613e2e831c34c$export$4112462e5af80a05).close ? 'fermer' : 'other',
|
|
13392
13407
|
onClick: handleClick,
|
|
13408
|
+
onPointerEnter: ()=>setHover(true),
|
|
13409
|
+
onPointerLeave: ()=>setHover(false),
|
|
13393
13410
|
children: icon
|
|
13394
13411
|
});
|
|
13395
13412
|
};
|
|
@@ -23044,6 +23061,13 @@ var $5cac5449d46d743a$export$2e2bcd8739ae039 = $5cac5449d46d743a$var$Version;
|
|
|
23044
23061
|
|
|
23045
23062
|
|
|
23046
23063
|
|
|
23064
|
+
const $341aa389b3b9926d$var$md = (0, ($parcel$interopDefault($dWhh5$markdownit)))({
|
|
23065
|
+
breaks: true,
|
|
23066
|
+
html: true,
|
|
23067
|
+
xhtmlOut: true,
|
|
23068
|
+
typographer: true,
|
|
23069
|
+
quotes: `""''`
|
|
23070
|
+
});
|
|
23047
23071
|
const $341aa389b3b9926d$var$springEnterDuration = 500;
|
|
23048
23072
|
const $341aa389b3b9926d$var$springQrcodeDuration = 500;
|
|
23049
23073
|
const $341aa389b3b9926d$var$DashboardItem = ({ index: index, text: text, textColor: textColor, backgroundColor: backgroundColor, image: image, action: action, onClick: onClick })=>{
|
|
@@ -23196,8 +23220,10 @@ const $341aa389b3b9926d$var$DashboardItem = ({ index: index, text: text, textCol
|
|
|
23196
23220
|
})
|
|
23197
23221
|
}),
|
|
23198
23222
|
/*#__PURE__*/ (0, $dWhh5$reactjsxruntime.jsx)("div", {
|
|
23199
|
-
className: "rf-h-[35%] rf-w-full rf-flex rf-justify-center rf-items-center rf-text-center rf-text-extra-small-size-auto rf-
|
|
23200
|
-
|
|
23223
|
+
className: "rf-h-[35%] rf-w-full rf-flex rf-justify-center rf-items-center rf-text-center rf-text-extra-small-size-auto rf-overflow-y-hidden rf-scrollbar-thin",
|
|
23224
|
+
dangerouslySetInnerHTML: {
|
|
23225
|
+
__html: $341aa389b3b9926d$var$md.render(text)
|
|
23226
|
+
}
|
|
23201
23227
|
}),
|
|
23202
23228
|
qrCodeData && /*#__PURE__*/ (0, $dWhh5$reactjsxruntime.jsxs)((0, $dWhh5$reactspringweb.animated).div, {
|
|
23203
23229
|
className: "rf-absolute rf-h-full rf-w-full rf-top-0 rf-left-0 rf-z-ui rf-flex rf-flex-col rf-justify-center rf-items-center rf-gap-2 rf-p-2 rf-text-truewhite",
|
|
@@ -23636,6 +23662,13 @@ var $40c9c7ece5949bcc$export$2e2bcd8739ae039 = $40c9c7ece5949bcc$var$Mobile;
|
|
|
23636
23662
|
|
|
23637
23663
|
|
|
23638
23664
|
|
|
23665
|
+
const $2787dd389f2dd7d2$var$md = (0, ($parcel$interopDefault($dWhh5$markdownit)))({
|
|
23666
|
+
breaks: true,
|
|
23667
|
+
html: true,
|
|
23668
|
+
xhtmlOut: true,
|
|
23669
|
+
typographer: true,
|
|
23670
|
+
quotes: `""''`
|
|
23671
|
+
});
|
|
23639
23672
|
const $2787dd389f2dd7d2$var$DashboardItem = ({ text: text, textColor: textColor, image: image, action: action, onClick: onClick })=>{
|
|
23640
23673
|
const locale = (0, $0db969f5e79ce01b$export$6650dace022cfacc)((state)=>state.locale);
|
|
23641
23674
|
const { sendMessage: sendMessage, sendEvent: sendEvent } = (0, $328a7f03b0982320$export$adc771f45cf9b273)((state)=>state.actions);
|
|
@@ -23710,7 +23743,9 @@ const $2787dd389f2dd7d2$var$DashboardItem = ({ text: text, textColor: textColor,
|
|
|
23710
23743
|
})
|
|
23711
23744
|
}),
|
|
23712
23745
|
/*#__PURE__*/ (0, $dWhh5$reactjsxruntime.jsx)("div", {
|
|
23713
|
-
|
|
23746
|
+
dangerouslySetInnerHTML: {
|
|
23747
|
+
__html: $2787dd389f2dd7d2$var$md.render(text)
|
|
23748
|
+
}
|
|
23714
23749
|
})
|
|
23715
23750
|
]
|
|
23716
23751
|
});
|
|
@@ -25304,6 +25339,7 @@ var $01d9bb41fd368021$export$2e2bcd8739ae039 = $01d9bb41fd368021$var$Time;
|
|
|
25304
25339
|
|
|
25305
25340
|
|
|
25306
25341
|
|
|
25342
|
+
|
|
25307
25343
|
const $d3f2491623efa760$var$useNews = ()=>{
|
|
25308
25344
|
var _activity_attachments;
|
|
25309
25345
|
const activities = (0, $8fc061e3e1dc64cb$export$b56465394e2b1287)((state)=>state.botEventActivities);
|
|
@@ -25338,16 +25374,30 @@ var $d3f2491623efa760$export$2e2bcd8739ae039 = $d3f2491623efa760$var$useNews;
|
|
|
25338
25374
|
|
|
25339
25375
|
|
|
25340
25376
|
|
|
25377
|
+
|
|
25341
25378
|
const $24072221965576dd$var$Banner = ({ news: news })=>{
|
|
25342
25379
|
var _news_image, _news_image1;
|
|
25343
25380
|
const translation = (0, $0db969f5e79ce01b$export$6650dace022cfacc)((state)=>state.currentTranslations);
|
|
25344
25381
|
const locale = (0, $0db969f5e79ce01b$export$6650dace022cfacc)((state)=>state.locale);
|
|
25345
25382
|
const isMobile = (0, $6acc5d637072b42e$export$d13b2577cb75f2ad)((state)=>state.isMobile);
|
|
25346
25383
|
const currentWidth = (0, $6acc5d637072b42e$export$d13b2577cb75f2ad)((state)=>state.currentWidth);
|
|
25384
|
+
const newsConfig = (0, $1d4f8108de9ab73a$export$bd22554f31e5f96f)((state)=>state.configuration.newsConfig);
|
|
25347
25385
|
const timerRef = (0, $dWhh5$react.useRef)(null);
|
|
25348
25386
|
const [scrollDuration, setScrollDuration] = (0, $dWhh5$react.useState)(0);
|
|
25349
25387
|
const [imageSize, setImageSize] = (0, $dWhh5$react.useState)(0);
|
|
25350
25388
|
const elementRef = (0, $dWhh5$react.useRef)(null);
|
|
25389
|
+
const bannerTitle = (0, $dWhh5$react.useMemo)(()=>{
|
|
25390
|
+
var _newsConfig_bannerTitleLocalized;
|
|
25391
|
+
if (news.category) return news.category;
|
|
25392
|
+
else if (newsConfig === null || newsConfig === void 0 ? void 0 : (_newsConfig_bannerTitleLocalized = newsConfig.bannerTitleLocalized) === null || _newsConfig_bannerTitleLocalized === void 0 ? void 0 : _newsConfig_bannerTitleLocalized[locale]) return newsConfig.bannerTitleLocalized[locale];
|
|
25393
|
+
else if (newsConfig === null || newsConfig === void 0 ? void 0 : newsConfig.bannerTitle) return newsConfig.bannerTitle;
|
|
25394
|
+
return translation.news.continuous;
|
|
25395
|
+
}, [
|
|
25396
|
+
news,
|
|
25397
|
+
newsConfig,
|
|
25398
|
+
locale,
|
|
25399
|
+
translation
|
|
25400
|
+
]);
|
|
25351
25401
|
/**
|
|
25352
25402
|
* Set animation for text horizontal scrolling if necessary
|
|
25353
25403
|
*/ const updateDuration = ()=>{
|
|
@@ -25386,7 +25436,7 @@ const $24072221965576dd$var$Banner = ({ news: news })=>{
|
|
|
25386
25436
|
/*#__PURE__*/ (0, $dWhh5$reactjsxruntime.jsx)("div", {
|
|
25387
25437
|
className: "rf-px-4 rf-pb-2 rf-pt-2 large:rf-pt-3 rf-font-bold rf-bg-red-600 rf-whitespace-nowrap",
|
|
25388
25438
|
ref: elementRef,
|
|
25389
|
-
children:
|
|
25439
|
+
children: bannerTitle === null || bannerTitle === void 0 ? void 0 : bannerTitle.toLocaleUpperCase(locale)
|
|
25390
25440
|
}),
|
|
25391
25441
|
/*#__PURE__*/ (0, $dWhh5$reactjsxruntime.jsx)("div", {
|
|
25392
25442
|
className: "rf-px-4 rf-mb-2 rf-mt-2 large:rf-mt-3 rf-font-bold rf-line-clamp-1",
|
|
@@ -25441,6 +25491,7 @@ const $d399eaf5da71d3d6$var$News = ({ intervalInSeconds: intervalInSeconds = 3,
|
|
|
25441
25491
|
const route = (0, $6acc5d637072b42e$export$d13b2577cb75f2ad)((state)=>state.route);
|
|
25442
25492
|
const isMobile = (0, $6acc5d637072b42e$export$d13b2577cb75f2ad)((state)=>state.isMobile);
|
|
25443
25493
|
const retorikNewsEnded = (0, $2793f2455cec0982$export$77e4cc5334565f28)((state)=>state.retorikNewsEnded);
|
|
25494
|
+
const newsConfig = (0, $1d4f8108de9ab73a$export$bd22554f31e5f96f)((state)=>state.configuration.newsConfig);
|
|
25444
25495
|
const { setCurrentNewsActivity: setCurrentNewsActivity, setRetorikNewsEnded: setRetorikNewsEnded } = (0, $2793f2455cec0982$export$77e4cc5334565f28)((state)=>state.actions);
|
|
25445
25496
|
const sendEvent = (0, $328a7f03b0982320$export$adc771f45cf9b273)((state)=>state.actions.sendEvent);
|
|
25446
25497
|
const news = (0, $dWhh5$react.useMemo)(()=>{
|
|
@@ -25461,9 +25512,11 @@ const $d399eaf5da71d3d6$var$News = ({ intervalInSeconds: intervalInSeconds = 3,
|
|
|
25461
25512
|
(0, $dWhh5$react.useEffect)(()=>{
|
|
25462
25513
|
const currentNew = news[current];
|
|
25463
25514
|
if (currentNew) {
|
|
25515
|
+
const textTitle = (newsConfig === null || newsConfig === void 0 ? void 0 : newsConfig.removeTitleFromTextToSpeak) ? '' : `${currentNew.title}, <break/> `;
|
|
25516
|
+
const textSubtitle = (newsConfig === null || newsConfig === void 0 ? void 0 : newsConfig.removeSubtitleFromTextToSpeak) ? '' : `${currentNew.subtitle}: <break/> `;
|
|
25464
25517
|
const tempActivity = {
|
|
25465
25518
|
...activity,
|
|
25466
|
-
speak: `${
|
|
25519
|
+
speak: `${textTitle}${textSubtitle}${currentNew.text}`
|
|
25467
25520
|
};
|
|
25468
25521
|
setCurrentNewsActivity(tempActivity);
|
|
25469
25522
|
} else setCurrentNewsActivity(undefined);
|
|
@@ -26044,18 +26097,18 @@ const $d441ea54333b2073$var$buildSSML = (activity, locale, speechMarkdownParser,
|
|
|
26044
26097
|
let speech = activity.speak || activity.text;
|
|
26045
26098
|
// Replace character not recognized in Microsoft TTS
|
|
26046
26099
|
speech = speech.replaceAll("\u2019", "'");
|
|
26047
|
-
if (sayAsWords && sayAsWords.length) {
|
|
26048
|
-
const wordsUsed = [];
|
|
26049
|
-
sayAsWords.forEach((tuple)=>{
|
|
26050
|
-
if (!wordsUsed.includes(tuple.text)) {
|
|
26051
|
-
const regex = new RegExp(`\\b${tuple.text}\\b`, 'gi');
|
|
26052
|
-
speech = speech.replaceAll(regex, `(${tuple.text})[ipa:"${tuple.ipa}"]`);
|
|
26053
|
-
wordsUsed.push(tuple.text);
|
|
26054
|
-
}
|
|
26055
|
-
});
|
|
26056
|
-
}
|
|
26057
26100
|
let textParsedAsSSML = '';
|
|
26058
26101
|
try {
|
|
26102
|
+
if (sayAsWords === null || sayAsWords === void 0 ? void 0 : sayAsWords.length) {
|
|
26103
|
+
const wordsUsed = [];
|
|
26104
|
+
sayAsWords.forEach((tuple)=>{
|
|
26105
|
+
if (!wordsUsed.includes(tuple.text.toLocaleLowerCase(locale))) {
|
|
26106
|
+
const regex = new RegExp(`\\b${tuple.text}\\b`, 'gi');
|
|
26107
|
+
speech = speech.replaceAll(regex, `(${tuple.text})[ipa:"${tuple.ipa}"]`);
|
|
26108
|
+
wordsUsed.push(tuple.text.toLocaleLowerCase(locale));
|
|
26109
|
+
}
|
|
26110
|
+
});
|
|
26111
|
+
}
|
|
26059
26112
|
textParsedAsSSML = speechMarkdownParser.toSSML(speech);
|
|
26060
26113
|
} catch (e) {
|
|
26061
26114
|
console.warn('Retorik Framework > error in speechmarkdown parser : ', e);
|
|
@@ -29003,6 +29056,89 @@ var $b2eff0b289a9ca58$export$2e2bcd8739ae039 = $b2eff0b289a9ca58$var$RetorikNews
|
|
|
29003
29056
|
|
|
29004
29057
|
|
|
29005
29058
|
|
|
29059
|
+
function $d1249e1b373273e4$export$2e2bcd8739ae039(RetorikAgent, props, element) {
|
|
29060
|
+
const root = (0, $dWhh5$reactdomclient.createRoot)(element);
|
|
29061
|
+
root.render(/*#__PURE__*/ (0, $dWhh5$reactjsxruntime.jsx)(RetorikAgent, {
|
|
29062
|
+
...props
|
|
29063
|
+
}));
|
|
29064
|
+
}
|
|
29065
|
+
// WebComponent creation
|
|
29066
|
+
class $d1249e1b373273e4$var$RetorikAgentWebComponent extends HTMLElement {
|
|
29067
|
+
// Mehod called when the element is connected to the DOM
|
|
29068
|
+
connectedCallback() {
|
|
29069
|
+
const tenant = this.getAttribute('tenant');
|
|
29070
|
+
const prefix = this.getAttribute('prefix');
|
|
29071
|
+
const props = JSON.parse(this.getAttribute('props') || '{}');
|
|
29072
|
+
if (tenant) {
|
|
29073
|
+
const addressData = {
|
|
29074
|
+
tenant: tenant,
|
|
29075
|
+
prefix: prefix
|
|
29076
|
+
};
|
|
29077
|
+
this._renderAgent({
|
|
29078
|
+
...props,
|
|
29079
|
+
addressData: addressData
|
|
29080
|
+
});
|
|
29081
|
+
}
|
|
29082
|
+
}
|
|
29083
|
+
// React component rendering
|
|
29084
|
+
_renderAgent(props) {
|
|
29085
|
+
const root = (0, $dWhh5$reactdomclient.createRoot)(this);
|
|
29086
|
+
root.render(/*#__PURE__*/ (0, $dWhh5$reactjsxruntime.jsx)((0, $e9118dec60074066$export$2e2bcd8739ae039), {
|
|
29087
|
+
...props
|
|
29088
|
+
}));
|
|
29089
|
+
}
|
|
29090
|
+
constructor(){
|
|
29091
|
+
super();
|
|
29092
|
+
}
|
|
29093
|
+
}
|
|
29094
|
+
// WebComponent registering in window
|
|
29095
|
+
window.customElements.define('retorik-agent', $d1249e1b373273e4$var$RetorikAgentWebComponent);
|
|
29096
|
+
|
|
29097
|
+
|
|
29098
|
+
|
|
29099
|
+
|
|
29100
|
+
|
|
29101
|
+
|
|
29102
|
+
function $063ea7a515c267b7$export$2e2bcd8739ae039(RetorikWidget, props, element) {
|
|
29103
|
+
const root = (0, $dWhh5$reactdomclient.createRoot)(element);
|
|
29104
|
+
root.render(/*#__PURE__*/ (0, $dWhh5$reactjsxruntime.jsx)(RetorikWidget, {
|
|
29105
|
+
...props
|
|
29106
|
+
}));
|
|
29107
|
+
}
|
|
29108
|
+
// WebComponent creation
|
|
29109
|
+
class $063ea7a515c267b7$var$RetorikWidgetWebComponent extends HTMLElement {
|
|
29110
|
+
// Mehod called when the element is connected to the DOM
|
|
29111
|
+
connectedCallback() {
|
|
29112
|
+
const tenant = this.getAttribute('tenant');
|
|
29113
|
+
const prefix = this.getAttribute('prefix');
|
|
29114
|
+
const props = JSON.parse(this.getAttribute('props') || '{}');
|
|
29115
|
+
if (tenant) {
|
|
29116
|
+
const addressData = {
|
|
29117
|
+
tenant: tenant,
|
|
29118
|
+
prefix: prefix
|
|
29119
|
+
};
|
|
29120
|
+
this._renderWidget({
|
|
29121
|
+
...props,
|
|
29122
|
+
addressData: addressData
|
|
29123
|
+
});
|
|
29124
|
+
}
|
|
29125
|
+
}
|
|
29126
|
+
// React component rendering
|
|
29127
|
+
_renderWidget(props) {
|
|
29128
|
+
const root = (0, $dWhh5$reactdomclient.createRoot)(this);
|
|
29129
|
+
root.render(/*#__PURE__*/ (0, $dWhh5$reactjsxruntime.jsx)((0, $09a824b6b849eeca$export$2e2bcd8739ae039), {
|
|
29130
|
+
...props
|
|
29131
|
+
}));
|
|
29132
|
+
}
|
|
29133
|
+
constructor(){
|
|
29134
|
+
super();
|
|
29135
|
+
}
|
|
29136
|
+
}
|
|
29137
|
+
// WebComponent registering in window
|
|
29138
|
+
window.customElements.define('retorik-widget', $063ea7a515c267b7$var$RetorikWidgetWebComponent);
|
|
29139
|
+
|
|
29140
|
+
|
|
29141
|
+
|
|
29006
29142
|
|
|
29007
29143
|
|
|
29008
29144
|
|