@davi-ai/retorik-framework 1.0.14 → 1.0.16

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.
@@ -71,7 +71,7 @@ function $be78c14eded2a1b5$export$2e2bcd8739ae039(RetorikWidget, props, element)
71
71
 
72
72
 
73
73
  var $4e7182a6e3eb35e2$exports = {};
74
- $4e7182a6e3eb35e2$exports = "*, :before, :after {\n box-sizing: border-box;\n border: 0 solid;\n}\n\n:before, :after {\n --tw-content: \"\";\n}\n\nhtml, :host {\n -webkit-text-size-adjust: 100%;\n -moz-tab-size: 4;\n tab-size: 4;\n font-feature-settings: normal;\n font-variation-settings: normal;\n -webkit-tap-highlight-color: transparent;\n font-family: Calibri, sans-serif;\n line-height: 1.5;\n}\n\nbody {\n line-height: inherit;\n margin: 0;\n}\n\nhr {\n color: inherit;\n border-top-width: 1px;\n height: 0;\n}\n\nabbr:where([title]) {\n text-decoration: underline dotted;\n}\n\nh1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n}\n\na {\n color: inherit;\n text-decoration: inherit;\n}\n\nb, strong {\n font-weight: bolder;\n}\n\ncode, kbd, samp, pre {\n font-feature-settings: normal;\n font-variation-settings: normal;\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace;\n font-size: 1em;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub, sup {\n vertical-align: baseline;\n font-size: 75%;\n line-height: 0;\n position: relative;\n}\n\nsub {\n bottom: -.25em;\n}\n\nsup {\n top: -.5em;\n}\n\ntable {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n}\n\nbutton, input, optgroup, select, textarea {\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n font-family: inherit;\n font-size: 100%;\n font-weight: inherit;\n line-height: inherit;\n color: inherit;\n margin: 0;\n padding: 0;\n}\n\nbutton, select {\n text-transform: none;\n}\n\nbutton, [type=\"button\"], [type=\"reset\"], [type=\"submit\"] {\n -webkit-appearance: button;\n background-color: #0000;\n background-image: none;\n}\n\n:-moz-focusring {\n outline: auto;\n}\n\n:-moz-ui-invalid {\n box-shadow: none;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n}\n\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n -webkit-appearance: button;\n font: inherit;\n}\n\nsummary {\n display: list-item;\n}\n\nblockquote, dl, dd, h1, h2, h3, h4, h5, h6, hr, figure, p, pre {\n margin: 0;\n}\n\nfieldset {\n margin: 0;\n padding: 0;\n}\n\nlegend {\n padding: 0;\n}\n\nol, ul, menu {\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\ndialog {\n padding: 0;\n}\n\ntextarea {\n resize: vertical;\n}\n\ninput::placeholder, textarea::placeholder {\n opacity: 1;\n color: #9ca3af;\n}\n\nbutton, [role=\"button\"] {\n cursor: pointer;\n}\n\n:disabled {\n cursor: default;\n}\n\nimg, svg, video, canvas, audio, iframe, embed, object {\n vertical-align: middle;\n display: block;\n}\n\nimg, video {\n max-width: 100%;\n height: auto;\n}\n\n[hidden] {\n display: none;\n}\n\n*, :before, :after, ::backdrop {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: #3b82f680;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n\n.rf-pointer-events-none {\n pointer-events: none;\n}\n\n.rf-pointer-events-auto {\n pointer-events: auto;\n}\n\n.rf-visible {\n visibility: visible;\n}\n\n.rf-invisible {\n visibility: hidden;\n}\n\n.rf-fixed {\n position: fixed;\n}\n\n.rf-absolute {\n position: absolute;\n}\n\n.rf-relative {\n position: relative;\n}\n\n.-rf-left-6 {\n left: -1.5rem;\n}\n\n.-rf-top-6 {\n top: -1.5rem;\n}\n\n.-rf-top-\\[1\\.15rem\\] {\n top: -1.15rem;\n}\n\n.rf--bottom-2 {\n bottom: -.5rem;\n}\n\n.rf-bottom-0 {\n bottom: 0;\n}\n\n.rf-bottom-1 {\n bottom: .25rem;\n}\n\n.rf-bottom-1\\/4 {\n bottom: 25%;\n}\n\n.rf-bottom-16 {\n bottom: 4rem;\n}\n\n.rf-bottom-2 {\n bottom: .5rem;\n}\n\n.rf-bottom-4 {\n bottom: 1rem;\n}\n\n.rf-bottom-40 {\n bottom: 10rem;\n}\n\n.rf-left-0 {\n left: 0;\n}\n\n.rf-left-1 {\n left: .25rem;\n}\n\n.rf-left-1\\/2 {\n left: 50%;\n}\n\n.rf-left-2 {\n left: .5rem;\n}\n\n.rf-left-4 {\n left: 1rem;\n}\n\n.rf-right-0 {\n right: 0;\n}\n\n.rf-right-1 {\n right: .25rem;\n}\n\n.rf-right-2 {\n right: .5rem;\n}\n\n.rf-right-3 {\n right: .75rem;\n}\n\n.rf-right-4 {\n right: 1rem;\n}\n\n.rf-right-6 {\n right: 1.5rem;\n}\n\n.rf-right-8 {\n right: 2rem;\n}\n\n.rf-top-0 {\n top: 0;\n}\n\n.rf-top-1 {\n top: .25rem;\n}\n\n.rf-top-1\\/2 {\n top: 50%;\n}\n\n.rf-top-1\\/3 {\n top: 33.3333%;\n}\n\n.rf-top-110 {\n top: 110%;\n}\n\n.rf-top-2 {\n top: .5rem;\n}\n\n.rf-top-4 {\n top: 1rem;\n}\n\n.rf-top-\\[0\\.125rem\\] {\n top: .125rem;\n}\n\n.rf-z-background {\n z-index: 0;\n}\n\n.rf-z-chatbot {\n z-index: 10;\n}\n\n.rf-z-detailedPOI {\n z-index: 2;\n}\n\n.rf-z-dropdown {\n z-index: 30;\n}\n\n.rf-z-exitwidget {\n z-index: 55;\n}\n\n.rf-z-menu {\n z-index: 40;\n}\n\n.rf-z-modal {\n z-index: 50;\n}\n\n.rf-z-overlay {\n z-index: 40;\n}\n\n.rf-z-ui {\n z-index: 20;\n}\n\n.rf-z-util {\n z-index: 1;\n}\n\n.rf-col-span-2 {\n grid-column: span 2 / span 2;\n}\n\n.rf-col-span-3 {\n grid-column: span 3 / span 3;\n}\n\n.rf-col-span-6 {\n grid-column: span 6 / span 6;\n}\n\n.rf-col-span-full {\n grid-column: 1 / -1;\n}\n\n.rf-col-start-1 {\n grid-column-start: 1;\n}\n\n.rf-col-start-2 {\n grid-column-start: 2;\n}\n\n.rf-col-start-4 {\n grid-column-start: 4;\n}\n\n.rf-col-start-5 {\n grid-column-start: 5;\n}\n\n.rf-col-end-13 {\n grid-column-end: 13;\n}\n\n.rf-col-end-2 {\n grid-column-end: 2;\n}\n\n.rf-col-end-9 {\n grid-column-end: 9;\n}\n\n.rf-row-span-1 {\n grid-row: span 1 / span 1;\n}\n\n.rf-row-span-2 {\n grid-row: span 2 / span 2;\n}\n\n.rf-row-span-3 {\n grid-row: span 3 / span 3;\n}\n\n.rf-row-span-5 {\n grid-row: span 5 / span 5;\n}\n\n.rf-row-span-6 {\n grid-row: span 6 / span 6;\n}\n\n.rf-row-span-9 {\n grid-row: span 9 / span 9;\n}\n\n.rf-row-span-full {\n grid-row: 1 / -1;\n}\n\n.rf-row-start-1 {\n grid-row-start: 1;\n}\n\n.rf-row-start-12 {\n grid-row-start: 12;\n}\n\n.rf-row-start-2 {\n grid-row-start: 2;\n}\n\n.rf-row-start-3 {\n grid-row-start: 3;\n}\n\n.rf-row-start-4 {\n grid-row-start: 4;\n}\n\n.rf-row-start-6 {\n grid-row-start: 6;\n}\n\n.rf-row-start-9 {\n grid-row-start: 9;\n}\n\n.rf-row-end-13 {\n grid-row-end: 13;\n}\n\n.rf-row-end-2 {\n grid-row-end: 2;\n}\n\n.rf-row-end-3 {\n grid-row-end: 3;\n}\n\n.rf-row-end-4 {\n grid-row-end: 4;\n}\n\n.rf-row-end-5 {\n grid-row-end: 5;\n}\n\n.rf-float-right {\n float: right;\n}\n\n.rf-m-0 {\n margin: 0;\n}\n\n.rf-m-4 {\n margin: 1rem;\n}\n\n.rf-m-auto {\n margin: auto;\n}\n\n.-rf-mx-6 {\n margin-left: -1.5rem;\n margin-right: -1.5rem;\n}\n\n.rf-mx-0 {\n margin-left: 0;\n margin-right: 0;\n}\n\n.rf-mx-2 {\n margin-left: .5rem;\n margin-right: .5rem;\n}\n\n.rf-mx-3 {\n margin-left: .75rem;\n margin-right: .75rem;\n}\n\n.rf-mx-8 {\n margin-left: 2rem;\n margin-right: 2rem;\n}\n\n.rf-mx-auto {\n margin-left: auto;\n margin-right: auto;\n}\n\n.rf-my-1 {\n margin-top: .25rem;\n margin-bottom: .25rem;\n}\n\n.rf-my-2 {\n margin-top: .5rem;\n margin-bottom: .5rem;\n}\n\n.rf-my-4 {\n margin-top: 1rem;\n margin-bottom: 1rem;\n}\n\n.rf-my-auto {\n margin-top: auto;\n margin-bottom: auto;\n}\n\n.-rf-mb-4 {\n margin-bottom: -1rem;\n}\n\n.-rf-ml-2 {\n margin-left: -.5rem;\n}\n\n.rf-mb-0 {\n margin-bottom: 0;\n}\n\n.rf-mb-1 {\n margin-bottom: .25rem;\n}\n\n.rf-mb-10 {\n margin-bottom: 2.5rem;\n}\n\n.rf-mb-12 {\n margin-bottom: 3rem;\n}\n\n.rf-mb-16 {\n margin-bottom: 4rem;\n}\n\n.rf-mb-2 {\n margin-bottom: .5rem;\n}\n\n.rf-mb-26 {\n margin-bottom: 6.5rem;\n}\n\n.rf-mb-28 {\n margin-bottom: 7rem;\n}\n\n.rf-mb-3 {\n margin-bottom: .75rem;\n}\n\n.rf-mb-30 {\n margin-bottom: 7.5rem;\n}\n\n.rf-mb-4 {\n margin-bottom: 1rem;\n}\n\n.rf-mb-5 {\n margin-bottom: 1.25rem;\n}\n\n.rf-mb-6 {\n margin-bottom: 1.5rem;\n}\n\n.rf-mb-8 {\n margin-bottom: 2rem;\n}\n\n.rf-ml-1 {\n margin-left: .25rem;\n}\n\n.rf-ml-2 {\n margin-left: .5rem;\n}\n\n.rf-ml-4 {\n margin-left: 1rem;\n}\n\n.rf-ml-6 {\n margin-left: 1.5rem;\n}\n\n.rf-mr-1 {\n margin-right: .25rem;\n}\n\n.rf-mr-2 {\n margin-right: .5rem;\n}\n\n.rf-mr-3 {\n margin-right: .75rem;\n}\n\n.rf-mr-4 {\n margin-right: 1rem;\n}\n\n.rf-mr-5 {\n margin-right: 1.25rem;\n}\n\n.rf-mt-1 {\n margin-top: .25rem;\n}\n\n.rf-mt-10 {\n margin-top: 2.5rem;\n}\n\n.rf-mt-2 {\n margin-top: .5rem;\n}\n\n.rf-mt-4 {\n margin-top: 1rem;\n}\n\n.rf-mt-5 {\n margin-top: 1.25rem;\n}\n\n.rf-mt-8 {\n margin-top: 2rem;\n}\n\n.rf-mt-\\[0\\.2rem\\] {\n margin-top: .2rem;\n}\n\n.rf-mt-auto {\n margin-top: auto;\n}\n\n.rf-line-clamp-1 {\n -webkit-line-clamp: 1;\n -webkit-box-orient: vertical;\n display: -webkit-box;\n overflow: hidden;\n}\n\n.rf-line-clamp-2 {\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n display: -webkit-box;\n overflow: hidden;\n}\n\n.rf-inline {\n display: inline;\n}\n\n.rf-flex {\n display: flex;\n}\n\n.rf-grid {\n display: grid;\n}\n\n.rf-hidden {\n display: none;\n}\n\n.rf-aspect-\\[4\\/3\\] {\n aspect-ratio: 4 / 3;\n}\n\n.rf-aspect-square {\n aspect-ratio: 1;\n}\n\n.rf-aspect-video {\n aspect-ratio: 16 / 9;\n}\n\n.rf-h-0 {\n height: 0;\n}\n\n.rf-h-1 {\n height: .25rem;\n}\n\n.rf-h-1\\/2 {\n height: 50%;\n}\n\n.rf-h-1\\/3 {\n height: 33.3333%;\n}\n\n.rf-h-12 {\n height: 3rem;\n}\n\n.rf-h-14 {\n height: 3.5rem;\n}\n\n.rf-h-16 {\n height: 4rem;\n}\n\n.rf-h-18 {\n height: 4.5rem;\n}\n\n.rf-h-2 {\n height: .5rem;\n}\n\n.rf-h-2\\/3 {\n height: 66.6667%;\n}\n\n.rf-h-24 {\n height: 6rem;\n}\n\n.rf-h-3 {\n height: .75rem;\n}\n\n.rf-h-3\\/10 {\n height: 30%;\n}\n\n.rf-h-32 {\n height: 8rem;\n}\n\n.rf-h-36 {\n height: 9rem;\n}\n\n.rf-h-4 {\n height: 1rem;\n}\n\n.rf-h-48 {\n height: 12rem;\n}\n\n.rf-h-5 {\n height: 1.25rem;\n}\n\n.rf-h-6 {\n height: 1.5rem;\n}\n\n.rf-h-7 {\n height: 1.75rem;\n}\n\n.rf-h-8 {\n height: 2rem;\n}\n\n.rf-h-9 {\n height: 2.25rem;\n}\n\n.rf-h-\\[0\\.875rem\\] {\n height: .875rem;\n}\n\n.rf-h-\\[calc\\(50vw-3rem\\)\\] {\n height: calc(50vw - 3rem);\n}\n\n.rf-h-fit {\n height: fit-content;\n}\n\n.rf-h-full {\n height: 100%;\n}\n\n.rf-h-max {\n height: max-content;\n}\n\n.rf-h-screen {\n height: 100vh;\n}\n\n.rf-max-h-12 {\n max-height: 3rem;\n}\n\n.rf-max-h-28 {\n max-height: 7rem;\n}\n\n.rf-max-h-4\\/5 {\n max-height: 80%;\n}\n\n.rf-max-h-48 {\n max-height: 12rem;\n}\n\n.rf-max-h-6 {\n max-height: 1.5rem;\n}\n\n.rf-max-h-full {\n max-height: 100%;\n}\n\n.rf-max-h-qrcode {\n max-height: 120px;\n}\n\n.rf-max-h-screen {\n max-height: 100vh;\n}\n\n.rf-min-h-12 {\n min-height: 3rem;\n}\n\n.rf-min-h-16 {\n min-height: 4rem;\n}\n\n.rf-min-h-2\\/5 {\n min-height: 40%;\n}\n\n.rf-min-h-6 {\n min-height: 1.5rem;\n}\n\n.rf-min-h-full {\n min-height: 100%;\n}\n\n.rf-min-h-inherit {\n min-height: inherit;\n}\n\n.rf-w-0 {\n width: 0;\n}\n\n.rf-w-1\\/2 {\n width: 50%;\n}\n\n.rf-w-1\\/3 {\n width: 33.3333%;\n}\n\n.rf-w-1\\/4 {\n width: 25%;\n}\n\n.rf-w-11\\/12 {\n width: 91.6667%;\n}\n\n.rf-w-12 {\n width: 3rem;\n}\n\n.rf-w-16 {\n width: 4rem;\n}\n\n.rf-w-18 {\n width: 4.5rem;\n}\n\n.rf-w-2 {\n width: .5rem;\n}\n\n.rf-w-2\\/3 {\n width: 66.6667%;\n}\n\n.rf-w-20 {\n width: 5rem;\n}\n\n.rf-w-24 {\n width: 6rem;\n}\n\n.rf-w-3 {\n width: .75rem;\n}\n\n.rf-w-3\\/20 {\n width: 15%;\n}\n\n.rf-w-3\\/5 {\n width: 60%;\n}\n\n.rf-w-32 {\n width: 8rem;\n}\n\n.rf-w-36 {\n width: 9rem;\n}\n\n.rf-w-4 {\n width: 1rem;\n}\n\n.rf-w-4\\/9 {\n width: 45%;\n}\n\n.rf-w-48 {\n width: 12rem;\n}\n\n.rf-w-5 {\n width: 1.25rem;\n}\n\n.rf-w-6 {\n width: 1.5rem;\n}\n\n.rf-w-7 {\n width: 1.75rem;\n}\n\n.rf-w-8 {\n width: 2rem;\n}\n\n.rf-w-9 {\n width: 2.25rem;\n}\n\n.rf-w-\\[45\\%\\] {\n width: 45%;\n}\n\n.rf-w-\\[45ch\\] {\n width: 45ch;\n}\n\n.rf-w-\\[90\\%\\] {\n width: 90%;\n}\n\n.rf-w-\\[calc\\(100\\%-3rem\\)\\] {\n width: calc(100% - 3rem);\n}\n\n.rf-w-fit {\n width: fit-content;\n}\n\n.rf-w-full {\n width: 100%;\n}\n\n.rf-w-max {\n width: max-content;\n}\n\n.rf-w-screen {\n width: 100vw;\n}\n\n.rf-min-w-11\\/12 {\n min-width: 91.7%;\n}\n\n.rf-min-w-12 {\n min-width: 3rem;\n}\n\n.rf-min-w-24 {\n min-width: 6rem;\n}\n\n.rf-min-w-3\\/20 {\n min-width: 15%;\n}\n\n.rf-min-w-6 {\n min-width: 1.5rem;\n}\n\n.rf-min-w-\\[45\\%\\] {\n min-width: 45%;\n}\n\n.rf-min-w-full {\n min-width: 100%;\n}\n\n.rf-max-w-1\\/2 {\n max-width: 50%;\n}\n\n.rf-max-w-16 {\n max-width: 4rem;\n}\n\n.rf-max-w-3\\/20 {\n max-width: 15%;\n}\n\n.rf-max-w-6 {\n max-width: 1.5rem;\n}\n\n.rf-max-w-7\\/10 {\n max-width: 70%;\n}\n\n.rf-max-w-\\[100vw\\] {\n max-width: 100vw;\n}\n\n.rf-max-w-\\[45\\%\\] {\n max-width: 45%;\n}\n\n.rf-max-w-\\[70vw\\] {\n max-width: 70vw;\n}\n\n.rf-max-w-\\[calc\\(100\\%-2rem\\)\\] {\n max-width: calc(100% - 2rem);\n}\n\n.rf-max-w-full {\n max-width: 100%;\n}\n\n.rf-max-w-none {\n max-width: none;\n}\n\n.rf-flex-1 {\n flex: 1;\n}\n\n.rf-flex-\\[0_0_40\\%\\] {\n flex: 0 0 40%;\n}\n\n.rf-flex-\\[2_1_0\\%\\] {\n flex: 2;\n}\n\n.rf-flex-\\[4_1_0\\%\\] {\n flex: 4;\n}\n\n.rf-origin-center {\n transform-origin: center;\n}\n\n.-rf-translate-x-1\\/2 {\n --tw-translate-x: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.-rf-translate-y-1\\/2 {\n --tw-translate-y: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.rf--translate-x-1\\/2 {\n --tw-translate-x: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.rf-translate-x-1 {\n --tw-translate-x: .25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.rf-translate-x-5 {\n --tw-translate-x: 1.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.rf--rotate-90 {\n --tw-rotate: -90deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.rf-rotate-0 {\n --tw-rotate: 0deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.rf-rotate-180 {\n --tw-rotate: 180deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.rf-rotate-90 {\n --tw-rotate: 90deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.rf-scale-0 {\n --tw-scale-x: 0;\n --tw-scale-y: 0;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.rf-transform {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n@keyframes rf-hScroll {\n 0% {\n transform: translateX(0);\n }\n\n 100% {\n transform: translateX(calc(-100% - 2rem));\n }\n}\n\n.rf-animate-hScroll {\n animation: 20s linear infinite rf-hScroll;\n}\n\n@keyframes rf-loader {\n 0% {\n box-shadow: 0 1.5rem 0 -1.5rem var(--rf-color-loader-animation);\n }\n\n 40% {\n box-shadow: 0 1.5rem 0 -.3rem var(--rf-color-loader-animation);\n }\n\n 80% {\n box-shadow: 0 1.5rem 0 -1.5rem var(--rf-color-loader-animation);\n }\n\n 100% {\n box-shadow: 0 1.5rem 0 -1.5rem var(--rf-color-loader-animation);\n }\n}\n\n.rf-animate-loader {\n animation: 1.8s ease-in-out -.16s infinite both rf-loader;\n}\n\n@keyframes rf-fadeIn {\n 0% {\n opacity: 0;\n }\n\n 100% {\n opacity: 1;\n }\n}\n\n.rf-animate-loaderFadeIn {\n animation: 2s rf-fadeIn;\n}\n\n@keyframes rf-fadeOut {\n 0% {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n }\n}\n\n.rf-animate-loaderFadeOut {\n animation: 1s rf-fadeOut;\n}\n\n@keyframes rf-slideBottom {\n 0% {\n opacity: 0;\n transform: translateX(0)translateY(20px);\n }\n\n 100% {\n opacity: 1;\n transform: translateX(0)translateY(0);\n }\n}\n\n.rf-animate-slideBottom {\n animation: .5s .2s backwards rf-slideBottom;\n}\n\n@keyframes rf-spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n.rf-animate-spin {\n animation: 1s linear infinite rf-spin;\n}\n\n.rf-cursor-pointer {\n cursor: pointer;\n}\n\n.rf-select-none {\n user-select: none;\n}\n\n.rf-resize-none {\n resize: none;\n}\n\n.rf-scroll-pb-4 {\n scroll-padding-bottom: 1rem;\n}\n\n.rf-grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n}\n\n.rf-grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n\n.rf-grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n}\n\n.rf-grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n}\n\n.rf-grid-cols-6 {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n}\n\n.rf-grid-cols-7 {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n}\n\n.rf-grid-cols-8 {\n grid-template-columns: repeat(8, minmax(0, 1fr));\n}\n\n.rf-grid-cols-headerContainer {\n grid-template-columns: 7rem 1fr 1fr 1fr;\n}\n\n.rf-grid-cols-printingPreview {\n grid-template-columns: minmax(0, 1fr) 3rem;\n}\n\n.rf-grid-cols-routes {\n grid-template-columns: repeat(3, max-content);\n}\n\n.rf-grid-rows-1 {\n grid-template-rows: repeat(1, minmax(0, 1fr));\n}\n\n.rf-grid-rows-2 {\n grid-template-rows: repeat(2, minmax(0, 1fr));\n}\n\n.rf-grid-rows-container {\n grid-template-rows: repeat(12, minmax(0, 1fr));\n}\n\n.rf-grid-rows-headerContainer {\n grid-template-rows: repeat(3, minmax(0, 1fr));\n}\n\n.rf-flex-row {\n flex-direction: row;\n}\n\n.rf-flex-col {\n flex-direction: column;\n}\n\n.rf-flex-col-reverse {\n flex-direction: column-reverse;\n}\n\n.rf-flex-wrap {\n flex-wrap: wrap;\n}\n\n.rf-flex-nowrap {\n flex-wrap: nowrap;\n}\n\n.rf-content-around {\n align-content: space-around;\n}\n\n.rf-items-start {\n align-items: flex-start;\n}\n\n.rf-items-end {\n align-items: flex-end;\n}\n\n.rf-items-center {\n align-items: center;\n}\n\n.rf-justify-start {\n justify-content: flex-start;\n}\n\n.rf-justify-end {\n justify-content: flex-end;\n}\n\n.rf-justify-center {\n justify-content: center;\n}\n\n.rf-justify-between {\n justify-content: space-between;\n}\n\n.rf-justify-around {\n justify-content: space-around;\n}\n\n.rf-justify-evenly {\n justify-content: space-evenly;\n}\n\n.rf-gap-1 {\n gap: .25rem;\n}\n\n.rf-gap-12 {\n gap: 3rem;\n}\n\n.rf-gap-2 {\n gap: .5rem;\n}\n\n.rf-gap-3 {\n gap: .75rem;\n}\n\n.rf-gap-4 {\n gap: 1rem;\n}\n\n.rf-gap-5 {\n gap: 1.25rem;\n}\n\n.rf-gap-8 {\n gap: 2rem;\n}\n\n.rf-gap-9 {\n gap: 2.25rem;\n}\n\n.rf-divide-x > :not([hidden]) ~ :not([hidden]) {\n --tw-divide-x-reverse: 0;\n border-right-width: calc(1px * var(--tw-divide-x-reverse));\n border-left-width: calc(1px * calc(1 - var(--tw-divide-x-reverse)));\n}\n\n.rf-self-auto {\n align-self: auto;\n}\n\n.rf-self-start {\n align-self: flex-start;\n}\n\n.rf-self-end {\n align-self: flex-end;\n}\n\n.rf-self-center {\n align-self: center;\n}\n\n.rf-justify-self-start {\n justify-self: start;\n}\n\n.rf-justify-self-end {\n justify-self: end;\n}\n\n.rf-justify-self-center {\n justify-self: center;\n}\n\n.rf-overflow-hidden {\n overflow: hidden;\n}\n\n.rf-overflow-clip {\n overflow: clip;\n}\n\n.rf-overflow-x-auto {\n overflow-x: auto;\n}\n\n.rf-overflow-y-auto {\n overflow-y: auto;\n}\n\n.rf-overflow-x-hidden {\n overflow-x: hidden;\n}\n\n.rf-overflow-y-hidden {\n overflow-y: hidden;\n}\n\n.rf-overflow-y-visible {\n overflow-y: visible;\n}\n\n.rf-overflow-x-scroll {\n overflow-x: scroll;\n}\n\n.rf-overflow-y-scroll {\n overflow-y: scroll;\n}\n\n.rf-truncate {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n}\n\n.rf-whitespace-nowrap {\n white-space: nowrap;\n}\n\n.rf-rounded {\n border-radius: .3125rem;\n}\n\n.rf-rounded-6 {\n border-radius: 1.5rem;\n}\n\n.rf-rounded-8 {\n border-radius: 2rem;\n}\n\n.rf-rounded-\\[20px\\] {\n border-radius: 20px;\n}\n\n.rf-rounded-full {\n border-radius: 9999px;\n}\n\n.rf-rounded-half {\n border-radius: 50%;\n}\n\n.rf-rounded-lg {\n border-radius: .5rem;\n}\n\n.rf-rounded-max {\n border-radius: 100%;\n}\n\n.rf-rounded-b {\n border-bottom-right-radius: .3125rem;\n border-bottom-left-radius: .3125rem;\n}\n\n.rf-rounded-l-lg {\n border-top-left-radius: .5rem;\n border-bottom-left-radius: .5rem;\n}\n\n.rf-border {\n border-width: 1px;\n}\n\n.rf-border-0 {\n border-width: 0;\n}\n\n.rf-border-2 {\n border-width: 2px;\n}\n\n.rf-border-y {\n border-top-width: 1px;\n border-bottom-width: 1px;\n}\n\n.rf-border-b {\n border-bottom-width: 1px;\n}\n\n.rf-border-b-2 {\n border-bottom-width: 2px;\n}\n\n.rf-border-l {\n border-left-width: 1px;\n}\n\n.rf-border-r {\n border-right-width: 1px;\n}\n\n.rf-border-t {\n border-top-width: 1px;\n}\n\n.rf-border-t-0 {\n border-top-width: 0;\n}\n\n.rf-border-none {\n border-style: none;\n}\n\n.rf-border-\\[\\#00000029\\] {\n border-color: #00000029;\n}\n\n.rf-border-\\[\\#9FA2AA\\] {\n --tw-border-opacity: 1;\n border-color: rgb(159 162 170 / var(--tw-border-opacity));\n}\n\n.rf-border-\\[\\#C7C6C6\\] {\n --tw-border-opacity: 1;\n border-color: rgb(199 198 198 / var(--tw-border-opacity));\n}\n\n.rf-border-black {\n border-color: var(--rf-color-black);\n}\n\n.rf-border-cardButtonBorderDefault {\n border-color: var(--rf-color-cardButtonBorderDefault);\n}\n\n.rf-border-cardButtonBorderHover {\n border-color: var(--rf-color-cardButtonBorderHover);\n}\n\n.rf-border-cardFrameBorder {\n border-color: var(--rf-color-cardFrameBorder);\n}\n\n.rf-border-formInputButtonBorderDefault {\n border-color: var(--rf-color-formInputButtonBorderDefault);\n}\n\n.rf-border-formInputButtonBorderHover {\n border-color: var(--rf-color-formInputButtonBorderHover);\n}\n\n.rf-border-formInputRadioCheckboxCheckedBorder {\n border-color: var(--rf-color-formInputRadioCheckboxCheckedBorder);\n}\n\n.rf-border-formInputRadioCheckboxUncheckedBorder {\n border-color: var(--rf-color-formInputRadioCheckboxUncheckedBorder);\n}\n\n.rf-border-gray {\n --tw-border-opacity: 1;\n border-color: rgb(128 128 128 / var(--tw-border-opacity));\n}\n\n.rf-border-menuBorder {\n --tw-border-opacity: 1;\n border-color: rgb(224 225 231 / var(--tw-border-opacity));\n}\n\n.rf-border-primary {\n border-color: var(--rf-color-primary);\n}\n\n.rf-border-red-700 {\n --tw-border-opacity: 1;\n border-color: rgb(185 28 28 / var(--tw-border-opacity));\n}\n\n.rf-border-secondary {\n border-color: var(--rf-color-secondary);\n}\n\n.rf-border-templateCheckboxBorder {\n --tw-border-opacity: 1;\n border-color: rgb(112 112 112 / var(--tw-border-opacity));\n}\n\n.rf-border-trueblack {\n --tw-border-opacity: 1;\n border-color: rgb(0 0 0 / var(--tw-border-opacity));\n}\n\n.rf-border-truewhite {\n --tw-border-opacity: 1;\n border-color: rgb(255 255 255 / var(--tw-border-opacity));\n}\n\n.rf-border-x-primary {\n border-left-color: var(--rf-color-primary);\n border-right-color: var(--rf-color-primary);\n}\n\n.rf-border-y-menuBorder {\n --tw-border-opacity: 1;\n border-top-color: rgb(224 225 231 / var(--tw-border-opacity));\n border-bottom-color: rgb(224 225 231 / var(--tw-border-opacity));\n}\n\n.rf-border-b-\\[\\#C4C5C8\\] {\n --tw-border-opacity: 1;\n border-bottom-color: rgb(196 197 200 / var(--tw-border-opacity));\n}\n\n.rf-border-b-black {\n border-bottom-color: var(--rf-color-black);\n}\n\n.rf-border-b-menuBorder {\n --tw-border-opacity: 1;\n border-bottom-color: rgb(224 225 231 / var(--tw-border-opacity));\n}\n\n.rf-border-b-silver {\n --tw-border-opacity: 1;\n border-bottom-color: rgb(192 192 192 / var(--tw-border-opacity));\n}\n\n.rf-border-b-transparent {\n border-bottom-color: #0000;\n}\n\n.rf-border-l-menuBorder {\n --tw-border-opacity: 1;\n border-left-color: rgb(224 225 231 / var(--tw-border-opacity));\n}\n\n.rf-border-r-silver {\n --tw-border-opacity: 1;\n border-right-color: rgb(192 192 192 / var(--tw-border-opacity));\n}\n\n.rf-border-t-\\[\\#CBC9C9\\] {\n --tw-border-opacity: 1;\n border-top-color: rgb(203 201 201 / var(--tw-border-opacity));\n}\n\n.rf-border-t-menuBorder {\n --tw-border-opacity: 1;\n border-top-color: rgb(224 225 231 / var(--tw-border-opacity));\n}\n\n.rf-bg-\\[\\#00000050\\] {\n background-color: #00000050;\n}\n\n.rf-bg-\\[\\#F0F0F0\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(240 240 240 / var(--tw-bg-opacity));\n}\n\n.rf-bg-\\[\\#F8F8F8\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(248 248 248 / var(--tw-bg-opacity));\n}\n\n.rf-bg-black {\n background-color: var(--rf-color-black);\n}\n\n.rf-bg-blue-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(59 130 246 / var(--tw-bg-opacity));\n}\n\n.rf-bg-cardButtonBackgroundDefault {\n background-color: var(--rf-color-cardButtonBackgroundDefault);\n}\n\n.rf-bg-cardButtonBackgroundHover {\n background-color: var(--rf-color-cardButtonBackgroundHover);\n}\n\n.rf-bg-cardFrameBackground {\n background-color: var(--rf-color-cardFrameBackground);\n}\n\n.rf-bg-formInputButtonBackgroundDefault {\n background-color: var(--rf-color-formInputButtonBackgroundDefault);\n}\n\n.rf-bg-formInputButtonBackgroundHover {\n background-color: var(--rf-color-formInputButtonBackgroundHover);\n}\n\n.rf-bg-formInputRadioCheckboxUncheckedBackground {\n background-color: var(--rf-color-formInputRadioCheckboxUncheckedBackground);\n}\n\n.rf-bg-gray {\n --tw-bg-opacity: 1;\n background-color: rgb(128 128 128 / var(--tw-bg-opacity));\n}\n\n.rf-bg-primary {\n background-color: var(--rf-color-primary);\n}\n\n.rf-bg-red-600 {\n --tw-bg-opacity: 1;\n background-color: rgb(220 38 38 / var(--tw-bg-opacity));\n}\n\n.rf-bg-secondary {\n background-color: var(--rf-color-secondary);\n}\n\n.rf-bg-silver {\n --tw-bg-opacity: 1;\n background-color: rgb(192 192 192 / var(--tw-bg-opacity));\n}\n\n.rf-bg-templateBackground {\n --tw-bg-opacity: 1;\n background-color: rgb(241 241 241 / var(--tw-bg-opacity));\n}\n\n.rf-bg-templateEmptyCard {\n --tw-bg-opacity: 1;\n background-color: rgb(232 231 231 / var(--tw-bg-opacity));\n}\n\n.rf-bg-textModePanelBackground {\n background-color: var(--rf-color-textModePanelBackground);\n}\n\n.rf-bg-transparent {\n background-color: #0000;\n}\n\n.rf-bg-truewhite {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n}\n\n.rf-bg-vocalModeSubtitlesBackground {\n background-color: var(--rf-color-vocalModeSubtitlesBackground);\n}\n\n.rf-bg-white {\n --tw-bg-opacity: 1;\n background-color: rgb(247 243 246 / var(--tw-bg-opacity));\n}\n\n.rf-bg-opacity-30 {\n --tw-bg-opacity: .3;\n}\n\n.rf-bg-opacity-50 {\n --tw-bg-opacity: .5;\n}\n\n.rf-bg-opacity-80 {\n --tw-bg-opacity: .8;\n}\n\n.rf-object-cover {\n object-fit: cover;\n}\n\n.rf-p-0 {\n padding: 0;\n}\n\n.rf-p-1 {\n padding: .25rem;\n}\n\n.rf-p-2 {\n padding: .5rem;\n}\n\n.rf-p-4 {\n padding: 1rem;\n}\n\n.rf-p-6 {\n padding: 1.5rem;\n}\n\n.rf-p-\\[25px\\] {\n padding: 25px;\n}\n\n.rf-p-\\[7px_12px\\] {\n padding: 7px 12px;\n}\n\n.rf-px-1 {\n padding-left: .25rem;\n padding-right: .25rem;\n}\n\n.rf-px-2 {\n padding-left: .5rem;\n padding-right: .5rem;\n}\n\n.rf-px-3 {\n padding-left: .75rem;\n padding-right: .75rem;\n}\n\n.rf-px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n\n.rf-px-5, .rf-px-6 {\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n}\n\n.rf-px-8 {\n padding-left: 2rem;\n padding-right: 2rem;\n}\n\n.rf-py-0 {\n padding-top: 0;\n padding-bottom: 0;\n}\n\n.rf-py-1 {\n padding-top: .25rem;\n padding-bottom: .25rem;\n}\n\n.rf-py-12 {\n padding-top: 3rem;\n padding-bottom: 3rem;\n}\n\n.rf-py-2 {\n padding-top: .5rem;\n padding-bottom: .5rem;\n}\n\n.rf-py-3 {\n padding-top: .75rem;\n padding-bottom: .75rem;\n}\n\n.rf-py-4 {\n padding-top: 1rem;\n padding-bottom: 1rem;\n}\n\n.rf-py-6 {\n padding-top: 1.5rem;\n padding-bottom: 1.5rem;\n}\n\n.rf-pb-10 {\n padding-bottom: 2.5rem;\n}\n\n.rf-pb-12 {\n padding-bottom: 3rem;\n}\n\n.rf-pb-14 {\n padding-bottom: 3.5rem;\n}\n\n.rf-pb-2 {\n padding-bottom: .5rem;\n}\n\n.rf-pb-3 {\n padding-bottom: .75rem;\n}\n\n.rf-pb-4 {\n padding-bottom: 1rem;\n}\n\n.rf-pb-5, .rf-pb-6 {\n padding-bottom: 1.5rem;\n}\n\n.rf-pb-8 {\n padding-bottom: 2rem;\n}\n\n.rf-pb-\\[15vh\\] {\n padding-bottom: 15vh;\n}\n\n.rf-pl-0 {\n padding-left: 0;\n}\n\n.rf-pl-1 {\n padding-left: .25rem;\n}\n\n.rf-pl-2 {\n padding-left: .5rem;\n}\n\n.rf-pl-4 {\n padding-left: 1rem;\n}\n\n.rf-pl-6 {\n padding-left: 1.5rem;\n}\n\n.rf-pr-1 {\n padding-right: .25rem;\n}\n\n.rf-pr-2 {\n padding-right: .5rem;\n}\n\n.rf-pr-4 {\n padding-right: 1rem;\n}\n\n.rf-pt-1 {\n padding-top: .25rem;\n}\n\n.rf-pt-11\\/20 {\n padding-top: 55%;\n}\n\n.rf-pt-12 {\n padding-top: 3rem;\n}\n\n.rf-pt-14 {\n padding-top: 3.5rem;\n}\n\n.rf-pt-2 {\n padding-top: .5rem;\n}\n\n.rf-pt-24 {\n padding-top: 6rem;\n}\n\n.rf-pt-3 {\n padding-top: .75rem;\n}\n\n.rf-pt-4 {\n padding-top: 1rem;\n}\n\n.rf-pt-8 {\n padding-top: 2rem;\n}\n\n.rf-pt-\\[25vh\\] {\n padding-top: 25vh;\n}\n\n.rf-pt-\\[26vh\\] {\n padding-top: 26vh;\n}\n\n.rf-text-left {\n text-align: left;\n}\n\n.rf-text-center {\n text-align: center;\n}\n\n.rf-text-right {\n text-align: right;\n}\n\n.rf-font-default {\n font-family: Calibri, sans-serif;\n}\n\n.rf-text-3xl {\n font-size: 1.875rem;\n line-height: 2.25rem;\n}\n\n.rf-text-5xl {\n font-size: 3rem;\n line-height: 1;\n}\n\n.rf-text-7xl {\n font-size: 4.5rem;\n line-height: 1;\n}\n\n.rf-text-8xl {\n font-size: 6rem;\n line-height: 1;\n}\n\n.rf-text-\\[0\\.5rem\\] {\n font-size: .5rem;\n}\n\n.rf-text-base {\n font-size: 1rem;\n line-height: 1.5rem;\n}\n\n.rf-text-basecustom {\n font-size: 1rem;\n line-height: 1.3rem;\n}\n\n.rf-text-lgcustom {\n font-size: 1.125rem;\n line-height: 1.5rem;\n}\n\n.rf-text-sm {\n font-size: .875rem;\n line-height: 1.25rem;\n}\n\n.rf-text-xl {\n font-size: 1.25rem;\n line-height: 1.75rem;\n}\n\n.rf-text-xs {\n font-size: .75rem;\n line-height: 1rem;\n}\n\n.rf-text-xsl {\n font-size: .7rem;\n line-height: 1rem;\n}\n\n.rf-text-xsm {\n font-size: .6rem;\n}\n\n.rf-font-bold {\n font-weight: 600;\n}\n\n.rf-font-medium {\n font-weight: 300;\n}\n\n.rf-font-semibold {\n font-weight: 400;\n}\n\n.rf-uppercase {\n text-transform: uppercase;\n}\n\n.rf-capitalize {\n text-transform: capitalize;\n}\n\n.rf-normal-case {\n text-transform: none;\n}\n\n.rf-italic {\n font-style: italic;\n}\n\n.rf-text-\\[\\#575F6B\\] {\n --tw-text-opacity: 1;\n color: rgb(87 95 107 / var(--tw-text-opacity));\n}\n\n.rf-text-\\[\\#9A9A9A\\] {\n --tw-text-opacity: 1;\n color: rgb(154 154 154 / var(--tw-text-opacity));\n}\n\n.rf-text-\\[\\#A4A7AF\\] {\n --tw-text-opacity: 1;\n color: rgb(164 167 175 / var(--tw-text-opacity));\n}\n\n.rf-text-black {\n color: var(--rf-color-black);\n}\n\n.rf-text-cardButtonTextDefault {\n color: var(--rf-color-cardButtonTextDefault);\n}\n\n.rf-text-cardFrameText {\n color: var(--rf-color-cardFrameText);\n}\n\n.rf-text-formInputButtonTextDefault {\n color: var(--rf-color-formInputButtonTextDefault);\n}\n\n.rf-text-formInputButtonTextHover {\n color: var(--rf-color-formInputButtonTextHover);\n}\n\n.rf-text-formInputRadioCheckboxUncheckedBackground {\n color: var(--rf-color-formInputRadioCheckboxUncheckedBackground);\n}\n\n.rf-text-formInputTextDefault {\n color: var(--rf-color-formInputTextDefault);\n}\n\n.rf-text-gray {\n --tw-text-opacity: 1;\n color: rgb(128 128 128 / var(--tw-text-opacity));\n}\n\n.rf-text-lightgray {\n --tw-text-opacity: 1;\n color: rgb(129 129 129 / var(--tw-text-opacity));\n}\n\n.rf-text-primary {\n color: var(--rf-color-primary);\n}\n\n.rf-text-red-700 {\n --tw-text-opacity: 1;\n color: rgb(185 28 28 / var(--tw-text-opacity));\n}\n\n.rf-text-secondary {\n color: var(--rf-color-secondary);\n}\n\n.rf-text-textModePanelConversationBot {\n color: var(--rf-color-textModePanelConversationBot);\n}\n\n.rf-text-textModePanelConversationUser {\n color: var(--rf-color-textModePanelConversationUser);\n}\n\n.rf-text-trueblack {\n --tw-text-opacity: 1;\n color: rgb(0 0 0 / var(--tw-text-opacity));\n}\n\n.rf-text-truewhite {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n\n.rf-text-vocalModeSubtitlesText {\n color: var(--rf-color-vocalModeSubtitlesText);\n}\n\n.rf-text-white {\n --tw-text-opacity: 1;\n color: rgb(247 243 246 / var(--tw-text-opacity));\n}\n\n.rf-underline {\n text-decoration-line: underline;\n}\n\n.rf-shadow-\\[0_0_15px_0_silver\\] {\n --tw-shadow: 0 0 15px 0 silver;\n --tw-shadow-colored: 0 0 15px 0 var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.rf-shadow-\\[0_0_20px_1px_\\#A4A7AF80\\] {\n --tw-shadow: 0 0 20px 1px #a4a7af80;\n --tw-shadow-colored: 0 0 20px 1px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.rf-shadow-\\[0_0_3px_6px_\\#00000029\\] {\n --tw-shadow: 0 0 3px 6px #00000029;\n --tw-shadow-colored: 0 0 3px 6px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.rf-shadow-\\[0_3px_6px_\\#00000029\\] {\n --tw-shadow: 0 3px 6px #00000029;\n --tw-shadow-colored: 0 3px 6px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.rf-shadow-\\[0_3px_6px_\\#606267\\] {\n --tw-shadow: 0 3px 6px #606267;\n --tw-shadow-colored: 0 3px 6px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.rf-shadow-\\[0_3px_6px_rgba\\(0\\,0\\,0\\,0\\.16\\)\\] {\n --tw-shadow: 0 3px 6px #00000029;\n --tw-shadow-colored: 0 3px 6px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.rf-shadow-\\[0_6px_6px_\\#00000029\\] {\n --tw-shadow: 0 6px 6px #00000029;\n --tw-shadow-colored: 0 6px 6px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.rf-shadow-\\[20px_3px_20px_\\#00000029\\] {\n --tw-shadow: 20px 3px 20px #00000029;\n --tw-shadow-colored: 20px 3px 20px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.rf-shadow-\\[3px_3px_16px_\\#00000029\\] {\n --tw-shadow: 3px 3px 16px #00000029;\n --tw-shadow-colored: 3px 3px 16px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.rf-shadow-\\[3px_3px_6px_\\#00000029\\] {\n --tw-shadow: 3px 3px 6px #00000029;\n --tw-shadow-colored: 3px 3px 6px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.rf-shadow-\\[inset_0_0_6px_\\#0000003B\\] {\n --tw-shadow: inset 0 0 6px #0000003b;\n --tw-shadow-colored: inset 0 0 6px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.rf-shadow-\\[inset_0_12px_12px_-12px_\\#00000029\\,inset_0_-12px_12px_-12px_\\#00000029\\] {\n --tw-shadow: inset 0 12px 12px -12px #00000029, inset 0 -12px 12px -12px #00000029;\n --tw-shadow-colored: inset 0 12px 12px -12px var(--tw-shadow-color), inset 0 -12px 12px -12px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.rf-shadow-card {\n --tw-shadow: 0px 0px 13px 3px #101219;\n --tw-shadow-colored: 0px 0px 13px 3px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.rf-outline-none {\n outline-offset: 2px;\n outline: 2px solid #0000;\n}\n\n.rf-blur-background {\n --tw-blur: blur(var(--rf-blur-background));\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n.rf-filter {\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n.rf-transition-all {\n transition-property: all;\n transition-duration: .15s;\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n}\n\n.rf-transition-transform {\n transition-property: transform;\n transition-duration: .15s;\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n}\n\n.rf-text-shadow-black {\n text-shadow: 2px 0 5px #000, -2px 0 5px #000, 0 2px 5px #000, 0 -2px 5px #000;\n}\n\n.rf-capitalize-first:first-letter {\n text-transform: uppercase;\n}\n\nol {\n padding-left: 2rem;\n list-style-type: decimal;\n}\n\nul {\n padding-left: 2rem;\n list-style-type: disc;\n}\n\n#retorik-container.rf-portrait:not(.rf-large) .ac-image {\n max-width: 100px;\n}\n\n.rf-glass-background, #retorik-container.portrait .portrait\\:rf-glass-background {\n background-color: var(--rf-color-black);\n --tw-bg-opacity: .62;\n --tw-backdrop-blur: blur(8px);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n\n.rf-loader:before {\n content: \"\";\n border-radius: 50%;\n width: 1.5rem;\n height: 1.5rem;\n animation: 1.8s ease-in-out -.32s infinite both rf-loader;\n display: block;\n position: absolute;\n right: 1.5rem;\n}\n\n.rf-loader:after {\n content: \"\";\n border-radius: 50%;\n width: 1.5rem;\n height: 1.5rem;\n animation: 1.8s ease-in-out infinite both rf-loader;\n display: block;\n position: absolute;\n left: 1.5rem;\n}\n\n.rf-loader-microphone:before, .rf-loader-microphone:after {\n content: \"\";\n --tw-border-opacity: 1;\n border: 6px solid #0000;\n border-top-color: rgb(128 128 128 / var(--tw-border-opacity));\n border-radius: 100%;\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n}\n\n.rf-loader-microphone:before {\n z-index: 1;\n animation: 1s linear infinite rf-spin;\n}\n\n.rf-loader-microphone:after {\n --tw-border-opacity: 1;\n border-color: rgb(204 204 204 / var(--tw-border-opacity));\n}\n\n.rf-touch-action-none {\n touch-action: none;\n}\n\n.rf-unselectable {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n -webkit-touch-callout: none;\n}\n\n.rf-title-extralarge-bold-size-auto {\n font-size: 2.25rem;\n font-weight: 600;\n line-height: 2.5rem;\n}\n\n#retorik-container.rf-large .rf-title-extralarge-bold-size-auto {\n font-size: 3rem;\n line-height: 1;\n}\n\n#retorik-container.rf-large.rf-portrait .rf-title-extralarge-bold-size-auto {\n font-size: 3.75rem;\n line-height: 1;\n}\n\n.rf-title-extralarge-size-auto {\n font-size: 2.25rem;\n font-weight: 400;\n line-height: 2.5rem;\n}\n\n#retorik-container.rf-large .rf-title-extralarge-size-auto {\n font-size: 3rem;\n line-height: 1;\n}\n\n#retorik-container.rf-large.rf-portrait .rf-title-extralarge-size-auto {\n font-size: 3.75rem;\n line-height: 1;\n}\n\n.rf-title-large-size-auto {\n font-size: 1.5rem;\n font-weight: 400;\n line-height: 2rem;\n}\n\n#retorik-container.rf-large .rf-title-large-size-auto {\n font-size: 2.25rem;\n line-height: 2.5rem;\n}\n\n#retorik-container.rf-large.rf-portrait .rf-title-large-size-auto {\n font-size: 3rem;\n line-height: 1;\n}\n\n.rf-title-large-bold-size-auto {\n font-size: 1.875rem;\n font-weight: 600;\n line-height: 2.25rem;\n}\n\n#retorik-container.rf-large .rf-title-large-bold-size-auto {\n font-size: 2.25rem;\n line-height: 2.5rem;\n}\n\n#retorik-container.rf-large.rf-portrait .rf-title-large-bold-size-auto {\n font-size: 3rem;\n line-height: 1;\n}\n\n.rf-title-size-auto {\n font-size: 1.5rem;\n font-weight: 400;\n line-height: 2rem;\n}\n\n#retorik-container.rf-large .rf-title-size-auto {\n font-size: 1.875rem;\n line-height: 2.25rem;\n}\n\n#retorik-container.rf-large.rf-portrait .rf-title-size-auto {\n font-size: 2.25rem;\n line-height: 2.5rem;\n}\n\n.rf-title-bold-size-auto {\n font-size: 1.5rem;\n font-weight: 600;\n line-height: 2rem;\n}\n\n#retorik-container.rf-large .rf-title-bold-size-auto {\n font-size: 1.875rem;\n line-height: 2.25rem;\n}\n\n#retorik-container.rf-large.rf-portrait .rf-title-bold-size-auto {\n font-size: 2.25rem;\n line-height: 2.5rem;\n}\n\n.rf-subtitle-size-auto {\n font-size: 1.125rem;\n line-height: 1.5rem;\n}\n\n#retorik-container.rf-large .rf-subtitle-size-auto {\n font-size: 1.25rem;\n line-height: 1.75rem;\n}\n\n#retorik-container.rf-large.rf-portrait .rf-subtitle-size-auto {\n font-size: 1.5rem;\n line-height: 2rem;\n}\n\n.rf-text-extralarge-size-auto {\n font-size: 2.25rem;\n line-height: 2.5rem;\n}\n\n#retorik-container.rf-large .rf-text-extralarge-size-auto {\n font-size: 3rem;\n line-height: 1;\n}\n\n#retorik-container.rf-large.rf-portrait .rf-text-extralarge-size-auto {\n font-size: 3.75rem;\n line-height: 1;\n}\n\n.rf-text-verylarge-size-auto {\n font-size: 1.5rem;\n line-height: 2rem;\n}\n\n#retorik-container.rf-large .rf-text-verylarge-size-auto {\n font-size: 3.75rem;\n line-height: 1;\n}\n\n#retorik-container.rf-large.rf-portrait .rf-text-verylarge-size-auto {\n font-size: 4.5rem;\n line-height: 1;\n}\n\n.rf-text-large-size-auto {\n font-size: 1.5rem;\n line-height: 2rem;\n}\n\n#retorik-container.rf-large .rf-text-large-size-auto {\n font-size: 1.875rem;\n line-height: 2.25rem;\n}\n\n#retorik-container.rf-large.rf-portrait .rf-text-large-size-auto {\n font-size: 2.25rem;\n line-height: 2.5rem;\n}\n\n.rf-text-medium-size-auto {\n font-size: 1rem;\n line-height: 1.3rem;\n}\n\n#retorik-container.rf-large .rf-text-medium-size-auto {\n font-size: 1.125rem;\n line-height: 1.5rem;\n}\n\n.rf-text-size-auto {\n font-size: .875rem;\n line-height: 1.25rem;\n}\n\n#retorik-container.rf-large .rf-text-size-auto {\n font-size: 1rem;\n line-height: 1.3rem;\n}\n\n#retorik-container.rf-large.rf-portrait .rf-text-size-auto {\n font-size: 1.125rem;\n line-height: 1.5rem;\n}\n\n.rf-small-size-auto {\n font-size: .6rem;\n}\n\n#retorik-container.rf-large .rf-small-size-auto {\n font-size: .75rem;\n line-height: 1rem;\n}\n\n#retorik-container.rf-large.rf-portrait .rf-small-size-auto {\n font-size: .875rem;\n line-height: 1.25rem;\n}\n\n.rf-line-clamp-unknown {\n hyphens: auto;\n -webkit-box-orient: vertical;\n display: -webkit-box;\n overflow: hidden;\n}\n\n.rf-line-clamp-1 {\n hyphens: auto;\n -webkit-line-clamp: 1;\n -webkit-box-orient: vertical;\n display: -webkit-box;\n overflow: hidden;\n}\n\n.rf-line-clamp-2 {\n hyphens: auto;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n display: -webkit-box;\n overflow: hidden;\n}\n\n.rf-line-clamp-3 {\n hyphens: auto;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n display: -webkit-box;\n overflow: hidden;\n}\n\n.rf-line-clamp-4 {\n hyphens: auto;\n -webkit-line-clamp: 4;\n -webkit-box-orient: vertical;\n display: -webkit-box;\n overflow: hidden;\n}\n\n.rf-line-clamp-5 {\n hyphens: auto;\n -webkit-line-clamp: 5;\n -webkit-box-orient: vertical;\n display: -webkit-box;\n overflow: hidden;\n}\n\n.rf-line-clamp-6 {\n hyphens: auto;\n -webkit-line-clamp: 6;\n -webkit-box-orient: vertical;\n display: -webkit-box;\n overflow: hidden;\n}\n\n.rf-line-clamp-7 {\n hyphens: auto;\n -webkit-line-clamp: 7;\n -webkit-box-orient: vertical;\n display: -webkit-box;\n overflow: hidden;\n}\n\n.rf-line-clamp-8 {\n hyphens: auto;\n -webkit-line-clamp: 8;\n -webkit-box-orient: vertical;\n display: -webkit-box;\n overflow: hidden;\n}\n\n.rf-line-clamp-9 {\n hyphens: auto;\n -webkit-line-clamp: 9;\n -webkit-box-orient: vertical;\n display: -webkit-box;\n overflow: hidden;\n}\n\n.rf-line-clamp-10 {\n hyphens: auto;\n -webkit-line-clamp: 10;\n -webkit-box-orient: vertical;\n display: -webkit-box;\n overflow: hidden;\n}\n\n.rf-height-fill-available {\n height: stretch;\n}\n\n.rf-width-fill-available {\n width: stretch;\n}\n\n.rf-animation-delay-2 {\n animation-delay: .2s;\n}\n\n.rf-animation-delay-4 {\n animation-delay: .4s;\n}\n\n.rf-scrollbar-thin {\n scrollbar-width: thin;\n scrollbar-color: var(--rf-color-secondary) transparent;\n}\n\n.rf-scrollbar-thin::-webkit-scrollbar {\n width: .2rem;\n height: .2rem;\n margin: .25rem 0;\n}\n\n.rf-scrollbar-thin::-webkit-scrollbar-thumb {\n background-color: var(--rf-color-secondary);\n border-radius: .5rem;\n}\n\n.rf-scrollbar-x-custom::-webkit-scrollbar {\n background-color: var(--rf-color-formInputRadioCheckboxUncheckedBackground);\n border-radius: 2rem;\n height: .5rem;\n}\n\n.rf-scrollbar-x-custom::-webkit-scrollbar-thumb {\n background-color: var(--rf-color-primary);\n border-radius: 2rem;\n}\n\n.rf-scrollbar-hidden {\n scrollbar-width: none;\n}\n\n.rf-scrollbar-hidden::-webkit-scrollbar {\n display: none;\n}\n\n.rf-opacity-gradient-b {\n -webkit-mask-image: linear-gradient(#000 50%, #0000 100%);\n}\n\n.rf-opacity-gradient-b-thin {\n -webkit-mask-image: linear-gradient(#797676 84%, #0000 100%);\n}\n\n.rf-opacity-gradient-l {\n -webkit-mask-image: linear-gradient(to left, #000 75%, gray 80%, #0000 85%);\n}\n\n.rf-opacity-gradient-l-thin {\n -webkit-mask-image: linear-gradient(to left, #000 90%, gray 95%, #0000 100%);\n}\n\n.rf-opacity-gradient-h {\n -webkit-mask-image: linear-gradient(to right, #0000 0%, 6%, #000, 94%, #0000 100%);\n}\n\n.rf-card-button {\n border-width: 1px;\n border-color: var(--rf-color-cardButtonBorderDefault);\n background-color: var(--rf-color-cardButtonBackgroundDefault);\n color: var(--rf-color-cardButtonTextDefault);\n border-radius: .3125rem;\n padding: .25rem .5rem;\n font-size: .875rem;\n line-height: 1.25rem;\n}\n\n#retorik-container.rf-large .rf-card-button {\n font-size: 1rem;\n line-height: 1.3rem;\n}\n\n#retorik-container.rf-large.rf-portrait .rf-card-button {\n font-size: 1.125rem;\n line-height: 1.5rem;\n}\n\n#retorik-container.rf-large .rf-card-button {\n padding: .5rem 1rem;\n}\n\n.rf-card-button:hover {\n cursor: pointer;\n border-color: var(--rf-color-cardButtonBorderHover);\n background-color: var(--rf-color-cardButtonBackgroundHover);\n color: var(--rf-color-cardButtonTextHover);\n}\n\n.rf-card-button-secondary {\n border-width: 1px;\n border-color: var(--rf-color-secondary);\n color: var(--rf-color-secondary);\n background-color: #0000;\n border-radius: .3125rem;\n padding: .25rem .5rem;\n font-size: .875rem;\n line-height: 1.25rem;\n}\n\n#retorik-container.rf-large .rf-card-button-secondary {\n font-size: 1rem;\n line-height: 1.3rem;\n}\n\n#retorik-container.rf-large.rf-portrait .rf-card-button-secondary {\n font-size: 1.125rem;\n line-height: 1.5rem;\n}\n\n#retorik-container.rf-large .rf-card-button-secondary {\n padding: .5rem 1rem;\n}\n\n.rf-card-button-secondary:hover {\n cursor: pointer;\n border-color: var(--rf-color-secondary);\n background-color: var(--rf-color-secondary);\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n\n.rf-card-button-discover {\n border-width: 1px;\n border-color: var(--rf-color-cardButtonDiscoverBorderDefault);\n background-color: var(--rf-color-cardButtonDiscoverBackgroundDefault);\n color: var(--rf-color-cardButtonDiscoverTextDefault);\n border-radius: .3125rem;\n padding: .5rem;\n font-size: .875rem;\n line-height: 1.25rem;\n}\n\n#retorik-container.rf-large .rf-card-button-discover {\n padding-top: .75rem;\n padding-bottom: .75rem;\n}\n\n.rf-card-button-discover:hover {\n cursor: pointer;\n border-color: var(--rf-color-cardButtonDiscoverBorderHover);\n background-color: var(--rf-color-cardButtonDiscoverBackgroundHover);\n color: var(--rf-color-cardButtonDiscoverTextHover);\n}\n\n.rf-card-button-history {\n cursor: default;\n border-width: 1px;\n border-color: var(--rf-color-cardButtonBorderDefault);\n background-color: var(--rf-color-cardButtonBackgroundDefault);\n color: var(--rf-color-cardButtonTextDefault);\n border-radius: .3125rem;\n padding: .25rem .5rem;\n font-size: .875rem;\n line-height: 1.25rem;\n}\n\n#retorik-container.rf-large .rf-card-button-history {\n font-size: 1rem;\n line-height: 1.3rem;\n}\n\n#retorik-container.rf-large.rf-portrait .rf-card-button-history {\n font-size: 1.125rem;\n line-height: 1.5rem;\n}\n\n#retorik-container.rf-large .rf-card-button-history {\n padding: .5rem 1rem;\n}\n\n.lf-player-container {\n align-items: flex-end;\n width: 100%;\n height: 100%;\n display: flex;\n overflow: hidden;\n}\n\n.rf-input-label {\n text-overflow: ellipsis;\n color: var(--rf-color-formInputTextDefault);\n margin-top: .1rem;\n margin-left: .75rem;\n overflow-x: hidden;\n}\n\n#retorik-container.rf-large .rf-input-label {\n margin-top: .25rem;\n}\n\n#retorik-container.rf-large.rf-portrait .rf-input-label {\n margin-top: .2rem;\n}\n\n.rf-radio-custom {\n -webkit-appearance: none;\n appearance: none;\n border-width: 2px;\n border-color: var(--rf-color-formInputRadioCheckboxUncheckedBorder);\n background-color: var(--rf-color-formInputRadioCheckboxUncheckedBackground);\n border-radius: 50%;\n place-content: center;\n width: 1.5rem;\n min-width: 1.5rem;\n height: 1.5rem;\n margin: 0;\n display: grid;\n}\n\n.rf-radio-custom:checked {\n border-color: var(--rf-color-formInputRadioCheckboxCheckedBorder);\n background-color: var(--rf-color-formInputRadioCheckboxCheckedBackground);\n}\n\n#retorik-container.rf-large .rf-radio-custom {\n width: 1.75rem;\n min-width: 1.75rem;\n height: 1.75rem;\n}\n\n#retorik-container.rf-large.rf-portrait .rf-radio-custom {\n width: 2rem;\n min-width: 2rem;\n height: 2rem;\n}\n\n.rf-radio-custom:before {\n content: \"\";\n --tw-scale-x: 0;\n --tw-scale-y: 0;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n background-color: var(--rf-color-formInputRadioCheckboxCheckedItem);\n border-radius: 50%;\n width: .5rem;\n height: .5rem;\n transition-property: all;\n transition-duration: .15s;\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n}\n\n#retorik-container.rf-large .rf-radio-custom:before {\n width: .75rem;\n height: .75rem;\n}\n\n#retorik-container.rf-large.rf-portrait .rf-radio-custom:before {\n width: 1rem;\n height: 1rem;\n}\n\n.rf-radio-custom:checked:before {\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.rf-input-hidden {\n -webkit-appearance: none;\n appearance: none;\n margin: 0;\n}\n\n.rf-checkbox-custom {\n -webkit-appearance: none;\n appearance: none;\n border-width: 2px;\n border-color: var(--rf-color-formInputRadioCheckboxUncheckedBorder);\n background-color: var(--rf-color-formInputRadioCheckboxUncheckedBackground);\n border-radius: .3125rem;\n place-content: center;\n width: 1.5rem;\n min-width: 1.5rem;\n height: 1.5rem;\n margin: 0;\n display: grid;\n}\n\n#retorik-container.rf-large .rf-checkbox-custom {\n width: 1.75rem;\n min-width: 1.75rem;\n height: 1.75rem;\n}\n\n#retorik-container.rf-large.rf-portrait .rf-checkbox-custom {\n width: 2rem;\n min-width: 2rem;\n height: 2rem;\n}\n\n.rf-checkbox-custom:checked {\n border-color: var(--rf-color-formInputRadioCheckboxCheckedBorder);\n background-color: var(--rf-color-formInputRadioCheckboxCheckedBackground);\n}\n\n.rf-toggle-custom {\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--rf-color-black);\n border-radius: 1.5rem;\n width: 3rem;\n min-width: 3rem;\n height: 1.5rem;\n margin: 0;\n position: relative;\n}\n\n.rf-toggle-custom:checked {\n background-color: var(--rf-color-primary);\n}\n\n#retorik-container.rf-large .rf-toggle-custom {\n border-radius: 1.75rem;\n width: 3.5rem;\n min-width: 3.5rem;\n height: 1.75rem;\n}\n\n#retorik-container.rf-large.rf-portrait .rf-toggle-custom {\n border-radius: 2rem;\n width: 4rem;\n min-width: 4rem;\n height: 2rem;\n}\n\n.rf-toggle-custom:before {\n content: \"\";\n --tw-translate-x: 0px;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n border-radius: 50%;\n width: 1rem;\n height: 1rem;\n transition-property: all;\n transition-duration: .15s;\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n position: absolute;\n top: .25rem;\n left: .25rem;\n}\n\n#retorik-container.rf-large .rf-toggle-custom:before {\n width: 1.25rem;\n height: 1.25rem;\n}\n\n#retorik-container.rf-large.rf-portrait .rf-toggle-custom:before {\n width: 1.5rem;\n height: 1.5rem;\n}\n\n.rf-toggle-custom:checked:before {\n --tw-translate-x: 1.5rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n#retorik-container.rf-large .rf-toggle-custom:checked:before {\n --tw-translate-x: 1.75rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n#retorik-container.rf-large.rf-portrait .rf-toggle-custom:checked:before {\n --tw-translate-x: 2rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.rf-select-custom {\n -webkit-appearance: none;\n appearance: none;\n border-width: 2px;\n border-color: var(--rf-color-formInputRadioCheckboxUncheckedBorder);\n background-color: var(--rf-color-formInputRadioCheckboxUncheckedBackground);\n border-radius: .3125rem;\n margin: 0;\n padding: 1rem;\n}\n\n.rf-select-custom:hover {\n cursor: pointer;\n}\n\n.rf-select-custom:focus-visible {\n border-color: var(--rf-color-formInputRadioCheckboxCheckedBorder);\n}\n\n.rf-slider-custom {\n -webkit-appearance: none;\n -moz-appearance: none;\n outline-offset: 2px;\n border-radius: .5rem;\n outline: 2px solid #0000;\n width: 100%;\n height: .25rem;\n display: block;\n position: relative;\n}\n\n.rf-slider-custom::-webkit-slider-runnable-track {\n -webkit-appearance: none;\n}\n\n.rf-slider-custom::-moz-track {\n -moz-appearance: none;\n}\n\n.rf-slider-custom::-ms-track {\n appearance: none;\n}\n\n.rf-slider-custom::-webkit-slider-thumb {\n -webkit-appearance: none;\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n border-style: none;\n border-radius: 50%;\n width: 1.5rem;\n height: 1.5rem;\n margin-top: -.2rem;\n}\n\n.rf-slider-custom::-webkit-slider-thumb:hover {\n cursor: pointer;\n}\n\n.rf-slider-custom::-moz-range-thumb {\n -webkit-appearance: none;\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n border-style: none;\n border-radius: 50%;\n width: 1.5rem;\n height: 1.5rem;\n margin-top: -.2rem;\n}\n\n.rf-slider-custom::-moz-range-thumb:hover {\n cursor: pointer;\n}\n\n.rf-slider-custom::-ms-thumb {\n appearance: none;\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n border-style: none;\n border-radius: 50%;\n width: 1.5rem;\n height: 1.5rem;\n margin-top: -.2rem;\n}\n\n.rf-slider-custom::-ms-thumb:hover {\n cursor: pointer;\n}\n\n.rf-likert-custom {\n cursor: pointer;\n outline-offset: 2px;\n -webkit-text-stroke-width: 1px;\n -webkit-text-stroke-color: white;\n background-color: #0000;\n border-style: none;\n outline: 2px solid #0000;\n}\n\n.svgButtonMenu > svg * {\n fill: var(--fill);\n}\n\n.webchat__css-custom-properties {\n width: 100%;\n height: 100%;\n}\n\n.placeholder\\:rf-text-black::placeholder {\n color: var(--rf-color-black);\n}\n\n.placeholder\\:rf-opacity-100::placeholder {\n opacity: 1;\n}\n\n.hover\\:rf-cursor-pointer:hover {\n cursor: pointer;\n}\n\n.hover\\:rf-border-truewhite:hover {\n --tw-border-opacity: 1;\n border-color: rgb(255 255 255 / var(--tw-border-opacity));\n}\n\n.hover\\:rf-bg-formInputRadioCheckboxCheckedBackground:hover {\n background-color: var(--rf-color-formInputRadioCheckboxCheckedBackground);\n}\n\n.hover\\:rf-bg-truewhite:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n}\n\n.hover\\:rf-text-formInputRadioCheckboxCheckedItem:hover {\n color: var(--rf-color-formInputRadioCheckboxCheckedItem);\n}\n\n.hover\\:rf-text-truewhite:hover {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n\n#retorik-container.rf-portrait .vertical\\:rf-col-span-full {\n grid-column: 1 / -1;\n}\n\n#retorik-container.rf-portrait .vertical\\:rf-col-start-1 {\n grid-column-start: 1;\n}\n\n#retorik-container.rf-portrait .vertical\\:rf-row-span-1 {\n grid-row: span 1 / span 1;\n}\n\n#retorik-container.rf-portrait .vertical\\:rf-row-span-full {\n grid-row: 1 / -1;\n}\n\n#retorik-container.rf-portrait .vertical\\:rf-row-start-1 {\n grid-row-start: 1;\n}\n\n#retorik-container.rf-portrait .vertical\\:rf-row-start-11 {\n grid-row-start: 11;\n}\n\n#retorik-container.rf-portrait .vertical\\:rf-row-end-13 {\n grid-row-end: 13;\n}\n\n#retorik-container.rf-portrait .vertical\\:rf-w-5\\/6 {\n width: 83.3333%;\n}\n\n#retorik-container.rf-portrait .vertical\\:rf-w-full {\n width: 100%;\n}\n\n#retorik-container.rf-portrait .vertical\\:rf-flex-col {\n flex-direction: column;\n}\n\n#retorik-container.rf-portrait .vertical\\:rf-overflow-x-auto {\n overflow-x: auto;\n}\n\n#retorik-container.rf-portrait .vertical\\:rf-border-r-0 {\n border-right-width: 0;\n}\n\n#retorik-container.rf-portrait .vertical\\:rf-py-1 {\n padding-top: .25rem;\n padding-bottom: .25rem;\n}\n\n#retorik-container.rf-large .large\\:rf-absolute {\n position: absolute;\n}\n\n#retorik-container.rf-large .large\\:rf-left-4 {\n left: 1rem;\n}\n\n#retorik-container.rf-large .large\\:rf-top-8 {\n top: 2rem;\n}\n\n#retorik-container.rf-large .large\\:rf-col-start-5 {\n grid-column-start: 5;\n}\n\n#retorik-container.rf-large .large\\:rf-col-end-6 {\n grid-column-end: 6;\n}\n\n#retorik-container.rf-large .large\\:rf-col-end-9 {\n grid-column-end: 9;\n}\n\n#retorik-container.rf-large .large\\:rf-row-span-full {\n grid-row: 1 / -1;\n}\n\n#retorik-container.rf-large .large\\:rf-row-start-10 {\n grid-row-start: 10;\n}\n\n#retorik-container.rf-large .large\\:rf-row-start-5 {\n grid-row-start: 5;\n}\n\n#retorik-container.rf-large .large\\:rf-m-8 {\n margin: 2rem;\n}\n\n#retorik-container.rf-large .large\\:rf-my-0 {\n margin-top: 0;\n margin-bottom: 0;\n}\n\n#retorik-container.rf-large .large\\:rf-my-3 {\n margin-top: .75rem;\n margin-bottom: .75rem;\n}\n\n#retorik-container.rf-large .large\\:rf-mb-0 {\n margin-bottom: 0;\n}\n\n#retorik-container.rf-large .large\\:rf-mb-4 {\n margin-bottom: 1rem;\n}\n\n#retorik-container.rf-large .large\\:rf-mb-6 {\n margin-bottom: 1.5rem;\n}\n\n#retorik-container.rf-large .large\\:rf-ml-0 {\n margin-left: 0;\n}\n\n#retorik-container.rf-large .large\\:rf-ml-12 {\n margin-left: 3rem;\n}\n\n#retorik-container.rf-large .large\\:rf-ml-4 {\n margin-left: 1rem;\n}\n\n#retorik-container.rf-large .large\\:rf-ml-8 {\n margin-left: 2rem;\n}\n\n#retorik-container.rf-large .large\\:rf-mr-3 {\n margin-right: .75rem;\n}\n\n#retorik-container.rf-large .large\\:rf-mr-30 {\n margin-right: 7.5rem;\n}\n\n#retorik-container.rf-large .large\\:rf-mt-0 {\n margin-top: 0;\n}\n\n#retorik-container.rf-large .large\\:rf-mt-20 {\n margin-top: 5rem;\n}\n\n#retorik-container.rf-large .large\\:rf-mt-3 {\n margin-top: .75rem;\n}\n\n#retorik-container.rf-large .large\\:rf-mt-\\[20vh\\] {\n margin-top: 20vh;\n}\n\n#retorik-container.rf-large .large\\:rf-block {\n display: block;\n}\n\n#retorik-container.rf-large .large\\:rf-flex {\n display: flex;\n}\n\n#retorik-container.rf-large .large\\:rf-hidden {\n display: none;\n}\n\n#retorik-container.rf-large .large\\:rf-aspect-video {\n aspect-ratio: 16 / 9;\n}\n\n#retorik-container.rf-large .large\\:rf-h-16 {\n height: 4rem;\n}\n\n#retorik-container.rf-large .large\\:rf-h-3\\/5 {\n height: 60%;\n}\n\n#retorik-container.rf-large .large\\:rf-h-4 {\n height: 1rem;\n}\n\n#retorik-container.rf-large .large\\:rf-h-5 {\n height: 1.25rem;\n}\n\n#retorik-container.rf-large .large\\:rf-h-6 {\n height: 1.5rem;\n}\n\n#retorik-container.rf-large .large\\:rf-h-8 {\n height: 2rem;\n}\n\n#retorik-container.rf-large .large\\:rf-h-\\[60vh\\] {\n height: 60vh;\n}\n\n#retorik-container.rf-large .large\\:rf-h-auto {\n height: auto;\n}\n\n#retorik-container.rf-large .large\\:rf-h-full {\n height: 100%;\n}\n\n#retorik-container.rf-large .large\\:rf-max-h-28 {\n max-height: 7rem;\n}\n\n#retorik-container.rf-large .large\\:rf-w-1\\/8 {\n width: 12.5%;\n}\n\n#retorik-container.rf-large .large\\:rf-w-14 {\n width: 3.5rem;\n}\n\n#retorik-container.rf-large .large\\:rf-w-16 {\n width: 4rem;\n}\n\n#retorik-container.rf-large .large\\:rf-w-3\\/5 {\n width: 60%;\n}\n\n#retorik-container.rf-large .large\\:rf-w-4 {\n width: 1rem;\n}\n\n#retorik-container.rf-large .large\\:rf-w-5 {\n width: 1.25rem;\n}\n\n#retorik-container.rf-large .large\\:rf-w-6 {\n width: 1.5rem;\n}\n\n#retorik-container.rf-large .large\\:rf-w-8 {\n width: 2rem;\n}\n\n#retorik-container.rf-large .large\\:rf-w-fit {\n width: fit-content;\n}\n\n#retorik-container.rf-large .large\\:rf-w-full {\n width: 100%;\n}\n\n#retorik-container.rf-large .large\\:rf-min-w-1\\/2 {\n min-width: 50%;\n}\n\n#retorik-container.rf-large .large\\:rf-min-w-1\\/8 {\n min-width: 12.5%;\n}\n\n#retorik-container.rf-large .large\\:rf-min-w-16 {\n min-width: 4rem;\n}\n\n#retorik-container.rf-large .large\\:rf-min-w-3\\/5 {\n min-width: 60%;\n}\n\n#retorik-container.rf-large .large\\:rf-max-w-1\\/8 {\n max-width: 12.5%;\n}\n\n#retorik-container.rf-large .large\\:rf-max-w-\\[12rem\\] {\n max-width: 12rem;\n}\n\n#retorik-container.rf-large .large\\:rf-max-w-full {\n max-width: 100%;\n}\n\n#retorik-container.rf-large .large\\:rf-grid-cols-5 {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n}\n\n#retorik-container.rf-large .large\\:rf-flex-row {\n flex-direction: row;\n}\n\n#retorik-container.rf-large .large\\:rf-flex-col {\n flex-direction: column;\n}\n\n#retorik-container.rf-large .large\\:rf-items-baseline {\n align-items: baseline;\n}\n\n#retorik-container.rf-large .large\\:rf-justify-start {\n justify-content: flex-start;\n}\n\n#retorik-container.rf-large .large\\:rf-gap-1 {\n gap: .25rem;\n}\n\n#retorik-container.rf-large .large\\:rf-gap-3 {\n gap: .75rem;\n}\n\n#retorik-container.rf-large .large\\:rf-gap-4 {\n gap: 1rem;\n}\n\n#retorik-container.rf-large .large\\:rf-gap-6 {\n gap: 1.5rem;\n}\n\n#retorik-container.rf-large .large\\:rf-overflow-y-scroll {\n overflow-y: scroll;\n}\n\n#retorik-container.rf-large .large\\:rf-rounded {\n border-radius: .3125rem;\n}\n\n#retorik-container.rf-large .large\\:rf-border-t-0 {\n border-top-width: 0;\n}\n\n#retorik-container.rf-large .large\\:rf-bg-truewhite {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n}\n\n#retorik-container.rf-large .large\\:rf-p-4 {\n padding: 1rem;\n}\n\n#retorik-container.rf-large .large\\:rf-p-\\[25px\\] {\n padding: 25px;\n}\n\n#retorik-container.rf-large .large\\:rf-p-min1 {\n padding: .1rem;\n}\n\n#retorik-container.rf-large .large\\:rf-px-0 {\n padding-left: 0;\n padding-right: 0;\n}\n\n#retorik-container.rf-large .large\\:rf-px-16 {\n padding-left: 4rem;\n padding-right: 4rem;\n}\n\n#retorik-container.rf-large .large\\:rf-px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n\n#retorik-container.rf-large .large\\:rf-px-5, #retorik-container.rf-large .large\\:rf-px-6 {\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n}\n\n#retorik-container.rf-large .large\\:rf-px-8 {\n padding-left: 2rem;\n padding-right: 2rem;\n}\n\n#retorik-container.rf-large .large\\:rf-py-0 {\n padding-top: 0;\n padding-bottom: 0;\n}\n\n#retorik-container.rf-large .large\\:rf-py-1 {\n padding-top: .25rem;\n padding-bottom: .25rem;\n}\n\n#retorik-container.rf-large .large\\:rf-py-2 {\n padding-top: .5rem;\n padding-bottom: .5rem;\n}\n\n#retorik-container.rf-large .large\\:rf-py-3 {\n padding-top: .75rem;\n padding-bottom: .75rem;\n}\n\n#retorik-container.rf-large .large\\:rf-py-4 {\n padding-top: 1rem;\n padding-bottom: 1rem;\n}\n\n#retorik-container.rf-large .large\\:rf-pb-16 {\n padding-bottom: 4rem;\n}\n\n#retorik-container.rf-large .large\\:rf-pl-4 {\n padding-left: 1rem;\n}\n\n#retorik-container.rf-large .large\\:rf-pr-4 {\n padding-right: 1rem;\n}\n\n#retorik-container.rf-large .large\\:rf-pt-16 {\n padding-top: 4rem;\n}\n\n#retorik-container.rf-large .large\\:rf-pt-3 {\n padding-top: .75rem;\n}\n\n#retorik-container.rf-large .large\\:rf-text-5xl {\n font-size: 3rem;\n line-height: 1;\n}\n\n#retorik-container.rf-large .large\\:rf-text-6xl {\n font-size: 3.75rem;\n line-height: 1;\n}\n\n#retorik-container.rf-large .large\\:rf-text-base {\n font-size: 1rem;\n line-height: 1.5rem;\n}\n\n#retorik-container.rf-large .large\\:rf-text-basecustom {\n font-size: 1rem;\n line-height: 1.3rem;\n}\n\n#retorik-container.rf-large .large\\:rf-text-sm {\n font-size: .875rem;\n line-height: 1.25rem;\n}\n\n#retorik-container.rf-large .large\\:rf-uppercase {\n text-transform: uppercase;\n}\n\n#retorik-container.rf-tactile .tactile\\:rf-h-4 {\n height: 1rem;\n}\n\n#retorik-container.rf-tactile .tactile\\:rf-h-6 {\n height: 1.5rem;\n}\n\n#retorik-container.rf-tactile .tactile\\:rf-w-6 {\n width: 1.5rem;\n}\n\n#retorik-container.rf-tactile .tactile\\:rf-pt-1\\/5 {\n padding-top: 20%;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-bottom-\\[25vh\\] {\n bottom: 25vh;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-left-4 {\n left: 1rem;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-top-4 {\n top: 1rem;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-col-span-full {\n grid-column: 1 / -1;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-col-start-1 {\n grid-column-start: 1;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-col-start-2 {\n grid-column-start: 2;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-col-end-8 {\n grid-column-end: 8;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-col-end-9 {\n grid-column-end: 9;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-row-span-4 {\n grid-row: span 4 / span 4;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-row-span-6 {\n grid-row: span 6 / span 6;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-row-start-5 {\n grid-row-start: 5;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-row-start-7 {\n grid-row-start: 7;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-row-end-11 {\n grid-row-end: 11;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-row-end-7 {\n grid-row-end: 7;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-mt-4 {\n margin-top: 1rem;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-mt-\\[20vh\\] {\n margin-top: 20vh;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-mt-\\[25vh\\] {\n margin-top: 25vh;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-block {\n display: block;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-hidden {\n display: none;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-h-1\\/2 {\n height: 50%;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-h-14 {\n height: 3.5rem;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-h-24 {\n height: 6rem;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-h-6 {\n height: 1.5rem;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-h-\\[50vh\\] {\n height: 50vh;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-max-h-11\\/12 {\n max-height: 91.67%;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-max-h-36 {\n max-height: 9rem;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-max-h-\\[18vh\\] {\n max-height: 18vh;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-max-h-\\[30vh\\] {\n max-height: 30vh;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-w-1\\/2 {\n width: 50%;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-w-14 {\n width: 3.5rem;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-w-16 {\n width: 4rem;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-w-24 {\n width: 6rem;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-w-4\\/9 {\n width: 45%;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-w-6 {\n width: 1.5rem;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-min-w-24 {\n min-width: 6rem;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-min-w-4\\/9 {\n min-width: 45%;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-max-w-2\\/3 {\n max-width: 66.67%;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-max-w-\\[60\\%\\] {\n max-width: 60%;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-flex-row {\n flex-direction: row;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-justify-center {\n justify-content: center;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-gap-6 {\n gap: 1.5rem;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-self-end {\n align-self: flex-end;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-border-t {\n border-top-width: 1px;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-border-t-menuBorder {\n --tw-border-opacity: 1;\n border-top-color: rgb(224 225 231 / var(--tw-border-opacity));\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-py-4 {\n padding-top: 1rem;\n padding-bottom: 1rem;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-py-5 {\n padding-top: 1.5rem;\n padding-bottom: 1.5rem;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-pl-0 {\n padding-left: 0;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-pt-8 {\n padding-top: 2rem;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-pt-\\[16\\.67\\%\\] {\n padding-top: 16.67%;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-pt-\\[20vh\\] {\n padding-top: 20vh;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-text-basecustomuppercase {\n font-size: 1rem;\n line-height: 1.1rem;\n}\n\n#retorik-container.rf-large.rf-tactile .large-tactile\\:rf-mt-0 {\n margin-top: 0;\n}\n\n#retorik-container.rf-large.rf-tactile .large-tactile\\:rf-flex {\n display: flex;\n}\n\n#retorik-container.rf-large.rf-tactile .large-tactile\\:rf-hidden {\n display: none;\n}\n\n#retorik-container.rf-large:not(.rf-portrait) .desktop\\:rf-h-full {\n height: 100%;\n}\n\n@media (height <= 700px) and (width <= 300px) {\n .small-mobile\\:rf-row-span-6 {\n grid-row: span 6 / span 6;\n }\n\n .small-mobile\\:rf-row-span-7 {\n grid-row: span 7 / span 7;\n }\n\n .small-mobile\\:rf-row-start-5 {\n grid-row-start: 5;\n }\n}\n";
74
+ $4e7182a6e3eb35e2$exports = "*, :before, :after {\n box-sizing: border-box;\n border: 0 solid;\n}\n\n:before, :after {\n --tw-content: \"\";\n}\n\nhtml, :host {\n -webkit-text-size-adjust: 100%;\n -moz-tab-size: 4;\n tab-size: 4;\n font-feature-settings: normal;\n font-variation-settings: normal;\n -webkit-tap-highlight-color: transparent;\n font-family: Calibri, sans-serif;\n line-height: 1.5;\n}\n\nbody {\n line-height: inherit;\n margin: 0;\n}\n\nhr {\n color: inherit;\n border-top-width: 1px;\n height: 0;\n}\n\nabbr:where([title]) {\n text-decoration: underline dotted;\n}\n\nh1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n}\n\na {\n color: inherit;\n text-decoration: inherit;\n}\n\nb, strong {\n font-weight: bolder;\n}\n\ncode, kbd, samp, pre {\n font-feature-settings: normal;\n font-variation-settings: normal;\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace;\n font-size: 1em;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub, sup {\n vertical-align: baseline;\n font-size: 75%;\n line-height: 0;\n position: relative;\n}\n\nsub {\n bottom: -.25em;\n}\n\nsup {\n top: -.5em;\n}\n\ntable {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n}\n\nbutton, input, optgroup, select, textarea {\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n font-family: inherit;\n font-size: 100%;\n font-weight: inherit;\n line-height: inherit;\n color: inherit;\n margin: 0;\n padding: 0;\n}\n\nbutton, select {\n text-transform: none;\n}\n\nbutton, [type=\"button\"], [type=\"reset\"], [type=\"submit\"] {\n -webkit-appearance: button;\n background-color: #0000;\n background-image: none;\n}\n\n:-moz-focusring {\n outline: auto;\n}\n\n:-moz-ui-invalid {\n box-shadow: none;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\n height: auto;\n}\n\n[type=\"search\"] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n}\n\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n -webkit-appearance: button;\n font: inherit;\n}\n\nsummary {\n display: list-item;\n}\n\nblockquote, dl, dd, h1, h2, h3, h4, h5, h6, hr, figure, p, pre {\n margin: 0;\n}\n\nfieldset {\n margin: 0;\n padding: 0;\n}\n\nlegend {\n padding: 0;\n}\n\nol, ul, menu {\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\ndialog {\n padding: 0;\n}\n\ntextarea {\n resize: vertical;\n}\n\ninput::placeholder, textarea::placeholder {\n opacity: 1;\n color: #9ca3af;\n}\n\nbutton, [role=\"button\"] {\n cursor: pointer;\n}\n\n:disabled {\n cursor: default;\n}\n\nimg, svg, video, canvas, audio, iframe, embed, object {\n vertical-align: middle;\n display: block;\n}\n\nimg, video {\n max-width: 100%;\n height: auto;\n}\n\n[hidden] {\n display: none;\n}\n\n*, :before, :after, ::backdrop {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: #3b82f680;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n\n.rf-pointer-events-none {\n pointer-events: none;\n}\n\n.rf-pointer-events-auto {\n pointer-events: auto;\n}\n\n.rf-visible {\n visibility: visible;\n}\n\n.rf-invisible {\n visibility: hidden;\n}\n\n.rf-fixed {\n position: fixed;\n}\n\n.rf-absolute {\n position: absolute;\n}\n\n.rf-relative {\n position: relative;\n}\n\n.-rf-left-6 {\n left: -1.5rem;\n}\n\n.-rf-top-6 {\n top: -1.5rem;\n}\n\n.-rf-top-\\[1\\.15rem\\] {\n top: -1.15rem;\n}\n\n.rf--bottom-2 {\n bottom: -.5rem;\n}\n\n.rf-bottom-0 {\n bottom: 0;\n}\n\n.rf-bottom-1 {\n bottom: .25rem;\n}\n\n.rf-bottom-1\\/4 {\n bottom: 25%;\n}\n\n.rf-bottom-10 {\n bottom: 2.5rem;\n}\n\n.rf-bottom-16 {\n bottom: 4rem;\n}\n\n.rf-bottom-2 {\n bottom: .5rem;\n}\n\n.rf-bottom-4 {\n bottom: 1rem;\n}\n\n.rf-bottom-40 {\n bottom: 10rem;\n}\n\n.rf-left-0 {\n left: 0;\n}\n\n.rf-left-1 {\n left: .25rem;\n}\n\n.rf-left-1\\/2 {\n left: 50%;\n}\n\n.rf-left-2 {\n left: .5rem;\n}\n\n.rf-left-4 {\n left: 1rem;\n}\n\n.rf-right-0 {\n right: 0;\n}\n\n.rf-right-1 {\n right: .25rem;\n}\n\n.rf-right-2 {\n right: .5rem;\n}\n\n.rf-right-3 {\n right: .75rem;\n}\n\n.rf-right-4 {\n right: 1rem;\n}\n\n.rf-right-6 {\n right: 1.5rem;\n}\n\n.rf-right-8 {\n right: 2rem;\n}\n\n.rf-top-0 {\n top: 0;\n}\n\n.rf-top-1 {\n top: .25rem;\n}\n\n.rf-top-1\\/2 {\n top: 50%;\n}\n\n.rf-top-1\\/3 {\n top: 33.3333%;\n}\n\n.rf-top-110 {\n top: 110%;\n}\n\n.rf-top-2 {\n top: .5rem;\n}\n\n.rf-top-4 {\n top: 1rem;\n}\n\n.rf-top-\\[0\\.125rem\\] {\n top: .125rem;\n}\n\n.rf-z-background {\n z-index: 0;\n}\n\n.rf-z-chatbot {\n z-index: 10;\n}\n\n.rf-z-detailedPOI {\n z-index: 2;\n}\n\n.rf-z-dropdown {\n z-index: 30;\n}\n\n.rf-z-exitwidget {\n z-index: 55;\n}\n\n.rf-z-menu {\n z-index: 40;\n}\n\n.rf-z-modal {\n z-index: 50;\n}\n\n.rf-z-overlay {\n z-index: 40;\n}\n\n.rf-z-ui {\n z-index: 20;\n}\n\n.rf-z-util {\n z-index: 1;\n}\n\n.rf-col-span-2 {\n grid-column: span 2 / span 2;\n}\n\n.rf-col-span-3 {\n grid-column: span 3 / span 3;\n}\n\n.rf-col-span-6 {\n grid-column: span 6 / span 6;\n}\n\n.rf-col-span-full {\n grid-column: 1 / -1;\n}\n\n.rf-col-start-1 {\n grid-column-start: 1;\n}\n\n.rf-col-start-2 {\n grid-column-start: 2;\n}\n\n.rf-col-start-4 {\n grid-column-start: 4;\n}\n\n.rf-col-start-5 {\n grid-column-start: 5;\n}\n\n.rf-col-end-13 {\n grid-column-end: 13;\n}\n\n.rf-col-end-2 {\n grid-column-end: 2;\n}\n\n.rf-col-end-9 {\n grid-column-end: 9;\n}\n\n.rf-row-span-1 {\n grid-row: span 1 / span 1;\n}\n\n.rf-row-span-2 {\n grid-row: span 2 / span 2;\n}\n\n.rf-row-span-3 {\n grid-row: span 3 / span 3;\n}\n\n.rf-row-span-5 {\n grid-row: span 5 / span 5;\n}\n\n.rf-row-span-6 {\n grid-row: span 6 / span 6;\n}\n\n.rf-row-span-9 {\n grid-row: span 9 / span 9;\n}\n\n.rf-row-span-full {\n grid-row: 1 / -1;\n}\n\n.rf-row-start-1 {\n grid-row-start: 1;\n}\n\n.rf-row-start-12 {\n grid-row-start: 12;\n}\n\n.rf-row-start-2 {\n grid-row-start: 2;\n}\n\n.rf-row-start-3 {\n grid-row-start: 3;\n}\n\n.rf-row-start-4 {\n grid-row-start: 4;\n}\n\n.rf-row-start-6 {\n grid-row-start: 6;\n}\n\n.rf-row-start-9 {\n grid-row-start: 9;\n}\n\n.rf-row-end-12 {\n grid-row-end: 12;\n}\n\n.rf-row-end-13 {\n grid-row-end: 13;\n}\n\n.rf-row-end-2 {\n grid-row-end: 2;\n}\n\n.rf-row-end-3 {\n grid-row-end: 3;\n}\n\n.rf-row-end-4 {\n grid-row-end: 4;\n}\n\n.rf-row-end-5 {\n grid-row-end: 5;\n}\n\n.rf-float-right {\n float: right;\n}\n\n.rf-m-0 {\n margin: 0;\n}\n\n.rf-m-4 {\n margin: 1rem;\n}\n\n.rf-m-auto {\n margin: auto;\n}\n\n.-rf-mx-6 {\n margin-left: -1.5rem;\n margin-right: -1.5rem;\n}\n\n.rf-mx-0 {\n margin-left: 0;\n margin-right: 0;\n}\n\n.rf-mx-2 {\n margin-left: .5rem;\n margin-right: .5rem;\n}\n\n.rf-mx-3 {\n margin-left: .75rem;\n margin-right: .75rem;\n}\n\n.rf-mx-8 {\n margin-left: 2rem;\n margin-right: 2rem;\n}\n\n.rf-mx-auto {\n margin-left: auto;\n margin-right: auto;\n}\n\n.rf-my-1 {\n margin-top: .25rem;\n margin-bottom: .25rem;\n}\n\n.rf-my-2 {\n margin-top: .5rem;\n margin-bottom: .5rem;\n}\n\n.rf-my-4 {\n margin-top: 1rem;\n margin-bottom: 1rem;\n}\n\n.rf-my-auto {\n margin-top: auto;\n margin-bottom: auto;\n}\n\n.-rf-mb-4 {\n margin-bottom: -1rem;\n}\n\n.-rf-ml-2 {\n margin-left: -.5rem;\n}\n\n.rf-mb-0 {\n margin-bottom: 0;\n}\n\n.rf-mb-1 {\n margin-bottom: .25rem;\n}\n\n.rf-mb-12 {\n margin-bottom: 3rem;\n}\n\n.rf-mb-16 {\n margin-bottom: 4rem;\n}\n\n.rf-mb-2 {\n margin-bottom: .5rem;\n}\n\n.rf-mb-26 {\n margin-bottom: 6.5rem;\n}\n\n.rf-mb-28 {\n margin-bottom: 7rem;\n}\n\n.rf-mb-3 {\n margin-bottom: .75rem;\n}\n\n.rf-mb-30 {\n margin-bottom: 7.5rem;\n}\n\n.rf-mb-4 {\n margin-bottom: 1rem;\n}\n\n.rf-mb-5 {\n margin-bottom: 1.25rem;\n}\n\n.rf-mb-6 {\n margin-bottom: 1.5rem;\n}\n\n.rf-mb-8 {\n margin-bottom: 2rem;\n}\n\n.rf-ml-1 {\n margin-left: .25rem;\n}\n\n.rf-ml-2 {\n margin-left: .5rem;\n}\n\n.rf-ml-4 {\n margin-left: 1rem;\n}\n\n.rf-ml-6 {\n margin-left: 1.5rem;\n}\n\n.rf-mr-1 {\n margin-right: .25rem;\n}\n\n.rf-mr-2 {\n margin-right: .5rem;\n}\n\n.rf-mr-3 {\n margin-right: .75rem;\n}\n\n.rf-mr-4 {\n margin-right: 1rem;\n}\n\n.rf-mr-5 {\n margin-right: 1.25rem;\n}\n\n.rf-mt-1 {\n margin-top: .25rem;\n}\n\n.rf-mt-10 {\n margin-top: 2.5rem;\n}\n\n.rf-mt-2 {\n margin-top: .5rem;\n}\n\n.rf-mt-4 {\n margin-top: 1rem;\n}\n\n.rf-mt-5 {\n margin-top: 1.25rem;\n}\n\n.rf-mt-8 {\n margin-top: 2rem;\n}\n\n.rf-mt-\\[0\\.2rem\\] {\n margin-top: .2rem;\n}\n\n.rf-mt-auto {\n margin-top: auto;\n}\n\n.rf-line-clamp-1 {\n -webkit-line-clamp: 1;\n -webkit-box-orient: vertical;\n display: -webkit-box;\n overflow: hidden;\n}\n\n.rf-line-clamp-2 {\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n display: -webkit-box;\n overflow: hidden;\n}\n\n.rf-inline {\n display: inline;\n}\n\n.rf-flex {\n display: flex;\n}\n\n.rf-grid {\n display: grid;\n}\n\n.rf-hidden {\n display: none;\n}\n\n.rf-aspect-\\[4\\/3\\] {\n aspect-ratio: 4 / 3;\n}\n\n.rf-aspect-square {\n aspect-ratio: 1;\n}\n\n.rf-aspect-video {\n aspect-ratio: 16 / 9;\n}\n\n.rf-h-0 {\n height: 0;\n}\n\n.rf-h-1 {\n height: .25rem;\n}\n\n.rf-h-1\\/2 {\n height: 50%;\n}\n\n.rf-h-1\\/3 {\n height: 33.3333%;\n}\n\n.rf-h-12 {\n height: 3rem;\n}\n\n.rf-h-14 {\n height: 3.5rem;\n}\n\n.rf-h-16 {\n height: 4rem;\n}\n\n.rf-h-18 {\n height: 4.5rem;\n}\n\n.rf-h-2 {\n height: .5rem;\n}\n\n.rf-h-2\\/3 {\n height: 66.6667%;\n}\n\n.rf-h-24 {\n height: 6rem;\n}\n\n.rf-h-3 {\n height: .75rem;\n}\n\n.rf-h-3\\/10 {\n height: 30%;\n}\n\n.rf-h-32 {\n height: 8rem;\n}\n\n.rf-h-36 {\n height: 9rem;\n}\n\n.rf-h-4 {\n height: 1rem;\n}\n\n.rf-h-48 {\n height: 12rem;\n}\n\n.rf-h-5 {\n height: 1.25rem;\n}\n\n.rf-h-6 {\n height: 1.5rem;\n}\n\n.rf-h-7 {\n height: 1.75rem;\n}\n\n.rf-h-8 {\n height: 2rem;\n}\n\n.rf-h-9 {\n height: 2.25rem;\n}\n\n.rf-h-\\[0\\.875rem\\] {\n height: .875rem;\n}\n\n.rf-h-\\[calc\\(50vw-3rem\\)\\] {\n height: calc(50vw - 3rem);\n}\n\n.rf-h-fit {\n height: fit-content;\n}\n\n.rf-h-full {\n height: 100%;\n}\n\n.rf-h-max {\n height: max-content;\n}\n\n.rf-h-screen {\n height: 100vh;\n}\n\n.rf-max-h-12 {\n max-height: 3rem;\n}\n\n.rf-max-h-28 {\n max-height: 7rem;\n}\n\n.rf-max-h-4\\/5 {\n max-height: 80%;\n}\n\n.rf-max-h-48 {\n max-height: 12rem;\n}\n\n.rf-max-h-6 {\n max-height: 1.5rem;\n}\n\n.rf-max-h-full {\n max-height: 100%;\n}\n\n.rf-max-h-qrcode {\n max-height: 120px;\n}\n\n.rf-max-h-screen {\n max-height: 100vh;\n}\n\n.rf-min-h-12 {\n min-height: 3rem;\n}\n\n.rf-min-h-16 {\n min-height: 4rem;\n}\n\n.rf-min-h-2\\/5 {\n min-height: 40%;\n}\n\n.rf-min-h-6 {\n min-height: 1.5rem;\n}\n\n.rf-min-h-full {\n min-height: 100%;\n}\n\n.rf-min-h-inherit {\n min-height: inherit;\n}\n\n.rf-w-0 {\n width: 0;\n}\n\n.rf-w-1\\/2 {\n width: 50%;\n}\n\n.rf-w-1\\/3 {\n width: 33.3333%;\n}\n\n.rf-w-1\\/4 {\n width: 25%;\n}\n\n.rf-w-11\\/12 {\n width: 91.6667%;\n}\n\n.rf-w-12 {\n width: 3rem;\n}\n\n.rf-w-16 {\n width: 4rem;\n}\n\n.rf-w-18 {\n width: 4.5rem;\n}\n\n.rf-w-2 {\n width: .5rem;\n}\n\n.rf-w-2\\/3 {\n width: 66.6667%;\n}\n\n.rf-w-20 {\n width: 5rem;\n}\n\n.rf-w-24 {\n width: 6rem;\n}\n\n.rf-w-3 {\n width: .75rem;\n}\n\n.rf-w-3\\/20 {\n width: 15%;\n}\n\n.rf-w-3\\/4 {\n width: 75%;\n}\n\n.rf-w-3\\/5 {\n width: 60%;\n}\n\n.rf-w-32 {\n width: 8rem;\n}\n\n.rf-w-36 {\n width: 9rem;\n}\n\n.rf-w-4 {\n width: 1rem;\n}\n\n.rf-w-4\\/9 {\n width: 45%;\n}\n\n.rf-w-48 {\n width: 12rem;\n}\n\n.rf-w-5 {\n width: 1.25rem;\n}\n\n.rf-w-6 {\n width: 1.5rem;\n}\n\n.rf-w-7 {\n width: 1.75rem;\n}\n\n.rf-w-8 {\n width: 2rem;\n}\n\n.rf-w-9 {\n width: 2.25rem;\n}\n\n.rf-w-\\[45\\%\\] {\n width: 45%;\n}\n\n.rf-w-\\[45ch\\] {\n width: 45ch;\n}\n\n.rf-w-\\[90\\%\\] {\n width: 90%;\n}\n\n.rf-w-\\[calc\\(100\\%-3rem\\)\\] {\n width: calc(100% - 3rem);\n}\n\n.rf-w-fit {\n width: fit-content;\n}\n\n.rf-w-full {\n width: 100%;\n}\n\n.rf-w-max {\n width: max-content;\n}\n\n.rf-w-screen {\n width: 100vw;\n}\n\n.rf-min-w-11\\/12 {\n min-width: 91.7%;\n}\n\n.rf-min-w-12 {\n min-width: 3rem;\n}\n\n.rf-min-w-24 {\n min-width: 6rem;\n}\n\n.rf-min-w-3\\/20 {\n min-width: 15%;\n}\n\n.rf-min-w-6 {\n min-width: 1.5rem;\n}\n\n.rf-min-w-\\[45\\%\\] {\n min-width: 45%;\n}\n\n.rf-min-w-full {\n min-width: 100%;\n}\n\n.rf-max-w-1\\/2 {\n max-width: 50%;\n}\n\n.rf-max-w-16 {\n max-width: 4rem;\n}\n\n.rf-max-w-3\\/20 {\n max-width: 15%;\n}\n\n.rf-max-w-6 {\n max-width: 1.5rem;\n}\n\n.rf-max-w-7\\/10 {\n max-width: 70%;\n}\n\n.rf-max-w-\\[100vw\\] {\n max-width: 100vw;\n}\n\n.rf-max-w-\\[45\\%\\] {\n max-width: 45%;\n}\n\n.rf-max-w-\\[70vw\\] {\n max-width: 70vw;\n}\n\n.rf-max-w-\\[calc\\(100\\%-2rem\\)\\] {\n max-width: calc(100% - 2rem);\n}\n\n.rf-max-w-full {\n max-width: 100%;\n}\n\n.rf-max-w-none {\n max-width: none;\n}\n\n.rf-flex-1 {\n flex: 1;\n}\n\n.rf-flex-\\[0_0_40\\%\\] {\n flex: 0 0 40%;\n}\n\n.rf-flex-\\[2_1_0\\%\\] {\n flex: 2;\n}\n\n.rf-flex-\\[4_1_0\\%\\] {\n flex: 4;\n}\n\n.rf-origin-center {\n transform-origin: center;\n}\n\n.-rf-translate-x-1\\/2 {\n --tw-translate-x: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.-rf-translate-y-1\\/2 {\n --tw-translate-y: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.rf--translate-x-1\\/2 {\n --tw-translate-x: -50%;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.rf-translate-x-1 {\n --tw-translate-x: .25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.rf-translate-x-5 {\n --tw-translate-x: 1.25rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.rf--rotate-90 {\n --tw-rotate: -90deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.rf-rotate-0 {\n --tw-rotate: 0deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.rf-rotate-180 {\n --tw-rotate: 180deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.rf-rotate-90 {\n --tw-rotate: 90deg;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.rf-scale-0 {\n --tw-scale-x: 0;\n --tw-scale-y: 0;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.rf-transform {\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n@keyframes rf-blink {\n 0%, 100% {\n opacity: .2;\n }\n\n 50% {\n opacity: 1;\n }\n}\n\n.rf-animate-blink {\n animation: 1.4s infinite both rf-blink;\n}\n\n@keyframes rf-fadeIn {\n 0% {\n opacity: 0;\n }\n\n 100% {\n opacity: 1;\n }\n}\n\n.rf-animate-fadeIn {\n animation: .5s .2s backwards rf-fadeIn;\n}\n\n@keyframes rf-hScroll {\n 0% {\n transform: translateX(0);\n }\n\n 100% {\n transform: translateX(calc(-100% - 2rem));\n }\n}\n\n.rf-animate-hScroll {\n animation: 20s linear infinite rf-hScroll;\n}\n\n@keyframes rf-loader {\n 0% {\n box-shadow: 0 1.5rem 0 -1.5rem var(--rf-color-loader-animation);\n }\n\n 40% {\n box-shadow: 0 1.5rem 0 -.3rem var(--rf-color-loader-animation);\n }\n\n 80% {\n box-shadow: 0 1.5rem 0 -1.5rem var(--rf-color-loader-animation);\n }\n\n 100% {\n box-shadow: 0 1.5rem 0 -1.5rem var(--rf-color-loader-animation);\n }\n}\n\n.rf-animate-loader {\n animation: 1.8s ease-in-out -.16s infinite both rf-loader;\n}\n\n.rf-animate-loaderFadeIn {\n animation: 2s rf-fadeIn;\n}\n\n@keyframes rf-fadeOut {\n 0% {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n }\n}\n\n.rf-animate-loaderFadeOut {\n animation: 1s rf-fadeOut;\n}\n\n@keyframes rf-slideBottom {\n 0% {\n opacity: 0;\n transform: translateX(0)translateY(20px);\n }\n\n 100% {\n opacity: 1;\n transform: translateX(0)translateY(0);\n }\n}\n\n.rf-animate-slideBottom {\n animation: .5s .2s backwards rf-slideBottom;\n}\n\n@keyframes rf-spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n.rf-animate-spin {\n animation: 1s linear infinite rf-spin;\n}\n\n.rf-cursor-pointer {\n cursor: pointer;\n}\n\n.rf-select-none {\n user-select: none;\n}\n\n.rf-resize-none {\n resize: none;\n}\n\n.rf-scroll-pb-4 {\n scroll-padding-bottom: 1rem;\n}\n\n.rf-grid-cols-1 {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n}\n\n.rf-grid-cols-2 {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n\n.rf-grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n}\n\n.rf-grid-cols-4 {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n}\n\n.rf-grid-cols-6 {\n grid-template-columns: repeat(6, minmax(0, 1fr));\n}\n\n.rf-grid-cols-7 {\n grid-template-columns: repeat(7, minmax(0, 1fr));\n}\n\n.rf-grid-cols-8 {\n grid-template-columns: repeat(8, minmax(0, 1fr));\n}\n\n.rf-grid-cols-headerContainer {\n grid-template-columns: 7rem 1fr 1fr 1fr;\n}\n\n.rf-grid-cols-printingPreview {\n grid-template-columns: minmax(0, 1fr) 3rem;\n}\n\n.rf-grid-cols-routes {\n grid-template-columns: repeat(3, max-content);\n}\n\n.rf-grid-rows-1 {\n grid-template-rows: repeat(1, minmax(0, 1fr));\n}\n\n.rf-grid-rows-2 {\n grid-template-rows: repeat(2, minmax(0, 1fr));\n}\n\n.rf-grid-rows-container {\n grid-template-rows: repeat(12, minmax(0, 1fr));\n}\n\n.rf-grid-rows-headerContainer {\n grid-template-rows: repeat(3, minmax(0, 1fr));\n}\n\n.rf-flex-row {\n flex-direction: row;\n}\n\n.rf-flex-col {\n flex-direction: column;\n}\n\n.rf-flex-col-reverse {\n flex-direction: column-reverse;\n}\n\n.rf-flex-wrap {\n flex-wrap: wrap;\n}\n\n.rf-flex-nowrap {\n flex-wrap: nowrap;\n}\n\n.rf-content-around {\n align-content: space-around;\n}\n\n.rf-items-start {\n align-items: flex-start;\n}\n\n.rf-items-end {\n align-items: flex-end;\n}\n\n.rf-items-center {\n align-items: center;\n}\n\n.rf-justify-start {\n justify-content: flex-start;\n}\n\n.rf-justify-end {\n justify-content: flex-end;\n}\n\n.rf-justify-center {\n justify-content: center;\n}\n\n.rf-justify-between {\n justify-content: space-between;\n}\n\n.rf-justify-around {\n justify-content: space-around;\n}\n\n.rf-justify-evenly {\n justify-content: space-evenly;\n}\n\n.rf-gap-1 {\n gap: .25rem;\n}\n\n.rf-gap-12 {\n gap: 3rem;\n}\n\n.rf-gap-2 {\n gap: .5rem;\n}\n\n.rf-gap-3 {\n gap: .75rem;\n}\n\n.rf-gap-4 {\n gap: 1rem;\n}\n\n.rf-gap-5 {\n gap: 1.25rem;\n}\n\n.rf-gap-8 {\n gap: 2rem;\n}\n\n.rf-gap-9 {\n gap: 2.25rem;\n}\n\n.rf-divide-x > :not([hidden]) ~ :not([hidden]) {\n --tw-divide-x-reverse: 0;\n border-right-width: calc(1px * var(--tw-divide-x-reverse));\n border-left-width: calc(1px * calc(1 - var(--tw-divide-x-reverse)));\n}\n\n.rf-self-auto {\n align-self: auto;\n}\n\n.rf-self-start {\n align-self: flex-start;\n}\n\n.rf-self-end {\n align-self: flex-end;\n}\n\n.rf-self-center {\n align-self: center;\n}\n\n.rf-justify-self-start {\n justify-self: start;\n}\n\n.rf-justify-self-end {\n justify-self: end;\n}\n\n.rf-justify-self-center {\n justify-self: center;\n}\n\n.rf-overflow-hidden {\n overflow: hidden;\n}\n\n.rf-overflow-clip {\n overflow: clip;\n}\n\n.rf-overflow-x-auto {\n overflow-x: auto;\n}\n\n.rf-overflow-y-auto {\n overflow-y: auto;\n}\n\n.rf-overflow-x-hidden {\n overflow-x: hidden;\n}\n\n.rf-overflow-y-hidden {\n overflow-y: hidden;\n}\n\n.rf-overflow-y-visible {\n overflow-y: visible;\n}\n\n.rf-overflow-x-scroll {\n overflow-x: scroll;\n}\n\n.rf-overflow-y-scroll {\n overflow-y: scroll;\n}\n\n.rf-truncate {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n}\n\n.rf-whitespace-nowrap {\n white-space: nowrap;\n}\n\n.rf-rounded {\n border-radius: .3125rem;\n}\n\n.rf-rounded-6 {\n border-radius: 1.5rem;\n}\n\n.rf-rounded-8 {\n border-radius: 2rem;\n}\n\n.rf-rounded-\\[20px\\] {\n border-radius: 20px;\n}\n\n.rf-rounded-full {\n border-radius: 9999px;\n}\n\n.rf-rounded-half {\n border-radius: 50%;\n}\n\n.rf-rounded-lg {\n border-radius: .5rem;\n}\n\n.rf-rounded-max {\n border-radius: 100%;\n}\n\n.rf-rounded-b {\n border-bottom-right-radius: .3125rem;\n border-bottom-left-radius: .3125rem;\n}\n\n.rf-rounded-l-lg {\n border-top-left-radius: .5rem;\n border-bottom-left-radius: .5rem;\n}\n\n.rf-border {\n border-width: 1px;\n}\n\n.rf-border-0 {\n border-width: 0;\n}\n\n.rf-border-2 {\n border-width: 2px;\n}\n\n.rf-border-y {\n border-top-width: 1px;\n border-bottom-width: 1px;\n}\n\n.rf-border-b {\n border-bottom-width: 1px;\n}\n\n.rf-border-b-2 {\n border-bottom-width: 2px;\n}\n\n.rf-border-l {\n border-left-width: 1px;\n}\n\n.rf-border-r {\n border-right-width: 1px;\n}\n\n.rf-border-t {\n border-top-width: 1px;\n}\n\n.rf-border-t-0 {\n border-top-width: 0;\n}\n\n.rf-border-none {\n border-style: none;\n}\n\n.rf-border-\\[\\#00000029\\] {\n border-color: #00000029;\n}\n\n.rf-border-\\[\\#9FA2AA\\] {\n --tw-border-opacity: 1;\n border-color: rgb(159 162 170 / var(--tw-border-opacity));\n}\n\n.rf-border-\\[\\#C7C6C6\\] {\n --tw-border-opacity: 1;\n border-color: rgb(199 198 198 / var(--tw-border-opacity));\n}\n\n.rf-border-black {\n border-color: var(--rf-color-black);\n}\n\n.rf-border-cardButtonBorderDefault {\n border-color: var(--rf-color-cardButtonBorderDefault);\n}\n\n.rf-border-cardButtonBorderHover {\n border-color: var(--rf-color-cardButtonBorderHover);\n}\n\n.rf-border-cardFrameBorder {\n border-color: var(--rf-color-cardFrameBorder);\n}\n\n.rf-border-formInputButtonBorderDefault {\n border-color: var(--rf-color-formInputButtonBorderDefault);\n}\n\n.rf-border-formInputButtonBorderHover {\n border-color: var(--rf-color-formInputButtonBorderHover);\n}\n\n.rf-border-formInputRadioCheckboxCheckedBorder {\n border-color: var(--rf-color-formInputRadioCheckboxCheckedBorder);\n}\n\n.rf-border-formInputRadioCheckboxUncheckedBorder {\n border-color: var(--rf-color-formInputRadioCheckboxUncheckedBorder);\n}\n\n.rf-border-gray {\n --tw-border-opacity: 1;\n border-color: rgb(128 128 128 / var(--tw-border-opacity));\n}\n\n.rf-border-menuBorder {\n --tw-border-opacity: 1;\n border-color: rgb(224 225 231 / var(--tw-border-opacity));\n}\n\n.rf-border-primary {\n border-color: var(--rf-color-primary);\n}\n\n.rf-border-red-700 {\n --tw-border-opacity: 1;\n border-color: rgb(185 28 28 / var(--tw-border-opacity));\n}\n\n.rf-border-secondary {\n border-color: var(--rf-color-secondary);\n}\n\n.rf-border-templateCheckboxBorder {\n --tw-border-opacity: 1;\n border-color: rgb(112 112 112 / var(--tw-border-opacity));\n}\n\n.rf-border-trueblack {\n --tw-border-opacity: 1;\n border-color: rgb(0 0 0 / var(--tw-border-opacity));\n}\n\n.rf-border-truewhite {\n --tw-border-opacity: 1;\n border-color: rgb(255 255 255 / var(--tw-border-opacity));\n}\n\n.rf-border-x-primary {\n border-left-color: var(--rf-color-primary);\n border-right-color: var(--rf-color-primary);\n}\n\n.rf-border-y-menuBorder {\n --tw-border-opacity: 1;\n border-top-color: rgb(224 225 231 / var(--tw-border-opacity));\n border-bottom-color: rgb(224 225 231 / var(--tw-border-opacity));\n}\n\n.rf-border-b-\\[\\#C4C5C8\\] {\n --tw-border-opacity: 1;\n border-bottom-color: rgb(196 197 200 / var(--tw-border-opacity));\n}\n\n.rf-border-b-black {\n border-bottom-color: var(--rf-color-black);\n}\n\n.rf-border-b-menuBorder {\n --tw-border-opacity: 1;\n border-bottom-color: rgb(224 225 231 / var(--tw-border-opacity));\n}\n\n.rf-border-b-silver {\n --tw-border-opacity: 1;\n border-bottom-color: rgb(192 192 192 / var(--tw-border-opacity));\n}\n\n.rf-border-b-transparent {\n border-bottom-color: #0000;\n}\n\n.rf-border-l-menuBorder {\n --tw-border-opacity: 1;\n border-left-color: rgb(224 225 231 / var(--tw-border-opacity));\n}\n\n.rf-border-r-silver {\n --tw-border-opacity: 1;\n border-right-color: rgb(192 192 192 / var(--tw-border-opacity));\n}\n\n.rf-border-t-\\[\\#CBC9C9\\] {\n --tw-border-opacity: 1;\n border-top-color: rgb(203 201 201 / var(--tw-border-opacity));\n}\n\n.rf-border-t-menuBorder {\n --tw-border-opacity: 1;\n border-top-color: rgb(224 225 231 / var(--tw-border-opacity));\n}\n\n.rf-bg-\\[\\#00000050\\] {\n background-color: #00000050;\n}\n\n.rf-bg-\\[\\#F0F0F0\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(240 240 240 / var(--tw-bg-opacity));\n}\n\n.rf-bg-\\[\\#F8F8F8\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(248 248 248 / var(--tw-bg-opacity));\n}\n\n.rf-bg-black {\n background-color: var(--rf-color-black);\n}\n\n.rf-bg-blue-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(59 130 246 / var(--tw-bg-opacity));\n}\n\n.rf-bg-cardButtonBackgroundDefault {\n background-color: var(--rf-color-cardButtonBackgroundDefault);\n}\n\n.rf-bg-cardButtonBackgroundHover {\n background-color: var(--rf-color-cardButtonBackgroundHover);\n}\n\n.rf-bg-cardFrameBackground {\n background-color: var(--rf-color-cardFrameBackground);\n}\n\n.rf-bg-formInputButtonBackgroundDefault {\n background-color: var(--rf-color-formInputButtonBackgroundDefault);\n}\n\n.rf-bg-formInputButtonBackgroundHover {\n background-color: var(--rf-color-formInputButtonBackgroundHover);\n}\n\n.rf-bg-formInputRadioCheckboxUncheckedBackground {\n background-color: var(--rf-color-formInputRadioCheckboxUncheckedBackground);\n}\n\n.rf-bg-gray {\n --tw-bg-opacity: 1;\n background-color: rgb(128 128 128 / var(--tw-bg-opacity));\n}\n\n.rf-bg-primary {\n background-color: var(--rf-color-primary);\n}\n\n.rf-bg-red-600 {\n --tw-bg-opacity: 1;\n background-color: rgb(220 38 38 / var(--tw-bg-opacity));\n}\n\n.rf-bg-secondary {\n background-color: var(--rf-color-secondary);\n}\n\n.rf-bg-silver {\n --tw-bg-opacity: 1;\n background-color: rgb(192 192 192 / var(--tw-bg-opacity));\n}\n\n.rf-bg-templateBackground {\n --tw-bg-opacity: 1;\n background-color: rgb(241 241 241 / var(--tw-bg-opacity));\n}\n\n.rf-bg-templateEmptyCard {\n --tw-bg-opacity: 1;\n background-color: rgb(232 231 231 / var(--tw-bg-opacity));\n}\n\n.rf-bg-textModePanelBackground {\n background-color: var(--rf-color-textModePanelBackground);\n}\n\n.rf-bg-transparent {\n background-color: #0000;\n}\n\n.rf-bg-truewhite {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n}\n\n.rf-bg-vocalModeSubtitlesBackground {\n background-color: var(--rf-color-vocalModeSubtitlesBackground);\n}\n\n.rf-bg-white {\n --tw-bg-opacity: 1;\n background-color: rgb(247 243 246 / var(--tw-bg-opacity));\n}\n\n.rf-bg-opacity-30 {\n --tw-bg-opacity: .3;\n}\n\n.rf-bg-opacity-50 {\n --tw-bg-opacity: .5;\n}\n\n.rf-bg-opacity-80 {\n --tw-bg-opacity: .8;\n}\n\n.rf-object-cover {\n object-fit: cover;\n}\n\n.rf-p-0 {\n padding: 0;\n}\n\n.rf-p-1 {\n padding: .25rem;\n}\n\n.rf-p-2 {\n padding: .5rem;\n}\n\n.rf-p-4 {\n padding: 1rem;\n}\n\n.rf-p-6 {\n padding: 1.5rem;\n}\n\n.rf-p-\\[25px\\] {\n padding: 25px;\n}\n\n.rf-p-\\[7px_12px\\] {\n padding: 7px 12px;\n}\n\n.rf-px-1 {\n padding-left: .25rem;\n padding-right: .25rem;\n}\n\n.rf-px-2 {\n padding-left: .5rem;\n padding-right: .5rem;\n}\n\n.rf-px-3 {\n padding-left: .75rem;\n padding-right: .75rem;\n}\n\n.rf-px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n\n.rf-px-5, .rf-px-6 {\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n}\n\n.rf-px-8 {\n padding-left: 2rem;\n padding-right: 2rem;\n}\n\n.rf-py-0 {\n padding-top: 0;\n padding-bottom: 0;\n}\n\n.rf-py-1 {\n padding-top: .25rem;\n padding-bottom: .25rem;\n}\n\n.rf-py-12 {\n padding-top: 3rem;\n padding-bottom: 3rem;\n}\n\n.rf-py-2 {\n padding-top: .5rem;\n padding-bottom: .5rem;\n}\n\n.rf-py-3 {\n padding-top: .75rem;\n padding-bottom: .75rem;\n}\n\n.rf-py-4 {\n padding-top: 1rem;\n padding-bottom: 1rem;\n}\n\n.rf-py-6 {\n padding-top: 1.5rem;\n padding-bottom: 1.5rem;\n}\n\n.rf-pb-10 {\n padding-bottom: 2.5rem;\n}\n\n.rf-pb-12 {\n padding-bottom: 3rem;\n}\n\n.rf-pb-14 {\n padding-bottom: 3.5rem;\n}\n\n.rf-pb-2 {\n padding-bottom: .5rem;\n}\n\n.rf-pb-3 {\n padding-bottom: .75rem;\n}\n\n.rf-pb-4 {\n padding-bottom: 1rem;\n}\n\n.rf-pb-5, .rf-pb-6 {\n padding-bottom: 1.5rem;\n}\n\n.rf-pb-8 {\n padding-bottom: 2rem;\n}\n\n.rf-pb-\\[15vh\\] {\n padding-bottom: 15vh;\n}\n\n.rf-pl-0 {\n padding-left: 0;\n}\n\n.rf-pl-1 {\n padding-left: .25rem;\n}\n\n.rf-pl-2 {\n padding-left: .5rem;\n}\n\n.rf-pl-4 {\n padding-left: 1rem;\n}\n\n.rf-pl-6 {\n padding-left: 1.5rem;\n}\n\n.rf-pr-1 {\n padding-right: .25rem;\n}\n\n.rf-pr-2 {\n padding-right: .5rem;\n}\n\n.rf-pr-4 {\n padding-right: 1rem;\n}\n\n.rf-pt-1 {\n padding-top: .25rem;\n}\n\n.rf-pt-11\\/20 {\n padding-top: 55%;\n}\n\n.rf-pt-12 {\n padding-top: 3rem;\n}\n\n.rf-pt-14 {\n padding-top: 3.5rem;\n}\n\n.rf-pt-2 {\n padding-top: .5rem;\n}\n\n.rf-pt-24 {\n padding-top: 6rem;\n}\n\n.rf-pt-3 {\n padding-top: .75rem;\n}\n\n.rf-pt-4 {\n padding-top: 1rem;\n}\n\n.rf-pt-8 {\n padding-top: 2rem;\n}\n\n.rf-pt-\\[25vh\\] {\n padding-top: 25vh;\n}\n\n.rf-pt-\\[26vh\\] {\n padding-top: 26vh;\n}\n\n.rf-text-left {\n text-align: left;\n}\n\n.rf-text-center {\n text-align: center;\n}\n\n.rf-text-right {\n text-align: right;\n}\n\n.rf-font-default {\n font-family: Calibri, sans-serif;\n}\n\n.rf-text-2xl {\n font-size: 1.5rem;\n line-height: 2rem;\n}\n\n.rf-text-3xl {\n font-size: 1.875rem;\n line-height: 2.25rem;\n}\n\n.rf-text-4xl {\n font-size: 2.25rem;\n line-height: 2.5rem;\n}\n\n.rf-text-5xl {\n font-size: 3rem;\n line-height: 1;\n}\n\n.rf-text-7xl {\n font-size: 4.5rem;\n line-height: 1;\n}\n\n.rf-text-8xl {\n font-size: 6rem;\n line-height: 1;\n}\n\n.rf-text-\\[0\\.5rem\\] {\n font-size: .5rem;\n}\n\n.rf-text-base {\n font-size: 1rem;\n line-height: 1.5rem;\n}\n\n.rf-text-basecustom {\n font-size: 1rem;\n line-height: 1.3rem;\n}\n\n.rf-text-lgcustom {\n font-size: 1.125rem;\n line-height: 1.5rem;\n}\n\n.rf-text-sm {\n font-size: .875rem;\n line-height: 1.25rem;\n}\n\n.rf-text-xl {\n font-size: 1.25rem;\n line-height: 1.75rem;\n}\n\n.rf-text-xs {\n font-size: .75rem;\n line-height: 1rem;\n}\n\n.rf-text-xsl {\n font-size: .7rem;\n line-height: 1rem;\n}\n\n.rf-text-xsm {\n font-size: .6rem;\n}\n\n.rf-font-bold {\n font-weight: 600;\n}\n\n.rf-font-medium {\n font-weight: 300;\n}\n\n.rf-font-semibold {\n font-weight: 400;\n}\n\n.rf-uppercase {\n text-transform: uppercase;\n}\n\n.rf-capitalize {\n text-transform: capitalize;\n}\n\n.rf-normal-case {\n text-transform: none;\n}\n\n.rf-italic {\n font-style: italic;\n}\n\n.rf-text-\\[\\#575F6B\\] {\n --tw-text-opacity: 1;\n color: rgb(87 95 107 / var(--tw-text-opacity));\n}\n\n.rf-text-\\[\\#9A9A9A\\] {\n --tw-text-opacity: 1;\n color: rgb(154 154 154 / var(--tw-text-opacity));\n}\n\n.rf-text-\\[\\#A4A7AF\\] {\n --tw-text-opacity: 1;\n color: rgb(164 167 175 / var(--tw-text-opacity));\n}\n\n.rf-text-black {\n color: var(--rf-color-black);\n}\n\n.rf-text-cardButtonTextDefault {\n color: var(--rf-color-cardButtonTextDefault);\n}\n\n.rf-text-cardFrameText {\n color: var(--rf-color-cardFrameText);\n}\n\n.rf-text-formInputButtonTextDefault {\n color: var(--rf-color-formInputButtonTextDefault);\n}\n\n.rf-text-formInputButtonTextHover {\n color: var(--rf-color-formInputButtonTextHover);\n}\n\n.rf-text-formInputRadioCheckboxUncheckedBackground {\n color: var(--rf-color-formInputRadioCheckboxUncheckedBackground);\n}\n\n.rf-text-formInputTextDefault {\n color: var(--rf-color-formInputTextDefault);\n}\n\n.rf-text-gray {\n --tw-text-opacity: 1;\n color: rgb(128 128 128 / var(--tw-text-opacity));\n}\n\n.rf-text-lightgray {\n --tw-text-opacity: 1;\n color: rgb(129 129 129 / var(--tw-text-opacity));\n}\n\n.rf-text-primary {\n color: var(--rf-color-primary);\n}\n\n.rf-text-red-700 {\n --tw-text-opacity: 1;\n color: rgb(185 28 28 / var(--tw-text-opacity));\n}\n\n.rf-text-secondary {\n color: var(--rf-color-secondary);\n}\n\n.rf-text-textModePanelConversationBot {\n color: var(--rf-color-textModePanelConversationBot);\n}\n\n.rf-text-textModePanelConversationUser {\n color: var(--rf-color-textModePanelConversationUser);\n}\n\n.rf-text-trueblack {\n --tw-text-opacity: 1;\n color: rgb(0 0 0 / var(--tw-text-opacity));\n}\n\n.rf-text-truewhite {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n\n.rf-text-vocalModeSubtitlesText {\n color: var(--rf-color-vocalModeSubtitlesText);\n}\n\n.rf-text-white {\n --tw-text-opacity: 1;\n color: rgb(247 243 246 / var(--tw-text-opacity));\n}\n\n.rf-underline {\n text-decoration-line: underline;\n}\n\n.rf-shadow-\\[0_0_15px_0_silver\\] {\n --tw-shadow: 0 0 15px 0 silver;\n --tw-shadow-colored: 0 0 15px 0 var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.rf-shadow-\\[0_0_20px_1px_\\#A4A7AF80\\] {\n --tw-shadow: 0 0 20px 1px #a4a7af80;\n --tw-shadow-colored: 0 0 20px 1px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.rf-shadow-\\[0_0_3px_6px_\\#00000029\\] {\n --tw-shadow: 0 0 3px 6px #00000029;\n --tw-shadow-colored: 0 0 3px 6px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.rf-shadow-\\[0_3px_6px_\\#00000029\\] {\n --tw-shadow: 0 3px 6px #00000029;\n --tw-shadow-colored: 0 3px 6px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.rf-shadow-\\[0_3px_6px_\\#606267\\] {\n --tw-shadow: 0 3px 6px #606267;\n --tw-shadow-colored: 0 3px 6px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.rf-shadow-\\[0_3px_6px_rgba\\(0\\,0\\,0\\,0\\.16\\)\\] {\n --tw-shadow: 0 3px 6px #00000029;\n --tw-shadow-colored: 0 3px 6px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.rf-shadow-\\[0_6px_6px_\\#00000029\\] {\n --tw-shadow: 0 6px 6px #00000029;\n --tw-shadow-colored: 0 6px 6px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.rf-shadow-\\[20px_3px_20px_\\#00000029\\] {\n --tw-shadow: 20px 3px 20px #00000029;\n --tw-shadow-colored: 20px 3px 20px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.rf-shadow-\\[3px_3px_16px_\\#00000029\\] {\n --tw-shadow: 3px 3px 16px #00000029;\n --tw-shadow-colored: 3px 3px 16px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.rf-shadow-\\[3px_3px_6px_\\#00000029\\] {\n --tw-shadow: 3px 3px 6px #00000029;\n --tw-shadow-colored: 3px 3px 6px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.rf-shadow-\\[inset_0_0_6px_\\#0000003B\\] {\n --tw-shadow: inset 0 0 6px #0000003b;\n --tw-shadow-colored: inset 0 0 6px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.rf-shadow-\\[inset_0_12px_12px_-12px_\\#00000029\\,inset_0_-12px_12px_-12px_\\#00000029\\] {\n --tw-shadow: inset 0 12px 12px -12px #00000029, inset 0 -12px 12px -12px #00000029;\n --tw-shadow-colored: inset 0 12px 12px -12px var(--tw-shadow-color), inset 0 -12px 12px -12px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.rf-shadow-card {\n --tw-shadow: 0px 0px 13px 3px #101219;\n --tw-shadow-colored: 0px 0px 13px 3px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.rf-outline-none {\n outline-offset: 2px;\n outline: 2px solid #0000;\n}\n\n.rf-blur-background {\n --tw-blur: blur(var(--rf-blur-background));\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n.rf-filter {\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n.rf-transition-all {\n transition-property: all;\n transition-duration: .15s;\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n}\n\n.rf-transition-transform {\n transition-property: transform;\n transition-duration: .15s;\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n}\n\n.rf-text-shadow-black {\n text-shadow: 2px 0 5px #000, -2px 0 5px #000, 0 2px 5px #000, 0 -2px 5px #000;\n}\n\n.rf-capitalize-first:first-letter {\n text-transform: uppercase;\n}\n\nol {\n padding-left: 2rem;\n list-style-type: decimal;\n}\n\nul {\n padding-left: 2rem;\n list-style-type: disc;\n}\n\n#retorik-container.rf-portrait:not(.rf-large) .ac-image {\n max-width: 100px;\n}\n\n.rf-glass-background, #retorik-container.portrait .portrait\\:rf-glass-background {\n background-color: var(--rf-color-black);\n --tw-bg-opacity: .62;\n --tw-backdrop-blur: blur(8px);\n backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);\n}\n\n.rf-loader:before {\n content: \"\";\n border-radius: 50%;\n width: 1.5rem;\n height: 1.5rem;\n animation: 1.8s ease-in-out -.32s infinite both rf-loader;\n display: block;\n position: absolute;\n right: 1.5rem;\n}\n\n.rf-loader:after {\n content: \"\";\n border-radius: 50%;\n width: 1.5rem;\n height: 1.5rem;\n animation: 1.8s ease-in-out infinite both rf-loader;\n display: block;\n position: absolute;\n left: 1.5rem;\n}\n\n.rf-loader-microphone:before, .rf-loader-microphone:after {\n content: \"\";\n --tw-border-opacity: 1;\n border: 6px solid #0000;\n border-top-color: rgb(128 128 128 / var(--tw-border-opacity));\n border-radius: 100%;\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n}\n\n.rf-loader-microphone:before {\n z-index: 1;\n animation: 1s linear infinite rf-spin;\n}\n\n.rf-loader-microphone:after {\n --tw-border-opacity: 1;\n border-color: rgb(204 204 204 / var(--tw-border-opacity));\n}\n\n.rf-touch-action-none {\n touch-action: none;\n}\n\n.rf-unselectable {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n -webkit-touch-callout: none;\n}\n\n.rf-title-extralarge-bold-size-auto {\n font-size: 2.25rem;\n font-weight: 600;\n line-height: 2.5rem;\n}\n\n#retorik-container.rf-large .rf-title-extralarge-bold-size-auto {\n font-size: 3rem;\n line-height: 1;\n}\n\n#retorik-container.rf-large.rf-portrait .rf-title-extralarge-bold-size-auto {\n font-size: 3.75rem;\n line-height: 1;\n}\n\n.rf-title-extralarge-size-auto {\n font-size: 2.25rem;\n font-weight: 400;\n line-height: 2.5rem;\n}\n\n#retorik-container.rf-large .rf-title-extralarge-size-auto {\n font-size: 3rem;\n line-height: 1;\n}\n\n#retorik-container.rf-large.rf-portrait .rf-title-extralarge-size-auto {\n font-size: 3.75rem;\n line-height: 1;\n}\n\n.rf-title-large-size-auto {\n font-size: 1.5rem;\n font-weight: 400;\n line-height: 2rem;\n}\n\n#retorik-container.rf-large .rf-title-large-size-auto {\n font-size: 2.25rem;\n line-height: 2.5rem;\n}\n\n#retorik-container.rf-large.rf-portrait .rf-title-large-size-auto {\n font-size: 3rem;\n line-height: 1;\n}\n\n.rf-title-large-bold-size-auto {\n font-size: 1.875rem;\n font-weight: 600;\n line-height: 2.25rem;\n}\n\n#retorik-container.rf-large .rf-title-large-bold-size-auto {\n font-size: 2.25rem;\n line-height: 2.5rem;\n}\n\n#retorik-container.rf-large.rf-portrait .rf-title-large-bold-size-auto {\n font-size: 3rem;\n line-height: 1;\n}\n\n.rf-title-size-auto {\n font-size: 1.5rem;\n font-weight: 400;\n line-height: 2rem;\n}\n\n#retorik-container.rf-large .rf-title-size-auto {\n font-size: 1.875rem;\n line-height: 2.25rem;\n}\n\n#retorik-container.rf-large.rf-portrait .rf-title-size-auto {\n font-size: 2.25rem;\n line-height: 2.5rem;\n}\n\n.rf-title-bold-size-auto {\n font-size: 1.5rem;\n font-weight: 600;\n line-height: 2rem;\n}\n\n#retorik-container.rf-large .rf-title-bold-size-auto {\n font-size: 1.875rem;\n line-height: 2.25rem;\n}\n\n#retorik-container.rf-large.rf-portrait .rf-title-bold-size-auto {\n font-size: 2.25rem;\n line-height: 2.5rem;\n}\n\n.rf-subtitle-size-auto {\n font-size: 1.125rem;\n line-height: 1.5rem;\n}\n\n#retorik-container.rf-large .rf-subtitle-size-auto {\n font-size: 1.25rem;\n line-height: 1.75rem;\n}\n\n#retorik-container.rf-large.rf-portrait .rf-subtitle-size-auto {\n font-size: 1.5rem;\n line-height: 2rem;\n}\n\n.rf-text-extralarge-size-auto {\n font-size: 2.25rem;\n line-height: 2.5rem;\n}\n\n#retorik-container.rf-large .rf-text-extralarge-size-auto {\n font-size: 3rem;\n line-height: 1;\n}\n\n#retorik-container.rf-large.rf-portrait .rf-text-extralarge-size-auto {\n font-size: 3.75rem;\n line-height: 1;\n}\n\n.rf-text-verylarge-size-auto {\n font-size: 1.5rem;\n line-height: 2rem;\n}\n\n#retorik-container.rf-large .rf-text-verylarge-size-auto {\n font-size: 3.75rem;\n line-height: 1;\n}\n\n#retorik-container.rf-large.rf-portrait .rf-text-verylarge-size-auto {\n font-size: 4.5rem;\n line-height: 1;\n}\n\n.rf-text-large-size-auto {\n font-size: 1.5rem;\n line-height: 2rem;\n}\n\n#retorik-container.rf-large .rf-text-large-size-auto {\n font-size: 1.875rem;\n line-height: 2.25rem;\n}\n\n#retorik-container.rf-large.rf-portrait .rf-text-large-size-auto {\n font-size: 2.25rem;\n line-height: 2.5rem;\n}\n\n.rf-text-medium-size-auto {\n font-size: 1rem;\n line-height: 1.3rem;\n}\n\n#retorik-container.rf-large .rf-text-medium-size-auto {\n font-size: 1.125rem;\n line-height: 1.5rem;\n}\n\n.rf-text-size-auto {\n font-size: .875rem;\n line-height: 1.25rem;\n}\n\n#retorik-container.rf-large .rf-text-size-auto {\n font-size: 1rem;\n line-height: 1.3rem;\n}\n\n#retorik-container.rf-large.rf-portrait .rf-text-size-auto {\n font-size: 1.125rem;\n line-height: 1.5rem;\n}\n\n.rf-small-size-auto {\n font-size: .6rem;\n}\n\n#retorik-container.rf-large .rf-small-size-auto {\n font-size: .75rem;\n line-height: 1rem;\n}\n\n#retorik-container.rf-large.rf-portrait .rf-small-size-auto {\n font-size: .875rem;\n line-height: 1.25rem;\n}\n\n.rf-line-clamp-unknown {\n hyphens: auto;\n -webkit-box-orient: vertical;\n display: -webkit-box;\n overflow: hidden;\n}\n\n.rf-line-clamp-1 {\n hyphens: auto;\n -webkit-line-clamp: 1;\n -webkit-box-orient: vertical;\n display: -webkit-box;\n overflow: hidden;\n}\n\n.rf-line-clamp-2 {\n hyphens: auto;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n display: -webkit-box;\n overflow: hidden;\n}\n\n.rf-line-clamp-3 {\n hyphens: auto;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n display: -webkit-box;\n overflow: hidden;\n}\n\n.rf-line-clamp-4 {\n hyphens: auto;\n -webkit-line-clamp: 4;\n -webkit-box-orient: vertical;\n display: -webkit-box;\n overflow: hidden;\n}\n\n.rf-line-clamp-5 {\n hyphens: auto;\n -webkit-line-clamp: 5;\n -webkit-box-orient: vertical;\n display: -webkit-box;\n overflow: hidden;\n}\n\n.rf-line-clamp-6 {\n hyphens: auto;\n -webkit-line-clamp: 6;\n -webkit-box-orient: vertical;\n display: -webkit-box;\n overflow: hidden;\n}\n\n.rf-line-clamp-7 {\n hyphens: auto;\n -webkit-line-clamp: 7;\n -webkit-box-orient: vertical;\n display: -webkit-box;\n overflow: hidden;\n}\n\n.rf-line-clamp-8 {\n hyphens: auto;\n -webkit-line-clamp: 8;\n -webkit-box-orient: vertical;\n display: -webkit-box;\n overflow: hidden;\n}\n\n.rf-line-clamp-9 {\n hyphens: auto;\n -webkit-line-clamp: 9;\n -webkit-box-orient: vertical;\n display: -webkit-box;\n overflow: hidden;\n}\n\n.rf-line-clamp-10 {\n hyphens: auto;\n -webkit-line-clamp: 10;\n -webkit-box-orient: vertical;\n display: -webkit-box;\n overflow: hidden;\n}\n\n.rf-height-fill-available {\n height: stretch;\n}\n\n.rf-width-fill-available {\n width: stretch;\n}\n\n.rf-animation-delay-2 {\n animation-delay: .2s;\n}\n\n.rf-animation-delay-4 {\n animation-delay: .4s;\n}\n\n.rf-scrollbar-thin {\n scrollbar-width: thin;\n scrollbar-color: var(--rf-color-secondary) transparent;\n}\n\n.rf-scrollbar-thin::-webkit-scrollbar {\n width: .2rem;\n height: .2rem;\n margin: .25rem 0;\n}\n\n.rf-scrollbar-thin::-webkit-scrollbar-thumb {\n background-color: var(--rf-color-secondary);\n border-radius: .5rem;\n}\n\n.rf-scrollbar-x-custom::-webkit-scrollbar {\n background-color: var(--rf-color-formInputRadioCheckboxUncheckedBackground);\n border-radius: 2rem;\n height: .5rem;\n}\n\n.rf-scrollbar-x-custom::-webkit-scrollbar-thumb {\n background-color: var(--rf-color-primary);\n border-radius: 2rem;\n}\n\n.rf-scrollbar-hidden {\n scrollbar-width: none;\n}\n\n.rf-scrollbar-hidden::-webkit-scrollbar {\n display: none;\n}\n\n.rf-opacity-gradient-b {\n -webkit-mask-image: linear-gradient(#000 50%, #0000 100%);\n}\n\n.rf-opacity-gradient-b-thin {\n -webkit-mask-image: linear-gradient(#797676 84%, #0000 100%);\n}\n\n.rf-opacity-gradient-l {\n -webkit-mask-image: linear-gradient(to left, #000 75%, gray 80%, #0000 85%);\n}\n\n.rf-opacity-gradient-l-thin {\n -webkit-mask-image: linear-gradient(to left, #000 90%, gray 95%, #0000 100%);\n}\n\n.rf-opacity-gradient-h {\n -webkit-mask-image: linear-gradient(to right, #0000 0%, 6%, #000, 94%, #0000 100%);\n}\n\n.rf-card-button {\n border-width: 1px;\n border-color: var(--rf-color-cardButtonBorderDefault);\n background-color: var(--rf-color-cardButtonBackgroundDefault);\n color: var(--rf-color-cardButtonTextDefault);\n border-radius: .3125rem;\n padding: .25rem .5rem;\n font-size: .875rem;\n line-height: 1.25rem;\n}\n\n#retorik-container.rf-large .rf-card-button {\n font-size: 1rem;\n line-height: 1.3rem;\n}\n\n#retorik-container.rf-large.rf-portrait .rf-card-button {\n font-size: 1.125rem;\n line-height: 1.5rem;\n}\n\n#retorik-container.rf-large .rf-card-button {\n padding: .5rem 1rem;\n}\n\n.rf-card-button:hover {\n cursor: pointer;\n border-color: var(--rf-color-cardButtonBorderHover);\n background-color: var(--rf-color-cardButtonBackgroundHover);\n color: var(--rf-color-cardButtonTextHover);\n}\n\n.rf-card-button-secondary {\n border-width: 1px;\n border-color: var(--rf-color-secondary);\n color: var(--rf-color-secondary);\n background-color: #0000;\n border-radius: .3125rem;\n padding: .25rem .5rem;\n font-size: .875rem;\n line-height: 1.25rem;\n}\n\n#retorik-container.rf-large .rf-card-button-secondary {\n font-size: 1rem;\n line-height: 1.3rem;\n}\n\n#retorik-container.rf-large.rf-portrait .rf-card-button-secondary {\n font-size: 1.125rem;\n line-height: 1.5rem;\n}\n\n#retorik-container.rf-large .rf-card-button-secondary {\n padding: .5rem 1rem;\n}\n\n.rf-card-button-secondary:hover {\n cursor: pointer;\n border-color: var(--rf-color-secondary);\n background-color: var(--rf-color-secondary);\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n\n.rf-card-button-discover {\n border-width: 1px;\n border-color: var(--rf-color-cardButtonDiscoverBorderDefault);\n background-color: var(--rf-color-cardButtonDiscoverBackgroundDefault);\n color: var(--rf-color-cardButtonDiscoverTextDefault);\n border-radius: .3125rem;\n padding: .5rem;\n font-size: .875rem;\n line-height: 1.25rem;\n}\n\n#retorik-container.rf-large .rf-card-button-discover {\n padding-top: .75rem;\n padding-bottom: .75rem;\n}\n\n.rf-card-button-discover:hover {\n cursor: pointer;\n border-color: var(--rf-color-cardButtonDiscoverBorderHover);\n background-color: var(--rf-color-cardButtonDiscoverBackgroundHover);\n color: var(--rf-color-cardButtonDiscoverTextHover);\n}\n\n.rf-card-button-history {\n cursor: default;\n border-width: 1px;\n border-color: var(--rf-color-cardButtonBorderDefault);\n background-color: var(--rf-color-cardButtonBackgroundDefault);\n color: var(--rf-color-cardButtonTextDefault);\n border-radius: .3125rem;\n padding: .25rem .5rem;\n font-size: .875rem;\n line-height: 1.25rem;\n}\n\n#retorik-container.rf-large .rf-card-button-history {\n font-size: 1rem;\n line-height: 1.3rem;\n}\n\n#retorik-container.rf-large.rf-portrait .rf-card-button-history {\n font-size: 1.125rem;\n line-height: 1.5rem;\n}\n\n#retorik-container.rf-large .rf-card-button-history {\n padding: .5rem 1rem;\n}\n\n.lf-player-container {\n align-items: flex-end;\n width: 100%;\n height: 100%;\n display: flex;\n overflow: hidden;\n}\n\n.rf-input-label {\n text-overflow: ellipsis;\n color: var(--rf-color-formInputTextDefault);\n margin-top: .1rem;\n margin-left: .75rem;\n overflow-x: hidden;\n}\n\n#retorik-container.rf-large .rf-input-label {\n margin-top: .25rem;\n}\n\n#retorik-container.rf-large.rf-portrait .rf-input-label {\n margin-top: .2rem;\n}\n\n.rf-radio-custom {\n -webkit-appearance: none;\n appearance: none;\n border-width: 2px;\n border-color: var(--rf-color-formInputRadioCheckboxUncheckedBorder);\n background-color: var(--rf-color-formInputRadioCheckboxUncheckedBackground);\n border-radius: 50%;\n place-content: center;\n width: 1.5rem;\n min-width: 1.5rem;\n height: 1.5rem;\n margin: 0;\n display: grid;\n}\n\n.rf-radio-custom:checked {\n border-color: var(--rf-color-formInputRadioCheckboxCheckedBorder);\n background-color: var(--rf-color-formInputRadioCheckboxCheckedBackground);\n}\n\n#retorik-container.rf-large .rf-radio-custom {\n width: 1.75rem;\n min-width: 1.75rem;\n height: 1.75rem;\n}\n\n#retorik-container.rf-large.rf-portrait .rf-radio-custom {\n width: 2rem;\n min-width: 2rem;\n height: 2rem;\n}\n\n.rf-radio-custom:before {\n content: \"\";\n --tw-scale-x: 0;\n --tw-scale-y: 0;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n background-color: var(--rf-color-formInputRadioCheckboxCheckedItem);\n border-radius: 50%;\n width: .5rem;\n height: .5rem;\n transition-property: all;\n transition-duration: .15s;\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n}\n\n#retorik-container.rf-large .rf-radio-custom:before {\n width: .75rem;\n height: .75rem;\n}\n\n#retorik-container.rf-large.rf-portrait .rf-radio-custom:before {\n width: 1rem;\n height: 1rem;\n}\n\n.rf-radio-custom:checked:before {\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.rf-input-hidden {\n -webkit-appearance: none;\n appearance: none;\n margin: 0;\n}\n\n.rf-checkbox-custom {\n -webkit-appearance: none;\n appearance: none;\n border-width: 2px;\n border-color: var(--rf-color-formInputRadioCheckboxUncheckedBorder);\n background-color: var(--rf-color-formInputRadioCheckboxUncheckedBackground);\n border-radius: .3125rem;\n place-content: center;\n width: 1.5rem;\n min-width: 1.5rem;\n height: 1.5rem;\n margin: 0;\n display: grid;\n}\n\n#retorik-container.rf-large .rf-checkbox-custom {\n width: 1.75rem;\n min-width: 1.75rem;\n height: 1.75rem;\n}\n\n#retorik-container.rf-large.rf-portrait .rf-checkbox-custom {\n width: 2rem;\n min-width: 2rem;\n height: 2rem;\n}\n\n.rf-checkbox-custom:checked {\n border-color: var(--rf-color-formInputRadioCheckboxCheckedBorder);\n background-color: var(--rf-color-formInputRadioCheckboxCheckedBackground);\n}\n\n.rf-toggle-custom {\n -webkit-appearance: none;\n appearance: none;\n background-color: var(--rf-color-black);\n border-radius: 1.5rem;\n width: 3rem;\n min-width: 3rem;\n height: 1.5rem;\n margin: 0;\n position: relative;\n}\n\n.rf-toggle-custom:checked {\n background-color: var(--rf-color-primary);\n}\n\n#retorik-container.rf-large .rf-toggle-custom {\n border-radius: 1.75rem;\n width: 3.5rem;\n min-width: 3.5rem;\n height: 1.75rem;\n}\n\n#retorik-container.rf-large.rf-portrait .rf-toggle-custom {\n border-radius: 2rem;\n width: 4rem;\n min-width: 4rem;\n height: 2rem;\n}\n\n.rf-toggle-custom:before {\n content: \"\";\n --tw-translate-x: 0px;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n border-radius: 50%;\n width: 1rem;\n height: 1rem;\n transition-property: all;\n transition-duration: .15s;\n transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n position: absolute;\n top: .25rem;\n left: .25rem;\n}\n\n#retorik-container.rf-large .rf-toggle-custom:before {\n width: 1.25rem;\n height: 1.25rem;\n}\n\n#retorik-container.rf-large.rf-portrait .rf-toggle-custom:before {\n width: 1.5rem;\n height: 1.5rem;\n}\n\n.rf-toggle-custom:checked:before {\n --tw-translate-x: 1.5rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n#retorik-container.rf-large .rf-toggle-custom:checked:before {\n --tw-translate-x: 1.75rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n#retorik-container.rf-large.rf-portrait .rf-toggle-custom:checked:before {\n --tw-translate-x: 2rem;\n transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.rf-select-custom {\n -webkit-appearance: none;\n appearance: none;\n border-width: 2px;\n border-color: var(--rf-color-formInputRadioCheckboxUncheckedBorder);\n background-color: var(--rf-color-formInputRadioCheckboxUncheckedBackground);\n border-radius: .3125rem;\n margin: 0;\n padding: 1rem;\n}\n\n.rf-select-custom:hover {\n cursor: pointer;\n}\n\n.rf-select-custom:focus-visible {\n border-color: var(--rf-color-formInputRadioCheckboxCheckedBorder);\n}\n\n.rf-slider-custom {\n -webkit-appearance: none;\n -moz-appearance: none;\n outline-offset: 2px;\n border-radius: .5rem;\n outline: 2px solid #0000;\n width: 100%;\n height: .25rem;\n display: block;\n position: relative;\n}\n\n.rf-slider-custom::-webkit-slider-runnable-track {\n -webkit-appearance: none;\n}\n\n.rf-slider-custom::-moz-track {\n -moz-appearance: none;\n}\n\n.rf-slider-custom::-ms-track {\n appearance: none;\n}\n\n.rf-slider-custom::-webkit-slider-thumb {\n -webkit-appearance: none;\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n border-style: none;\n border-radius: 50%;\n width: 1.5rem;\n height: 1.5rem;\n margin-top: -.2rem;\n}\n\n.rf-slider-custom::-webkit-slider-thumb:hover {\n cursor: pointer;\n}\n\n.rf-slider-custom::-moz-range-thumb {\n -webkit-appearance: none;\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n border-style: none;\n border-radius: 50%;\n width: 1.5rem;\n height: 1.5rem;\n margin-top: -.2rem;\n}\n\n.rf-slider-custom::-moz-range-thumb:hover {\n cursor: pointer;\n}\n\n.rf-slider-custom::-ms-thumb {\n appearance: none;\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n border-style: none;\n border-radius: 50%;\n width: 1.5rem;\n height: 1.5rem;\n margin-top: -.2rem;\n}\n\n.rf-slider-custom::-ms-thumb:hover {\n cursor: pointer;\n}\n\n.rf-likert-custom {\n cursor: pointer;\n outline-offset: 2px;\n -webkit-text-stroke-width: 1px;\n -webkit-text-stroke-color: white;\n background-color: #0000;\n border-style: none;\n outline: 2px solid #0000;\n}\n\n.svgButtonMenu > svg * {\n fill: var(--fill);\n}\n\n.webchat__css-custom-properties {\n width: 100%;\n height: 100%;\n}\n\n.placeholder\\:rf-text-black::placeholder {\n color: var(--rf-color-black);\n}\n\n.placeholder\\:rf-opacity-100::placeholder {\n opacity: 1;\n}\n\n.hover\\:rf-cursor-pointer:hover {\n cursor: pointer;\n}\n\n.hover\\:rf-border-truewhite:hover {\n --tw-border-opacity: 1;\n border-color: rgb(255 255 255 / var(--tw-border-opacity));\n}\n\n.hover\\:rf-bg-formInputRadioCheckboxCheckedBackground:hover {\n background-color: var(--rf-color-formInputRadioCheckboxCheckedBackground);\n}\n\n.hover\\:rf-bg-truewhite:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n}\n\n.hover\\:rf-text-formInputRadioCheckboxCheckedItem:hover {\n color: var(--rf-color-formInputRadioCheckboxCheckedItem);\n}\n\n.hover\\:rf-text-truewhite:hover {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n\n#retorik-container.rf-portrait .vertical\\:rf-col-span-full {\n grid-column: 1 / -1;\n}\n\n#retorik-container.rf-portrait .vertical\\:rf-col-start-1 {\n grid-column-start: 1;\n}\n\n#retorik-container.rf-portrait .vertical\\:rf-row-span-1 {\n grid-row: span 1 / span 1;\n}\n\n#retorik-container.rf-portrait .vertical\\:rf-row-start-11 {\n grid-row-start: 11;\n}\n\n#retorik-container.rf-portrait .vertical\\:rf-row-end-13 {\n grid-row-end: 13;\n}\n\n#retorik-container.rf-portrait .vertical\\:rf-w-5\\/6 {\n width: 83.3333%;\n}\n\n#retorik-container.rf-portrait .vertical\\:rf-w-full {\n width: 100%;\n}\n\n#retorik-container.rf-portrait .vertical\\:rf-flex-col {\n flex-direction: column;\n}\n\n#retorik-container.rf-portrait .vertical\\:rf-overflow-x-auto {\n overflow-x: auto;\n}\n\n#retorik-container.rf-portrait .vertical\\:rf-border-r-0 {\n border-right-width: 0;\n}\n\n#retorik-container.rf-portrait .vertical\\:rf-py-1 {\n padding-top: .25rem;\n padding-bottom: .25rem;\n}\n\n#retorik-container.rf-large .large\\:rf-absolute {\n position: absolute;\n}\n\n#retorik-container.rf-large .large\\:rf-left-4 {\n left: 1rem;\n}\n\n#retorik-container.rf-large .large\\:rf-top-8 {\n top: 2rem;\n}\n\n#retorik-container.rf-large .large\\:rf-col-start-5 {\n grid-column-start: 5;\n}\n\n#retorik-container.rf-large .large\\:rf-col-end-6 {\n grid-column-end: 6;\n}\n\n#retorik-container.rf-large .large\\:rf-col-end-9 {\n grid-column-end: 9;\n}\n\n#retorik-container.rf-large .large\\:rf-row-span-full {\n grid-row: 1 / -1;\n}\n\n#retorik-container.rf-large .large\\:rf-row-start-10 {\n grid-row-start: 10;\n}\n\n#retorik-container.rf-large .large\\:rf-row-start-5 {\n grid-row-start: 5;\n}\n\n#retorik-container.rf-large .large\\:rf-m-8 {\n margin: 2rem;\n}\n\n#retorik-container.rf-large .large\\:rf-my-0 {\n margin-top: 0;\n margin-bottom: 0;\n}\n\n#retorik-container.rf-large .large\\:rf-my-3 {\n margin-top: .75rem;\n margin-bottom: .75rem;\n}\n\n#retorik-container.rf-large .large\\:rf-mb-0 {\n margin-bottom: 0;\n}\n\n#retorik-container.rf-large .large\\:rf-mb-4 {\n margin-bottom: 1rem;\n}\n\n#retorik-container.rf-large .large\\:rf-mb-6 {\n margin-bottom: 1.5rem;\n}\n\n#retorik-container.rf-large .large\\:rf-ml-0 {\n margin-left: 0;\n}\n\n#retorik-container.rf-large .large\\:rf-ml-12 {\n margin-left: 3rem;\n}\n\n#retorik-container.rf-large .large\\:rf-ml-4 {\n margin-left: 1rem;\n}\n\n#retorik-container.rf-large .large\\:rf-ml-8 {\n margin-left: 2rem;\n}\n\n#retorik-container.rf-large .large\\:rf-mr-3 {\n margin-right: .75rem;\n}\n\n#retorik-container.rf-large .large\\:rf-mr-30 {\n margin-right: 7.5rem;\n}\n\n#retorik-container.rf-large .large\\:rf-mt-0 {\n margin-top: 0;\n}\n\n#retorik-container.rf-large .large\\:rf-mt-20 {\n margin-top: 5rem;\n}\n\n#retorik-container.rf-large .large\\:rf-mt-3 {\n margin-top: .75rem;\n}\n\n#retorik-container.rf-large .large\\:rf-mt-\\[20vh\\] {\n margin-top: 20vh;\n}\n\n#retorik-container.rf-large .large\\:rf-block {\n display: block;\n}\n\n#retorik-container.rf-large .large\\:rf-flex {\n display: flex;\n}\n\n#retorik-container.rf-large .large\\:rf-hidden {\n display: none;\n}\n\n#retorik-container.rf-large .large\\:rf-aspect-video {\n aspect-ratio: 16 / 9;\n}\n\n#retorik-container.rf-large .large\\:rf-h-16 {\n height: 4rem;\n}\n\n#retorik-container.rf-large .large\\:rf-h-3\\/5 {\n height: 60%;\n}\n\n#retorik-container.rf-large .large\\:rf-h-4 {\n height: 1rem;\n}\n\n#retorik-container.rf-large .large\\:rf-h-5 {\n height: 1.25rem;\n}\n\n#retorik-container.rf-large .large\\:rf-h-6 {\n height: 1.5rem;\n}\n\n#retorik-container.rf-large .large\\:rf-h-8 {\n height: 2rem;\n}\n\n#retorik-container.rf-large .large\\:rf-h-\\[60vh\\] {\n height: 60vh;\n}\n\n#retorik-container.rf-large .large\\:rf-h-auto {\n height: auto;\n}\n\n#retorik-container.rf-large .large\\:rf-h-full {\n height: 100%;\n}\n\n#retorik-container.rf-large .large\\:rf-max-h-28 {\n max-height: 7rem;\n}\n\n#retorik-container.rf-large .large\\:rf-w-1\\/8 {\n width: 12.5%;\n}\n\n#retorik-container.rf-large .large\\:rf-w-14 {\n width: 3.5rem;\n}\n\n#retorik-container.rf-large .large\\:rf-w-16 {\n width: 4rem;\n}\n\n#retorik-container.rf-large .large\\:rf-w-3\\/5 {\n width: 60%;\n}\n\n#retorik-container.rf-large .large\\:rf-w-4 {\n width: 1rem;\n}\n\n#retorik-container.rf-large .large\\:rf-w-5 {\n width: 1.25rem;\n}\n\n#retorik-container.rf-large .large\\:rf-w-6 {\n width: 1.5rem;\n}\n\n#retorik-container.rf-large .large\\:rf-w-8 {\n width: 2rem;\n}\n\n#retorik-container.rf-large .large\\:rf-w-fit {\n width: fit-content;\n}\n\n#retorik-container.rf-large .large\\:rf-w-full {\n width: 100%;\n}\n\n#retorik-container.rf-large .large\\:rf-min-w-1\\/2 {\n min-width: 50%;\n}\n\n#retorik-container.rf-large .large\\:rf-min-w-1\\/8 {\n min-width: 12.5%;\n}\n\n#retorik-container.rf-large .large\\:rf-min-w-16 {\n min-width: 4rem;\n}\n\n#retorik-container.rf-large .large\\:rf-min-w-3\\/5 {\n min-width: 60%;\n}\n\n#retorik-container.rf-large .large\\:rf-max-w-1\\/8 {\n max-width: 12.5%;\n}\n\n#retorik-container.rf-large .large\\:rf-max-w-\\[12rem\\] {\n max-width: 12rem;\n}\n\n#retorik-container.rf-large .large\\:rf-max-w-full {\n max-width: 100%;\n}\n\n#retorik-container.rf-large .large\\:rf-grid-cols-5 {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n}\n\n#retorik-container.rf-large .large\\:rf-flex-row {\n flex-direction: row;\n}\n\n#retorik-container.rf-large .large\\:rf-flex-col {\n flex-direction: column;\n}\n\n#retorik-container.rf-large .large\\:rf-items-baseline {\n align-items: baseline;\n}\n\n#retorik-container.rf-large .large\\:rf-justify-start {\n justify-content: flex-start;\n}\n\n#retorik-container.rf-large .large\\:rf-gap-1 {\n gap: .25rem;\n}\n\n#retorik-container.rf-large .large\\:rf-gap-3 {\n gap: .75rem;\n}\n\n#retorik-container.rf-large .large\\:rf-gap-4 {\n gap: 1rem;\n}\n\n#retorik-container.rf-large .large\\:rf-gap-6 {\n gap: 1.5rem;\n}\n\n#retorik-container.rf-large .large\\:rf-overflow-y-scroll {\n overflow-y: scroll;\n}\n\n#retorik-container.rf-large .large\\:rf-border-t-0 {\n border-top-width: 0;\n}\n\n#retorik-container.rf-large .large\\:rf-bg-truewhite {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n}\n\n#retorik-container.rf-large .large\\:rf-p-4 {\n padding: 1rem;\n}\n\n#retorik-container.rf-large .large\\:rf-p-\\[25px\\] {\n padding: 25px;\n}\n\n#retorik-container.rf-large .large\\:rf-p-min1 {\n padding: .1rem;\n}\n\n#retorik-container.rf-large .large\\:rf-px-0 {\n padding-left: 0;\n padding-right: 0;\n}\n\n#retorik-container.rf-large .large\\:rf-px-16 {\n padding-left: 4rem;\n padding-right: 4rem;\n}\n\n#retorik-container.rf-large .large\\:rf-px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n\n#retorik-container.rf-large .large\\:rf-px-5, #retorik-container.rf-large .large\\:rf-px-6 {\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n}\n\n#retorik-container.rf-large .large\\:rf-px-8 {\n padding-left: 2rem;\n padding-right: 2rem;\n}\n\n#retorik-container.rf-large .large\\:rf-py-0 {\n padding-top: 0;\n padding-bottom: 0;\n}\n\n#retorik-container.rf-large .large\\:rf-py-1 {\n padding-top: .25rem;\n padding-bottom: .25rem;\n}\n\n#retorik-container.rf-large .large\\:rf-py-2 {\n padding-top: .5rem;\n padding-bottom: .5rem;\n}\n\n#retorik-container.rf-large .large\\:rf-py-3 {\n padding-top: .75rem;\n padding-bottom: .75rem;\n}\n\n#retorik-container.rf-large .large\\:rf-py-4 {\n padding-top: 1rem;\n padding-bottom: 1rem;\n}\n\n#retorik-container.rf-large .large\\:rf-pb-16 {\n padding-bottom: 4rem;\n}\n\n#retorik-container.rf-large .large\\:rf-pl-4 {\n padding-left: 1rem;\n}\n\n#retorik-container.rf-large .large\\:rf-pr-4 {\n padding-right: 1rem;\n}\n\n#retorik-container.rf-large .large\\:rf-pt-16 {\n padding-top: 4rem;\n}\n\n#retorik-container.rf-large .large\\:rf-pt-3 {\n padding-top: .75rem;\n}\n\n#retorik-container.rf-large .large\\:rf-text-5xl {\n font-size: 3rem;\n line-height: 1;\n}\n\n#retorik-container.rf-large .large\\:rf-text-6xl {\n font-size: 3.75rem;\n line-height: 1;\n}\n\n#retorik-container.rf-large .large\\:rf-text-base {\n font-size: 1rem;\n line-height: 1.5rem;\n}\n\n#retorik-container.rf-large .large\\:rf-text-basecustom {\n font-size: 1rem;\n line-height: 1.3rem;\n}\n\n#retorik-container.rf-large .large\\:rf-text-sm {\n font-size: .875rem;\n line-height: 1.25rem;\n}\n\n#retorik-container.rf-large .large\\:rf-uppercase {\n text-transform: uppercase;\n}\n\n#retorik-container.rf-tactile .tactile\\:rf-h-4 {\n height: 1rem;\n}\n\n#retorik-container.rf-tactile .tactile\\:rf-h-6 {\n height: 1.5rem;\n}\n\n#retorik-container.rf-tactile .tactile\\:rf-w-6 {\n width: 1.5rem;\n}\n\n#retorik-container.rf-tactile .tactile\\:rf-pt-1\\/5 {\n padding-top: 20%;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-bottom-\\[25vh\\] {\n bottom: 25vh;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-left-4 {\n left: 1rem;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-top-4 {\n top: 1rem;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-col-span-full {\n grid-column: 1 / -1;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-col-start-1 {\n grid-column-start: 1;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-col-start-2 {\n grid-column-start: 2;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-col-end-8 {\n grid-column-end: 8;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-col-end-9 {\n grid-column-end: 9;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-row-span-4 {\n grid-row: span 4 / span 4;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-row-span-6 {\n grid-row: span 6 / span 6;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-row-start-5 {\n grid-row-start: 5;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-row-start-7 {\n grid-row-start: 7;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-row-end-11 {\n grid-row-end: 11;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-row-end-7 {\n grid-row-end: 7;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-mt-4 {\n margin-top: 1rem;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-mt-\\[20vh\\] {\n margin-top: 20vh;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-mt-\\[25vh\\] {\n margin-top: 25vh;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-block {\n display: block;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-hidden {\n display: none;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-h-1\\/2 {\n height: 50%;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-h-14 {\n height: 3.5rem;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-h-24 {\n height: 6rem;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-h-6 {\n height: 1.5rem;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-h-\\[50vh\\] {\n height: 50vh;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-max-h-11\\/12 {\n max-height: 91.67%;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-max-h-36 {\n max-height: 9rem;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-max-h-\\[18vh\\] {\n max-height: 18vh;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-max-h-\\[30vh\\] {\n max-height: 30vh;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-w-1\\/2 {\n width: 50%;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-w-14 {\n width: 3.5rem;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-w-16 {\n width: 4rem;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-w-24 {\n width: 6rem;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-w-4\\/9 {\n width: 45%;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-w-6 {\n width: 1.5rem;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-min-w-24 {\n min-width: 6rem;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-min-w-4\\/9 {\n min-width: 45%;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-max-w-2\\/3 {\n max-width: 66.67%;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-max-w-\\[60\\%\\] {\n max-width: 60%;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-flex-row {\n flex-direction: row;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-justify-center {\n justify-content: center;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-gap-6 {\n gap: 1.5rem;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-self-end {\n align-self: flex-end;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-border-t {\n border-top-width: 1px;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-border-t-menuBorder {\n --tw-border-opacity: 1;\n border-top-color: rgb(224 225 231 / var(--tw-border-opacity));\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-py-4 {\n padding-top: 1rem;\n padding-bottom: 1rem;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-py-5 {\n padding-top: 1.5rem;\n padding-bottom: 1.5rem;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-pl-0 {\n padding-left: 0;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-pt-8 {\n padding-top: 2rem;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-pt-\\[16\\.67\\%\\] {\n padding-top: 16.67%;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-pt-\\[20vh\\] {\n padding-top: 20vh;\n}\n\n#retorik-container.rf-large.rf-portrait .large-vertical\\:rf-text-basecustomuppercase {\n font-size: 1rem;\n line-height: 1.1rem;\n}\n\n#retorik-container.rf-large.rf-tactile .large-tactile\\:rf-mt-0 {\n margin-top: 0;\n}\n\n#retorik-container.rf-large.rf-tactile .large-tactile\\:rf-flex {\n display: flex;\n}\n\n#retorik-container.rf-large.rf-tactile .large-tactile\\:rf-hidden {\n display: none;\n}\n\n#retorik-container.rf-large:not(.rf-portrait) .desktop\\:rf-h-full {\n height: 100%;\n}\n\n@media (height <= 700px) and (width <= 300px) {\n .small-mobile\\:rf-row-span-6 {\n grid-row: span 6 / span 6;\n }\n\n .small-mobile\\:rf-row-span-7 {\n grid-row: span 7 / span 7;\n }\n\n .small-mobile\\:rf-row-start-5 {\n grid-row-start: 5;\n }\n}\n";
75
75
 
76
76
 
77
77
  var $5e8567c898177618$exports = {};
@@ -138,6 +138,8 @@ var $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233;
138
138
  $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233[$f5ca62954d1f1f5b$export$ec1e04e4e5ef8233["borne"] = 2] = "borne";
139
139
  $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233[$f5ca62954d1f1f5b$export$ec1e04e4e5ef8233["landscape"] = 3] = "landscape";
140
140
  $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233[$f5ca62954d1f1f5b$export$ec1e04e4e5ef8233["widget"] = 4] = "widget";
141
+ $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233[$f5ca62954d1f1f5b$export$ec1e04e4e5ef8233["widgetLandscape"] = 5] = "widgetLandscape";
142
+ $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233[$f5ca62954d1f1f5b$export$ec1e04e4e5ef8233["widgetBorne"] = 6] = "widgetBorne";
141
143
  })($f5ca62954d1f1f5b$export$ec1e04e4e5ef8233 || ($f5ca62954d1f1f5b$export$ec1e04e4e5ef8233 = {}));
142
144
  var $f5ca62954d1f1f5b$export$bd7313a2f8345cae;
143
145
  (function($f5ca62954d1f1f5b$export$bd7313a2f8345cae) {
@@ -255,6 +257,19 @@ const $cd0e91e00b0900ed$export$78f16669b353a880 = [
255
257
  (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).mobile,
256
258
  (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).widget
257
259
  ];
260
+ const $cd0e91e00b0900ed$export$909f4c209eb70365 = [
261
+ (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).widget,
262
+ (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).widgetBorne,
263
+ (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).widgetLandscape
264
+ ];
265
+ const $cd0e91e00b0900ed$export$baf53ca377ebf861 = [
266
+ (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).landscape,
267
+ (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).widgetLandscape
268
+ ];
269
+ const $cd0e91e00b0900ed$export$a8576d98c9c928de = [
270
+ (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).borne,
271
+ (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).widgetBorne
272
+ ];
258
273
  const $cd0e91e00b0900ed$export$c0da64553318f2cb = {
259
274
  primary: "#00D7FF",
260
275
  secondary: "#1999B1",
@@ -568,7 +583,7 @@ const $3792187fd212489a$var$getOpeningParenthesis = (text, index)=>{
568
583
 
569
584
  const $2e5b8b358de6cd42$var$regexLink = /<\/?a([^>])+>/g;
570
585
  const $2e5b8b358de6cd42$var$regexImg = /<\/?img([^>])+>/g;
571
- const $2e5b8b358de6cd42$export$1b8fbc30fb87d9aa = (text)=>{
586
+ const $2e5b8b358de6cd42$export$1b8fbc30fb87d9aa = (text, skipAttachments)=>{
572
587
  const md = new (0, $b3y7N$markdownit)({
573
588
  breaks: true,
574
589
  html: true,
@@ -585,8 +600,10 @@ const $2e5b8b358de6cd42$export$1b8fbc30fb87d9aa = (text)=>{
585
600
  // text = `(Como estas ?)[lang:"es-ES"][1s] Parti - pour le test - (greenage)[lang:"en-US"]. Mettons une image ![image](images/bertranges.jpg).[500ms] En anglais, (parce-que en Français ce n'est pas ça...) greenage se dit (greenage)[lang:"en-US"]. Fin de message (aufwiedersehen)[lang:"de-DE"]`
586
601
  // text = `(Le petit chien va dans sa niche car bien escalader archiduchesse long fiente)[ipa:"lə pəti ʃjɛ̃ va dɑ̃ sa niʃ kaʁ bjɛ̃ ɛskalade ar̥ʃidyʃɛːs lɔ̃ fjɑ̃t"]`
587
602
  const speechMarkdownReplacedData = (0, $3792187fd212489a$export$f355fac925ad880f)(text);
588
- const parsed = md.parseInline(speechMarkdownReplacedData.text);
589
- parsed.length > 0 && (attachmentsToCreate = $2e5b8b358de6cd42$var$createNewAttachments(parsed[0].children));
603
+ if (!skipAttachments) {
604
+ const parsed = md.parseInline(speechMarkdownReplacedData.text);
605
+ parsed.length && (attachmentsToCreate = $2e5b8b358de6cd42$var$createNewAttachments(parsed[0].children));
606
+ }
590
607
  const textWithHtmlTags = md.render(text);
591
608
  // Strip html tags from rendered text
592
609
  const newText = $2e5b8b358de6cd42$var$stripHtml(textWithHtmlTags);
@@ -948,6 +965,7 @@ const $3426110875af99d0$var$initialState = {
948
965
  currentNewsActivity: undefined,
949
966
  retorikNewsEnded: false,
950
967
  userIsTyping: false,
968
+ userIsSwiping: false,
951
969
  askedForKioskParametersOpening: false,
952
970
  detailedAttachmentTriggers: [
953
971
  {
@@ -962,8 +980,12 @@ const $3426110875af99d0$var$initialState = {
962
980
  }
963
981
  ],
964
982
  modalFullscreenContent: null,
965
- printingCallback: null
983
+ printingCallback: null,
984
+ GDPRDisplay: true,
985
+ GDPRWindowData: undefined,
986
+ GDPRUserConsent: false
966
987
  };
988
+ let $3426110875af99d0$var$timer = null;
967
989
  const $3426110875af99d0$export$77e4cc5334565f28 = (0, $b3y7N$create)()(()=>{
968
990
  return $3426110875af99d0$var$initialState;
969
991
  });
@@ -1042,6 +1064,18 @@ const $3426110875af99d0$export$4a471cf3284fc492 = (value)=>{
1042
1064
  userIsTyping: value
1043
1065
  });
1044
1066
  };
1067
+ const $3426110875af99d0$export$19e9368606a5170f = ()=>{
1068
+ $3426110875af99d0$var$timer && clearTimeout($3426110875af99d0$var$timer);
1069
+ $3426110875af99d0$export$77e4cc5334565f28.setState({
1070
+ userIsSwiping: true
1071
+ });
1072
+ // Switch back to false after 2.5s (because test for typing indicator is done every 2s)
1073
+ $3426110875af99d0$var$timer = setTimeout(()=>{
1074
+ $3426110875af99d0$export$77e4cc5334565f28.setState({
1075
+ userIsSwiping: false
1076
+ });
1077
+ }, 2500);
1078
+ };
1045
1079
  const $3426110875af99d0$export$61008920e70c5e8a = ()=>{
1046
1080
  $3426110875af99d0$export$77e4cc5334565f28.setState({
1047
1081
  askedForKioskParametersOpening: true
@@ -1071,6 +1105,21 @@ const $3426110875af99d0$export$7f09d7ad7dbdcd2c = (value)=>{
1071
1105
  printingCallback: value
1072
1106
  });
1073
1107
  };
1108
+ const $3426110875af99d0$export$ff26692bd8e0fbbd = (value)=>{
1109
+ $3426110875af99d0$export$77e4cc5334565f28.setState({
1110
+ GDPRDisplay: value
1111
+ });
1112
+ };
1113
+ const $3426110875af99d0$export$2d640df2114a2d77 = (value)=>{
1114
+ $3426110875af99d0$export$77e4cc5334565f28.setState({
1115
+ GDPRWindowData: value
1116
+ });
1117
+ };
1118
+ const $3426110875af99d0$export$7a09e6b3c59f37ad = (value)=>{
1119
+ $3426110875af99d0$export$77e4cc5334565f28.setState({
1120
+ GDPRUserConsent: value
1121
+ });
1122
+ };
1074
1123
  const $3426110875af99d0$export$93b55f822ac81934 = ()=>{
1075
1124
  $3426110875af99d0$export$77e4cc5334565f28.setState({
1076
1125
  ...$3426110875af99d0$var$initialState
@@ -1089,7 +1138,12 @@ const $04ce41b46d359821$var$initialState = {
1089
1138
  endedActivities: [],
1090
1139
  currentOrLastPlayedActivity: undefined,
1091
1140
  activeRecognitionState: (0, $f5ca62954d1f1f5b$export$3f0071308968cd80).Closed,
1092
- lastRecognitionInterim: ""
1141
+ lastRecognitionInterim: "",
1142
+ streamingReplyToId: null,
1143
+ streamingReplyToIdForText: null,
1144
+ streamingQueue: [],
1145
+ streamingQueueForText: [],
1146
+ currentStreaming: null
1093
1147
  };
1094
1148
  const $04ce41b46d359821$export$f299240efcda25a2 = (0, $b3y7N$create)()(()=>{
1095
1149
  return $04ce41b46d359821$var$initialState;
@@ -1146,6 +1200,69 @@ const $04ce41b46d359821$export$a5c8d6d0ec4b5ccb = (value)=>{
1146
1200
  lastRecognitionInterim: value
1147
1201
  });
1148
1202
  };
1203
+ const $04ce41b46d359821$export$614a80601162ec38 = (value)=>{
1204
+ $04ce41b46d359821$export$f299240efcda25a2.setState({
1205
+ streamingReplyToId: value,
1206
+ streamingReplyToIdForText: value
1207
+ });
1208
+ value === null && $04ce41b46d359821$export$f299240efcda25a2.setState({
1209
+ currentStreaming: null
1210
+ });
1211
+ };
1212
+ const $04ce41b46d359821$export$de8aad637f733113 = (value)=>{
1213
+ $04ce41b46d359821$export$f299240efcda25a2.setState({
1214
+ streamingReplyToIdForText: value
1215
+ });
1216
+ };
1217
+ const $04ce41b46d359821$export$87afd75c41a617d7 = (value)=>{
1218
+ $04ce41b46d359821$export$f299240efcda25a2.setState({
1219
+ streamingQueue: value,
1220
+ streamingQueueForText: value
1221
+ });
1222
+ };
1223
+ const $04ce41b46d359821$export$9a026d007e335fc0 = (value)=>{
1224
+ if (value.replyToId) {
1225
+ // Set replyToId and new queue if replyToId is different from the current one
1226
+ if ($04ce41b46d359821$export$f299240efcda25a2.getState().streamingReplyToId !== value.replyToId) $04ce41b46d359821$export$f299240efcda25a2.setState({
1227
+ streamingReplyToId: value.replyToId,
1228
+ streamingReplyToIdForText: value.replyToId,
1229
+ streamingQueue: [
1230
+ value
1231
+ ],
1232
+ streamingQueueForText: [
1233
+ value
1234
+ ]
1235
+ });
1236
+ else $04ce41b46d359821$export$f299240efcda25a2.setState({
1237
+ streamingQueue: [
1238
+ ...$04ce41b46d359821$export$f299240efcda25a2.getState().streamingQueue,
1239
+ value
1240
+ ],
1241
+ streamingQueueForText: [
1242
+ ...$04ce41b46d359821$export$f299240efcda25a2.getState().streamingQueueForText,
1243
+ value
1244
+ ]
1245
+ });
1246
+ }
1247
+ };
1248
+ const $04ce41b46d359821$export$eb50624bfd363865 = ()=>{
1249
+ const currentQueue = [
1250
+ ...$04ce41b46d359821$export$f299240efcda25a2.getState().streamingQueue
1251
+ ];
1252
+ if (currentQueue.length) {
1253
+ currentQueue.splice(0, 1);
1254
+ $04ce41b46d359821$export$f299240efcda25a2.setState({
1255
+ streamingQueue: [
1256
+ ...currentQueue
1257
+ ]
1258
+ });
1259
+ }
1260
+ };
1261
+ const $04ce41b46d359821$export$d300d9470f5679ba = (value)=>{
1262
+ $04ce41b46d359821$export$f299240efcda25a2.setState({
1263
+ currentStreaming: value
1264
+ });
1265
+ };
1149
1266
  const $04ce41b46d359821$export$b6d2196a3ce412d8 = ()=>{
1150
1267
  $04ce41b46d359821$export$f299240efcda25a2.setState({
1151
1268
  ...$04ce41b46d359821$var$initialState
@@ -1155,6 +1272,7 @@ const $04ce41b46d359821$export$b6d2196a3ce412d8 = ()=>{
1155
1272
 
1156
1273
 
1157
1274
 
1275
+
1158
1276
  const $9b100ac34d01a331$var$initialState = {
1159
1277
  activities: [],
1160
1278
  lastBotActivity: undefined,
@@ -1171,33 +1289,54 @@ const $9b100ac34d01a331$var$initialState = {
1171
1289
  lastUserMessageActivity: undefined,
1172
1290
  queue: [],
1173
1291
  conversationId: null,
1174
- watermark: 0
1292
+ watermark: 0,
1293
+ retrievingConversation: false
1175
1294
  };
1176
1295
  let $9b100ac34d01a331$var$timerRef;
1177
1296
  const $9b100ac34d01a331$export$b56465394e2b1287 = (0, $b3y7N$create)()(()=>{
1178
1297
  return $9b100ac34d01a331$var$initialState;
1179
1298
  });
1180
- const $9b100ac34d01a331$var$addActivity = (activity, resetQueue)=>{
1299
+ const $9b100ac34d01a331$var$addActivity = async (activity, resetQueue)=>{
1181
1300
  const currentState = $9b100ac34d01a331$export$b56465394e2b1287.getState();
1301
+ const shouldNotSetLastBotActivity = currentState.retrievingConversation && !resetQueue;
1302
+ const isBot = activity.from.role === "bot" || activity.replyToId || activity.from.name?.toLowerCase() === "bot";
1182
1303
  if (activity.type === "message") {
1183
- if (activity.from.role === "bot") $9b100ac34d01a331$export$b56465394e2b1287.setState({
1184
- activities: [
1185
- ...currentState.activities,
1186
- activity
1187
- ],
1188
- lastBotActivity: activity,
1189
- messageActivities: [
1190
- ...currentState.messageActivities,
1191
- activity
1192
- ],
1193
- botMessageActivities: [
1194
- ...currentState.botMessageActivities,
1195
- activity
1196
- ],
1197
- lastBotMessageActivity: activity,
1198
- watermark: currentState.watermark + 1
1199
- });
1200
- else $9b100ac34d01a331$export$b56465394e2b1287.setState({
1304
+ if (isBot) {
1305
+ if (currentState.botMessageActivities?.length && activity.replyToId?.substring(activity.replyToId.length - 4) === "0000") // Special process when retrieving conversation from directline : the first activity is delayed by botframwork-webchat and is treated after the other.
1306
+ // We must put this activity back in first place in the array.
1307
+ $9b100ac34d01a331$export$b56465394e2b1287.setState({
1308
+ activities: [
1309
+ activity,
1310
+ ...currentState.activities
1311
+ ],
1312
+ messageActivities: [
1313
+ activity,
1314
+ ...currentState.messageActivities
1315
+ ],
1316
+ botMessageActivities: [
1317
+ activity,
1318
+ ...currentState.botMessageActivities
1319
+ ],
1320
+ watermark: currentState.watermark + 1
1321
+ });
1322
+ else $9b100ac34d01a331$export$b56465394e2b1287.setState({
1323
+ activities: [
1324
+ ...currentState.activities,
1325
+ activity
1326
+ ],
1327
+ lastBotActivity: shouldNotSetLastBotActivity ? undefined : activity,
1328
+ messageActivities: [
1329
+ ...currentState.messageActivities,
1330
+ activity
1331
+ ],
1332
+ botMessageActivities: [
1333
+ ...currentState.botMessageActivities,
1334
+ activity
1335
+ ],
1336
+ lastBotMessageActivity: currentState.retrievingConversation ? resetQueue ? activity : undefined : activity,
1337
+ watermark: currentState.watermark + 1
1338
+ });
1339
+ } else $9b100ac34d01a331$export$b56465394e2b1287.setState({
1201
1340
  activities: [
1202
1341
  ...currentState.activities,
1203
1342
  activity
@@ -1214,12 +1353,12 @@ const $9b100ac34d01a331$var$addActivity = (activity, resetQueue)=>{
1214
1353
  watermark: currentState.watermark + 1
1215
1354
  });
1216
1355
  } else if (activity.type === "event") {
1217
- if (activity.from.role === "bot") $9b100ac34d01a331$export$b56465394e2b1287.setState({
1356
+ if (isBot) $9b100ac34d01a331$export$b56465394e2b1287.setState({
1218
1357
  activities: [
1219
1358
  ...currentState.activities,
1220
1359
  activity
1221
1360
  ],
1222
- lastBotActivity: activity,
1361
+ lastBotActivity: shouldNotSetLastBotActivity ? undefined : activity,
1223
1362
  eventActivities: [
1224
1363
  ...currentState.eventActivities,
1225
1364
  activity
@@ -1243,24 +1382,23 @@ const $9b100ac34d01a331$var$addActivity = (activity, resetQueue)=>{
1243
1382
  watermark: currentState.watermark + 1
1244
1383
  });
1245
1384
  }
1246
- if (resetQueue) $9b100ac34d01a331$export$b56465394e2b1287.setState({
1247
- queue: []
1248
- });
1385
+ if (resetQueue) {
1386
+ $9b100ac34d01a331$export$b56465394e2b1287.setState({
1387
+ queue: []
1388
+ });
1389
+ $9b100ac34d01a331$export$b56465394e2b1287.setState({
1390
+ retrievingConversation: false
1391
+ });
1392
+ }
1249
1393
  };
1250
1394
  /**
1251
1395
  * Deal with the queue of activities that was formed before.
1252
1396
  * Call again after splicing the first element of the queue every 100ms
1253
1397
  * @param queue Array<RetorikActivity>
1254
- */ const $9b100ac34d01a331$var$addActivitiesFromQueue = (queue)=>{
1255
- if (queue.length > 0) {
1256
- $9b100ac34d01a331$var$addActivity(queue[0]);
1257
- queue.splice(0, 1);
1258
- setTimeout(()=>{
1259
- $9b100ac34d01a331$var$addActivitiesFromQueue(queue);
1260
- }, 100);
1261
- } else $9b100ac34d01a331$export$b56465394e2b1287.setState({
1262
- queue: []
1263
- });
1398
+ */ const $9b100ac34d01a331$var$addActivitiesFromQueue = async (queue)=>{
1399
+ // Keep last id to know when we get the last activity
1400
+ const lastId = queue[queue.length - 1].id;
1401
+ for (const activity of queue)await $9b100ac34d01a331$var$addActivity(activity, activity.id === lastId);
1264
1402
  };
1265
1403
  const $9b100ac34d01a331$var$updateActivities = ()=>{
1266
1404
  const currentState = $9b100ac34d01a331$export$b56465394e2b1287.getState();
@@ -1299,6 +1437,10 @@ const $9b100ac34d01a331$export$210f7e70e69f7df5 = (activity)=>{
1299
1437
  });
1300
1438
  $9b100ac34d01a331$export$f9786f6b1a1e81e3(activity);
1301
1439
  };
1440
+ const $9b100ac34d01a331$export$35bf93b87d9ffb15 = (activity)=>{
1441
+ const retrieving = $9b100ac34d01a331$export$b56465394e2b1287.getState().retrievingConversation;
1442
+ !retrieving && (0, $04ce41b46d359821$export$9a026d007e335fc0)(activity);
1443
+ };
1302
1444
  const $9b100ac34d01a331$export$4365557467e67cdc = (value)=>{
1303
1445
  const currentState = $9b100ac34d01a331$export$b56465394e2b1287.getState();
1304
1446
  // Check directline id to know if we have to reset the activities
@@ -1309,6 +1451,11 @@ const $9b100ac34d01a331$export$4365557467e67cdc = (value)=>{
1309
1451
  conversationId: value
1310
1452
  });
1311
1453
  };
1454
+ const $9b100ac34d01a331$export$d7e4f7861d387c67 = (value)=>{
1455
+ $9b100ac34d01a331$export$b56465394e2b1287.setState({
1456
+ retrievingConversation: value
1457
+ });
1458
+ };
1312
1459
  const $9b100ac34d01a331$export$b7b23f8e09258fa6 = ()=>{
1313
1460
  $9b100ac34d01a331$export$b56465394e2b1287.setState({
1314
1461
  ...$9b100ac34d01a331$var$initialState
@@ -1316,6 +1463,7 @@ const $9b100ac34d01a331$export$b7b23f8e09258fa6 = ()=>{
1316
1463
  };
1317
1464
 
1318
1465
 
1466
+
1319
1467
  const $9a5f0912c55d1da2$var$regexDataCommand = /(\{data-command=")[\p{L}\p{N}\p{Po}\p{Pd}\p{Pc}\s\u0027\u2019]+("\})(<br\s\/>)?/gu;
1320
1468
  const $9a5f0912c55d1da2$var$createCustomStore = (enableConversationCookie, conversationCookieMaxAge, addressData, locale, externalEventHandler, isUsedOnBorne, isRetorikNews)=>{
1321
1469
  return (0, $b3y7N$createStore)({}, ({ dispatch: dispatch })=>(next)=>async (action)=>{
@@ -1358,7 +1506,7 @@ const $9a5f0912c55d1da2$var$createCustomStore = (enableConversationCookie, conve
1358
1506
  }
1359
1507
  case "DIRECT_LINE/POST_ACTIVITY":
1360
1508
  // Prevent typing message from cancelling speech
1361
- if (action.payload?.activity?.type === "typing") return next(action);
1509
+ if (action.payload?.activity?.type === "typing" || action.payload?.activity?.type === "event" && action.payload.activity.name?.toLowerCase().includes("davi.closewindow")) return next(action);
1362
1510
  // Cancel playing utterance if there is one
1363
1511
  (0, $04ce41b46d359821$export$d0df6aec4e971f52)(true);
1364
1512
  // Send pagination and position data in channelData on each activity sent to the chatbot, using local storage to get up to date data
@@ -1399,6 +1547,16 @@ const $9a5f0912c55d1da2$var$createCustomStore = (enableConversationCookie, conve
1399
1547
  break;
1400
1548
  case "DIRECT_LINE/INCOMING_ACTIVITY":
1401
1549
  if (action.payload?.activity?.type === "event" && action.payload?.activity?.name === "EndOfSpeechEvent") return;
1550
+ if (action.payload?.activity?.type === "event" && action.payload?.activity?.name?.toLowerCase() === "davi.streammessageactivity") {
1551
+ if (action.payload.activity.text?.trim().length) {
1552
+ // Create speak field from the text one
1553
+ const processedText = (0, $2e5b8b358de6cd42$export$1b8fbc30fb87d9aa)(action.payload.activity.text, true);
1554
+ action.payload.activity.text = processedText.text;
1555
+ action.payload.activity.speak = processedText.text;
1556
+ (0, $9b100ac34d01a331$export$35bf93b87d9ffb15)(action.payload.activity);
1557
+ }
1558
+ return next(action);
1559
+ }
1402
1560
  // Only process message activities from the bot
1403
1561
  if (action.payload?.activity?.type === "message" && action.payload.activity.from.role === "bot") {
1404
1562
  (0, $3426110875af99d0$export$f03cfde7db70aa27)(false);
@@ -1613,7 +1771,6 @@ const $56b00880a398c953$export$ca8db8ed18ea1d2c = (value)=>{
1613
1771
  });
1614
1772
  };
1615
1773
  const $56b00880a398c953$export$29ec02ff899d2b53 = (value)=>{
1616
- console.log("set layoutChanged", $56b00880a398c953$export$bd22554f31e5f96f.getState().layoutChanged, value);
1617
1774
  $56b00880a398c953$export$bd22554f31e5f96f.setState({
1618
1775
  layoutChanged: value
1619
1776
  });
@@ -1967,27 +2124,27 @@ $f5532c0162518d95$exports = JSON.parse('{"1":"Startseite","2":"Live-Infokanal","
1967
2124
 
1968
2125
 
1969
2126
  var $b3dd0aca05a78c6a$exports = {};
1970
- $b3dd0aca05a78c6a$exports = JSON.parse('{"1":"home","2":"live info channel","3":"weather","4":"emergency numbers","1000":"history","1001":"tutorial","common":{"abort":"abort","all":"all","back":"back","close":"close","continue":"continue","download":"download","downloadsheet":"download this sheet","downloadsheetmobile":"download this sheet on smartphone","filter":"filter","history":"history","lang":"languages","menu":"menu","mode":"mode","needhelp":"Need help ?","parameters":"parameters","print":"print","printsheet":"print this sheet","result":"result","results":"results","singleLang":"language","sound":"sound","submit":"submit","subtitle":"subtitle","tutorial":"tutorial","validate":"validate"},"emergency":{"samu":"maeu","police":"police","firefighter":"firefighters","general":"general","citypolice":"Local police","hospital":"Hospital","homeless":"Homeless (free call)","poison":"Poison Control Center","emergency":"European emergencies"},"error":{"title":"An error occurred","button":"Launch the application again"},"history":{"title":"chat history"},"inputs":{"choose":"Choose an answer"},"language":{"change":"change the language","select":"select the language you want to use"},"link":{"buttontext":"View the document","goto":"Go to address","click":"Click here","scanQR":"by scanning the QrCode"},"loader":{"loader":{"optimal":"For an optimal experience,","classic":"For a more classical experience,","vocal":"I communicate by speaking with the agent.","text":"I communicate by text with the agent."},"modes":{"vocal":"vocal mode","text":"text mode"},"loaderValidation":"Start conversation","locale":"checking language","supported":"checking supported languages","addressdata":"retrieving data","store":"store","directline":"directline","ponyfill":"ponyfill"},"menu":{"message":"Enter your message","allowMicrophone":"Give your browser permission to use microphone to continue","backconversation":"back to the conversation","answer":" answers your questions"},"mobileLandscapePreventer":{"firstline":"For an optimal experience,","secondline":"flip your screen"},"news":{"warningtext":"You are about to access the information channel, the sound of your device will be activated","live":"live","continuous":"continuous"},"poi":{"comment":"customer review","route":"route","nodata":"No content corresponds to your search","openinghours":"Opening hours","prices":"Prices","paymentmethods":"Payment methods","numberofplaces":"number of places","openroutemobile":"open Google Maps route on smartphone","FoodEstablishment":"Where to eat","LodgingBusiness":"Where to sleep","TouristDestination":"What to see","TouristAttraction":"What to do","Product":"Local products","Service":"Services","Event":"Events","City":"Cities","Wine":"Wines"},"suggestion":{"consult":"Check out","thetutorial":"the tutorial"},"template":{"reset":"reset filters","showresults":"Show results","suggestiontitle":"Research suggestions","reminder":"Don\'t forget,\\n I can answer your questions."}}');
2127
+ $b3dd0aca05a78c6a$exports = JSON.parse('{"1":"home","2":"live info channel","3":"weather","4":"emergency numbers","1000":"history","1001":"tutorial","common":{"abort":"abort","all":"all","back":"back","close":"close","continue":"continue","download":"download","downloadsheet":"download this sheet","downloadsheetmobile":"download this sheet on smartphone","filter":"filter","history":"history","lang":"languages","menu":"menu","mode":"mode","needhelp":"Need help ?","parameters":"parameters","print":"print","printsheet":"print this sheet","result":"result","results":"results","singleLang":"language","sound":"sound","submit":"submit","subtitle":"subtitle","tutorial":"tutorial","validate":"validate"},"emergency":{"samu":"maeu","police":"police","firefighter":"firefighters","general":"general","citypolice":"Local police","hospital":"Hospital","homeless":"Homeless (free call)","poison":"Poison Control Center","emergency":"European emergencies"},"error":{"title":"An error occurred","button":"Launch the application again"},"history":{"title":"chat history"},"inputs":{"choose":"Choose an answer"},"language":{"change":"change the language","select":"select the language you want to use"},"link":{"buttontext":"View the document","goto":"Go to address","click":"Click here","scanQR":"by scanning the QrCode"},"loader":{"loader":{"optimal":"For an optimal experience,","classic":"For a more classical experience,","vocal":"I communicate by speaking with the agent.","text":"I communicate by text with the agent."},"modes":{"vocal":"vocal mode","text":"text mode"},"loaderValidation":"Start conversation","locale":"checking language","supported":"checking supported languages","addressdata":"retrieving data","store":"store","directline":"directline","ponyfill":"ponyfill"},"menu":{"message":"Enter your message","allowMicrophone":"Give your browser permission to use microphone to continue","backconversation":"back to the conversation","answer":" answers your questions"},"mobileLandscapePreventer":{"firstline":"For an optimal experience,","secondline":"flip your screen"},"news":{"warningtext":"You are about to access the information channel, the sound of your device will be activated","live":"live","continuous":"continuous"},"poi":{"comment":"customer review","route":"route","nodata":"No content corresponds to your search","openinghours":"Opening hours","prices":"Prices","paymentmethods":"Payment methods","numberofplaces":"number of places","openroutemobile":"open Google Maps route on smartphone","FoodEstablishment":"Where to eat","LodgingBusiness":"Where to sleep","TouristDestination":"What to see","TouristAttraction":"What to do","Product":"Local products","Service":"Services","Event":"Events","City":"Cities","Wine":"Wines"},"suggestion":{"consult":"Check out","thetutorial":"the tutorial"},"template":{"reset":"reset filters","showresults":"Show results","suggestiontitle":"Research suggestions","reminder":"Don\'t forget,\\n I can answer your questions."},"GDPR":{"title":"processing personal data transmitted to the bot","message":"by accepting, you consent that all data transmitted to the chatbot can be used for analysis about the use of the tool, and for the improvement of the knowledge base.\\n\\nYour conversations are kept 6 month before deletion.","link":"open confidency policy","buttonAccept":"I understand and I accept","buttonRefuse":"I refuse","messageAccepted":"your acceptation has been saved","messageRefused":"your refusal has been saved"}}');
1971
2128
 
1972
2129
 
1973
2130
  var $805dfb1ea1403f06$exports = {};
1974
- $805dfb1ea1403f06$exports = JSON.parse('{"1":"home","2":"live info channel","3":"weather","4":"emergency numbers","1000":"history","1001":"tutorial","common":{"abort":"abort","all":"all","back":"back","close":"close","continue":"continue","download":"download","downloadsheet":"download this sheet","downloadsheetmobile":"download this sheet on smartphone","filter":"filter","history":"history","lang":"languages","menu":"menu","mode":"mode","needhelp":"Need help ?","parameters":"parameters","print":"print","printsheet":"print this sheet","result":"result","results":"results","singleLang":"language","sound":"sound","submit":"submit","subtitle":"subtitle","tutorial":"tutorial","validate":"validate"},"emergency":{"samu":"maeu","police":"police","firefighter":"firefighters","general":"general","citypolice":"Local police","hospital":"Hospital","homeless":"Homeless (free call)","poison":"Poison Control Center","emergency":"European emergencies"},"error":{"title":"An error occurred","button":"Launch the application again"},"history":{"title":"chat history"},"inputs":{"choose":"Choose an answer"},"language":{"change":"change the language","select":"select the language you want to use"},"link":{"buttontext":"View the document","goto":"Go to address","click":"Click here","scanQR":"by scanning the QrCode"},"loader":{"loader":{"optimal":"For an optimal experience,","classic":"For a more classical experience,","vocal":"I communicate by speaking with the agent.","text":"I communicate by text with the agent."},"modes":{"vocal":"vocal mode","text":"text mode"},"loaderValidation":"Start conversation","locale":"checking language","supported":"checking supported languages","addressdata":"retrieving data","store":"store","directline":"directline","ponyfill":"ponyfill"},"menu":{"message":"Enter your message","allowMicrophone":"Give your browser permission to use microphone to continue","backconversation":"back to the conversation","answer":" answers your questions"},"mobileLandscapePreventer":{"firstline":"For an optimal experience,","secondline":"flip your screen"},"news":{"warningtext":"You are about to access the information channel, the sound of your device will be activated","live":"live","continuous":"continuous"},"poi":{"comment":"customer review","route":"route","nodata":"No content corresponds to your search","openinghours":"Opening hours","prices":"Prices","paymentmethods":"Payment methods","numberofplaces":"number of places","openroutemobile":"open Google Maps route on smartphone","FoodEstablishment":"Where to eat","LodgingBusiness":"Where to sleep","TouristDestination":"What to see","TouristAttraction":"What to do","Product":"Local products","Service":"Services","Event":"Events","City":"Cities","Wine":"Wines"},"suggestion":{"consult":"Check out","thetutorial":"the tutorial"},"template":{"reset":"reset filters","showresults":"Show results","suggestiontitle":"Research suggestions","reminder":"Don\'t forget,\\n I can answer your questions."}}');
2131
+ $805dfb1ea1403f06$exports = JSON.parse('{"1":"home","2":"live info channel","3":"weather","4":"emergency numbers","1000":"history","1001":"tutorial","common":{"abort":"abort","all":"all","back":"back","close":"close","continue":"continue","download":"download","downloadsheet":"download this sheet","downloadsheetmobile":"download this sheet on smartphone","filter":"filter","history":"history","lang":"languages","menu":"menu","mode":"mode","needhelp":"Need help ?","parameters":"parameters","print":"print","printsheet":"print this sheet","result":"result","results":"results","singleLang":"language","sound":"sound","submit":"submit","subtitle":"subtitle","tutorial":"tutorial","validate":"validate"},"emergency":{"samu":"maeu","police":"police","firefighter":"firefighters","general":"general","citypolice":"Local police","hospital":"Hospital","homeless":"Homeless (free call)","poison":"Poison Control Center","emergency":"European emergencies"},"error":{"title":"An error occurred","button":"Launch the application again"},"history":{"title":"chat history"},"inputs":{"choose":"Choose an answer"},"language":{"change":"change the language","select":"select the language you want to use"},"link":{"buttontext":"View the document","goto":"Go to address","click":"Click here","scanQR":"by scanning the QrCode"},"loader":{"loader":{"optimal":"For an optimal experience,","classic":"For a more classical experience,","vocal":"I communicate by speaking with the agent.","text":"I communicate by text with the agent."},"modes":{"vocal":"vocal mode","text":"text mode"},"loaderValidation":"Start conversation","locale":"checking language","supported":"checking supported languages","addressdata":"retrieving data","store":"store","directline":"directline","ponyfill":"ponyfill"},"menu":{"message":"Enter your message","allowMicrophone":"Give your browser permission to use microphone to continue","backconversation":"back to the conversation","answer":" answers your questions"},"mobileLandscapePreventer":{"firstline":"For an optimal experience,","secondline":"flip your screen"},"news":{"warningtext":"You are about to access the information channel, the sound of your device will be activated","live":"live","continuous":"continuous"},"poi":{"comment":"customer review","route":"route","nodata":"No content corresponds to your search","openinghours":"Opening hours","prices":"Prices","paymentmethods":"Payment methods","numberofplaces":"number of places","openroutemobile":"open Google Maps route on smartphone","FoodEstablishment":"Where to eat","LodgingBusiness":"Where to sleep","TouristDestination":"What to see","TouristAttraction":"What to do","Product":"Local products","Service":"Services","Event":"Events","City":"Cities","Wine":"Wines"},"suggestion":{"consult":"Check out","thetutorial":"the tutorial"},"template":{"reset":"reset filters","showresults":"Show results","suggestiontitle":"Research suggestions","reminder":"Don\'t forget,\\n I can answer your questions."},"GDPR":{"title":"processing personal data transmitted to the bot","message":"by accepting, you consent that all data transmitted to the chatbot can be used for analysis about the use of the tool, and for the improvement of the knowledge base.\\n\\nYour conversations are kept 6 month before deletion.","link":"open confidency policy","buttonAccept":"I understand and I accept","buttonRefuse":"I refuse","messageAccepted":"your acceptation has been saved","messageRefused":"your refusal has been saved"}}');
1975
2132
 
1976
2133
 
1977
2134
  var $6be81e5256c9b8b4$exports = {};
1978
- $6be81e5256c9b8b4$exports = JSON.parse('{"1":"home","2":"live info channel","3":"weather","4":"emergency numbers","1000":"history","1001":"tutorial","common":{"abort":"abort","all":"all","back":"back","close":"close","continue":"continue","download":"download","downloadsheet":"download this sheet","downloadsheetmobile":"download this sheet on smartphone","filter":"filter","history":"history","lang":"languages","menu":"menu","mode":"mode","needhelp":"Need help ?","parameters":"parameters","print":"print","printsheet":"print this sheet","result":"result","results":"results","singleLang":"language","sound":"sound","submit":"submit","subtitle":"subtitle","tutorial":"tutorial","validate":"validate"},"emergency":{"samu":"maeu","police":"police","firefighter":"firefighters","general":"general","citypolice":"Local police","hospital":"Hospital","homeless":"Homeless (free call)","poison":"Poison Control Center","emergency":"European emergencies"},"error":{"title":"An error occurred","button":"Launch the application again"},"history":{"title":"chat history"},"inputs":{"choose":"Choose an answer"},"language":{"change":"change the language","select":"select the language you want to use"},"link":{"buttontext":"View the document","goto":"Go to address","click":"Click here","scanQR":"by scanning the QrCode"},"loader":{"loader":{"optimal":"For an optimal experience,","classic":"For a more classical experience,","vocal":"I communicate by speaking with the agent.","text":"I communicate by text with the agent."},"modes":{"vocal":"vocal mode","text":"text mode"},"loaderValidation":"Start conversation","locale":"checking language","supported":"checking supported languages","addressdata":"retrieving data","store":"store","directline":"directline","ponyfill":"ponyfill"},"menu":{"message":"Enter your message","allowMicrophone":"Give your browser permission to use microphone to continue","backconversation":"back to the conversation","answer":" answers your questions"},"mobileLandscapePreventer":{"firstline":"For an optimal experience,","secondline":"flip your screen"},"news":{"warningtext":"You are about to access the information channel, the sound of your device will be activated","live":"live","continuous":"continuous"},"poi":{"comment":"customer review","route":"route","nodata":"No content corresponds to your search","openinghours":"Opening hours","prices":"Prices","paymentmethods":"Payment methods","numberofplaces":"number of places","openroutemobile":"open Google Maps route on smartphone","FoodEstablishment":"Where to eat","LodgingBusiness":"Where to sleep","TouristDestination":"What to see","TouristAttraction":"What to do","Product":"Local products","Service":"Services","Event":"Events","City":"Cities","Wine":"Wines"},"suggestion":{"consult":"Check out","thetutorial":"the tutorial"},"template":{"reset":"reset filters","showresults":"Show results","suggestiontitle":"Research suggestions","reminder":"Don\'t forget,\\n I can answer your questions."}}');
2135
+ $6be81e5256c9b8b4$exports = JSON.parse('{"1":"home","2":"live info channel","3":"weather","4":"emergency numbers","1000":"history","1001":"tutorial","common":{"abort":"abort","all":"all","back":"back","close":"close","continue":"continue","download":"download","downloadsheet":"download this sheet","downloadsheetmobile":"download this sheet on smartphone","filter":"filter","history":"history","lang":"languages","menu":"menu","mode":"mode","needhelp":"Need help ?","parameters":"parameters","print":"print","printsheet":"print this sheet","result":"result","results":"results","singleLang":"language","sound":"sound","submit":"submit","subtitle":"subtitle","tutorial":"tutorial","validate":"validate"},"emergency":{"samu":"maeu","police":"police","firefighter":"firefighters","general":"general","citypolice":"Local police","hospital":"Hospital","homeless":"Homeless (free call)","poison":"Poison Control Center","emergency":"European emergencies"},"error":{"title":"An error occurred","button":"Launch the application again"},"history":{"title":"chat history"},"inputs":{"choose":"Choose an answer"},"language":{"change":"change the language","select":"select the language you want to use"},"link":{"buttontext":"View the document","goto":"Go to address","click":"Click here","scanQR":"by scanning the QrCode"},"loader":{"loader":{"optimal":"For an optimal experience,","classic":"For a more classical experience,","vocal":"I communicate by speaking with the agent.","text":"I communicate by text with the agent."},"modes":{"vocal":"vocal mode","text":"text mode"},"loaderValidation":"Start conversation","locale":"checking language","supported":"checking supported languages","addressdata":"retrieving data","store":"store","directline":"directline","ponyfill":"ponyfill"},"menu":{"message":"Enter your message","allowMicrophone":"Give your browser permission to use microphone to continue","backconversation":"back to the conversation","answer":" answers your questions"},"mobileLandscapePreventer":{"firstline":"For an optimal experience,","secondline":"flip your screen"},"news":{"warningtext":"You are about to access the information channel, the sound of your device will be activated","live":"live","continuous":"continuous"},"poi":{"comment":"customer review","route":"route","nodata":"No content corresponds to your search","openinghours":"Opening hours","prices":"Prices","paymentmethods":"Payment methods","numberofplaces":"number of places","openroutemobile":"open Google Maps route on smartphone","FoodEstablishment":"Where to eat","LodgingBusiness":"Where to sleep","TouristDestination":"What to see","TouristAttraction":"What to do","Product":"Local products","Service":"Services","Event":"Events","City":"Cities","Wine":"Wines"},"suggestion":{"consult":"Check out","thetutorial":"the tutorial"},"template":{"reset":"reset filters","showresults":"Show results","suggestiontitle":"Research suggestions","reminder":"Don\'t forget,\\n I can answer your questions."},"GDPR":{"title":"processing personal data transmitted to the bot","message":"by accepting, you consent that all data transmitted to the chatbot can be used for analysis about the use of the tool, and for the improvement of the knowledge base.\\n\\nYour conversations are kept 6 month before deletion.","link":"open confidency policy","buttonAccept":"I understand and I accept","buttonRefuse":"I refuse","messageAccepted":"your acceptation has been saved","messageRefused":"your refusal has been saved"}}');
1979
2136
 
1980
2137
 
1981
2138
  var $db29fdcdb09c0bc9$exports = {};
1982
- $db29fdcdb09c0bc9$exports = JSON.parse('{"1":"home","2":"live info channel","3":"weather","4":"emergency numbers","1000":"history","1001":"tutorial","common":{"abort":"abort","all":"all","back":"back","close":"close","continue":"continue","download":"download","downloadsheet":"download this sheet","downloadsheetmobile":"download this sheet on smartphone","filter":"filter","history":"history","lang":"languages","menu":"menu","mode":"mode","needhelp":"Need help ?","parameters":"parameters","print":"print","printsheet":"print this sheet","result":"result","results":"results","singleLang":"language","sound":"sound","submit":"submit","subtitle":"subtitle","tutorial":"tutorial","validate":"validate"},"emergency":{"samu":"maeu","police":"police","firefighter":"firefighters","general":"general","citypolice":"Local police","hospital":"Hospital","homeless":"Homeless (free call)","poison":"Poison Control Center","emergency":"European emergencies"},"error":{"title":"An error occurred","button":"Launch the application again"},"history":{"title":"chat history"},"inputs":{"choose":"Choose an answer"},"language":{"change":"change the language","select":"select the language you want to use"},"link":{"buttontext":"View the document","goto":"Go to address","click":"Click here","scanQR":"by scanning the QrCode"},"loader":{"loader":{"optimal":"For an optimal experience,","classic":"For a more classical experience,","vocal":"I communicate by speaking with the agent.","text":"I communicate by text with the agent."},"modes":{"vocal":"vocal mode","text":"text mode"},"loaderValidation":"Start conversation","locale":"checking language","supported":"checking supported languages","addressdata":"retrieving data","store":"store","directline":"directline","ponyfill":"ponyfill"},"menu":{"message":"Enter your message","allowMicrophone":"Give your browser permission to use microphone to continue","backconversation":"back to the conversation","answer":" answers your questions"},"mobileLandscapePreventer":{"firstline":"For an optimal experience,","secondline":"flip your screen"},"news":{"warningtext":"You are about to access the information channel, the sound of your device will be activated","live":"live","continuous":"continuous"},"poi":{"comment":"customer review","route":"route","nodata":"No content corresponds to your search","openinghours":"Opening hours","prices":"Prices","paymentmethods":"Payment methods","numberofplaces":"number of places","openroutemobile":"open Google Maps route on smartphone","FoodEstablishment":"Where to eat","LodgingBusiness":"Where to sleep","TouristDestination":"What to see","TouristAttraction":"What to do","Product":"Local products","Service":"Services","Event":"Events","City":"Cities","Wine":"Wines"},"suggestion":{"consult":"Check out","thetutorial":"the tutorial"},"template":{"reset":"reset filters","showresults":"Show results","suggestiontitle":"Research suggestions","reminder":"Don\'t forget,\\n I can answer your questions."}}');
2139
+ $db29fdcdb09c0bc9$exports = JSON.parse('{"1":"home","2":"live info channel","3":"weather","4":"emergency numbers","1000":"history","1001":"tutorial","common":{"abort":"abort","all":"all","back":"back","close":"close","continue":"continue","download":"download","downloadsheet":"download this sheet","downloadsheetmobile":"download this sheet on smartphone","filter":"filter","history":"history","lang":"languages","menu":"menu","mode":"mode","needhelp":"Need help ?","parameters":"parameters","print":"print","printsheet":"print this sheet","result":"result","results":"results","singleLang":"language","sound":"sound","submit":"submit","subtitle":"subtitle","tutorial":"tutorial","validate":"validate"},"emergency":{"samu":"maeu","police":"police","firefighter":"firefighters","general":"general","citypolice":"Local police","hospital":"Hospital","homeless":"Homeless (free call)","poison":"Poison Control Center","emergency":"European emergencies"},"error":{"title":"An error occurred","button":"Launch the application again"},"history":{"title":"chat history"},"inputs":{"choose":"Choose an answer"},"language":{"change":"change the language","select":"select the language you want to use"},"link":{"buttontext":"View the document","goto":"Go to address","click":"Click here","scanQR":"by scanning the QrCode"},"loader":{"loader":{"optimal":"For an optimal experience,","classic":"For a more classical experience,","vocal":"I communicate by speaking with the agent.","text":"I communicate by text with the agent."},"modes":{"vocal":"vocal mode","text":"text mode"},"loaderValidation":"Start conversation","locale":"checking language","supported":"checking supported languages","addressdata":"retrieving data","store":"store","directline":"directline","ponyfill":"ponyfill"},"menu":{"message":"Enter your message","allowMicrophone":"Give your browser permission to use microphone to continue","backconversation":"back to the conversation","answer":" answers your questions"},"mobileLandscapePreventer":{"firstline":"For an optimal experience,","secondline":"flip your screen"},"news":{"warningtext":"You are about to access the information channel, the sound of your device will be activated","live":"live","continuous":"continuous"},"poi":{"comment":"customer review","route":"route","nodata":"No content corresponds to your search","openinghours":"Opening hours","prices":"Prices","paymentmethods":"Payment methods","numberofplaces":"number of places","openroutemobile":"open Google Maps route on smartphone","FoodEstablishment":"Where to eat","LodgingBusiness":"Where to sleep","TouristDestination":"What to see","TouristAttraction":"What to do","Product":"Local products","Service":"Services","Event":"Events","City":"Cities","Wine":"Wines"},"suggestion":{"consult":"Check out","thetutorial":"the tutorial"},"template":{"reset":"reset filters","showresults":"Show results","suggestiontitle":"Research suggestions","reminder":"Don\'t forget,\\n I can answer your questions."},"GDPR":{"title":"processing personal data transmitted to the bot","message":"by accepting, you consent that all data transmitted to the chatbot can be used for analysis about the use of the tool, and for the improvement of the knowledge base.\\n\\nYour conversations are kept 6 month before deletion.","link":"open confidency policy","buttonAccept":"I understand and I accept","buttonRefuse":"I refuse","messageAccepted":"your acceptation has been saved","messageRefused":"your refusal has been saved"}}');
1983
2140
 
1984
2141
 
1985
2142
  var $56de26114d3f5c4e$exports = {};
1986
- $56de26114d3f5c4e$exports = JSON.parse('{"1":"home","2":"live info channel","3":"weather","4":"emergency numbers","1000":"history","1001":"tutorial","common":{"abort":"abort","all":"all","back":"back","close":"close","continue":"continue","download":"download","downloadsheet":"download this sheet","downloadsheetmobile":"download this sheet on smartphone","filter":"filter","history":"history","lang":"languages","menu":"menu","mode":"mode","needhelp":"Need help ?","parameters":"parameters","print":"print","printsheet":"print this sheet","result":"result","results":"results","singleLang":"language","sound":"sound","submit":"submit","subtitle":"subtitle","tutorial":"tutorial","validate":"validate"},"emergency":{"samu":"maeu","police":"police","firefighter":"firefighters","general":"general","citypolice":"Local police","hospital":"Hospital","homeless":"Homeless (free call)","poison":"Poison Control Center","emergency":"European emergencies"},"error":{"title":"An error occurred","button":"Launch the application again"},"history":{"title":"chat history"},"inputs":{"choose":"Choose an answer"},"language":{"change":"change the language","select":"select the language you want to use"},"link":{"buttontext":"View the document","goto":"Go to address","click":"Click here","scanQR":"by scanning the QrCode"},"loader":{"loader":{"optimal":"For an optimal experience,","classic":"For a more classical experience,","vocal":"I communicate by speaking with the agent.","text":"I communicate by text with the agent."},"modes":{"vocal":"vocal mode","text":"text mode"},"loaderValidation":"Start conversation","locale":"checking language","supported":"checking supported languages","addressdata":"retrieving data","store":"store","directline":"directline","ponyfill":"ponyfill"},"menu":{"message":"Enter your message","allowMicrophone":"Give your browser permission to use microphone to continue","backconversation":"back to the conversation","answer":" answers your questions"},"mobileLandscapePreventer":{"firstline":"For an optimal experience,","secondline":"flip your screen"},"news":{"warningtext":"You are about to access the information channel, the sound of your device will be activated","live":"live","continuous":"continuous"},"poi":{"comment":"customer review","route":"route","nodata":"No content corresponds to your search","openinghours":"Opening hours","prices":"Prices","paymentmethods":"Payment methods","numberofplaces":"number of places","openroutemobile":"open Google Maps route on smartphone","FoodEstablishment":"Where to eat","LodgingBusiness":"Where to sleep","TouristDestination":"What to see","TouristAttraction":"What to do","Product":"Local products","Service":"Services","Event":"Events","City":"Cities","Wine":"Wines"},"suggestion":{"consult":"Check out","thetutorial":"the tutorial"},"template":{"reset":"reset filters","showresults":"Show results","suggestiontitle":"Research suggestions","reminder":"Don\'t forget,\\n I can answer your questions."}}');
2143
+ $56de26114d3f5c4e$exports = JSON.parse('{"1":"home","2":"live info channel","3":"weather","4":"emergency numbers","1000":"history","1001":"tutorial","common":{"abort":"abort","all":"all","back":"back","close":"close","continue":"continue","download":"download","downloadsheet":"download this sheet","downloadsheetmobile":"download this sheet on smartphone","filter":"filter","history":"history","lang":"languages","menu":"menu","mode":"mode","needhelp":"Need help ?","parameters":"parameters","print":"print","printsheet":"print this sheet","result":"result","results":"results","singleLang":"language","sound":"sound","submit":"submit","subtitle":"subtitle","tutorial":"tutorial","validate":"validate"},"emergency":{"samu":"maeu","police":"police","firefighter":"firefighters","general":"general","citypolice":"Local police","hospital":"Hospital","homeless":"Homeless (free call)","poison":"Poison Control Center","emergency":"European emergencies"},"error":{"title":"An error occurred","button":"Launch the application again"},"history":{"title":"chat history"},"inputs":{"choose":"Choose an answer"},"language":{"change":"change the language","select":"select the language you want to use"},"link":{"buttontext":"View the document","goto":"Go to address","click":"Click here","scanQR":"by scanning the QrCode"},"loader":{"loader":{"optimal":"For an optimal experience,","classic":"For a more classical experience,","vocal":"I communicate by speaking with the agent.","text":"I communicate by text with the agent."},"modes":{"vocal":"vocal mode","text":"text mode"},"loaderValidation":"Start conversation","locale":"checking language","supported":"checking supported languages","addressdata":"retrieving data","store":"store","directline":"directline","ponyfill":"ponyfill"},"menu":{"message":"Enter your message","allowMicrophone":"Give your browser permission to use microphone to continue","backconversation":"back to the conversation","answer":" answers your questions"},"mobileLandscapePreventer":{"firstline":"For an optimal experience,","secondline":"flip your screen"},"news":{"warningtext":"You are about to access the information channel, the sound of your device will be activated","live":"live","continuous":"continuous"},"poi":{"comment":"customer review","route":"route","nodata":"No content corresponds to your search","openinghours":"Opening hours","prices":"Prices","paymentmethods":"Payment methods","numberofplaces":"number of places","openroutemobile":"open Google Maps route on smartphone","FoodEstablishment":"Where to eat","LodgingBusiness":"Where to sleep","TouristDestination":"What to see","TouristAttraction":"What to do","Product":"Local products","Service":"Services","Event":"Events","City":"Cities","Wine":"Wines"},"suggestion":{"consult":"Check out","thetutorial":"the tutorial"},"template":{"reset":"reset filters","showresults":"Show results","suggestiontitle":"Research suggestions","reminder":"Don\'t forget,\\n I can answer your questions."},"GDPR":{"title":"processing personal data transmitted to the bot","message":"by accepting, you consent that all data transmitted to the chatbot can be used for analysis about the use of the tool, and for the improvement of the knowledge base.\\n\\nYour conversations are kept 6 month before deletion.","link":"open confidency policy","buttonAccept":"I understand and I accept","buttonRefuse":"I refuse","messageAccepted":"your acceptation has been saved","messageRefused":"your refusal has been saved"}}');
1987
2144
 
1988
2145
 
1989
2146
  var $a6071e51e9c29521$exports = {};
1990
- $a6071e51e9c29521$exports = JSON.parse('{"1":"home","2":"live info channel","3":"weather","4":"emergency numbers","1000":"history","1001":"tutorial","common":{"abort":"abort","all":"all","back":"back","close":"close","continue":"continue","download":"download","downloadsheet":"download this sheet","downloadsheetmobile":"download this sheet on smartphone","filter":"filter","history":"history","lang":"languages","menu":"menu","mode":"mode","needhelp":"Need help ?","parameters":"parameters","print":"print","printsheet":"print this sheet","result":"result","results":"results","singleLang":"language","sound":"sound","submit":"submit","subtitle":"subtitle","tutorial":"tutorial","validate":"validate"},"emergency":{"samu":"maeu","police":"police","firefighter":"firefighters","general":"general","citypolice":"Local police","hospital":"Hospital","homeless":"Homeless (free call)","poison":"Poison Control Center","emergency":"European emergencies"},"error":{"title":"An error occurred","button":"Launch the application again"},"history":{"title":"chat history"},"inputs":{"choose":"Choose an answer"},"language":{"change":"change the language","select":"select the language you want to use"},"link":{"buttontext":"View the document","goto":"Go to address","click":"Click here","scanQR":"by scanning the QrCode"},"loader":{"loader":{"optimal":"For an optimal experience,","classic":"For a more classical experience,","vocal":"I communicate by speaking with the agent.","text":"I communicate by text with the agent."},"modes":{"vocal":"vocal mode","text":"text mode"},"loaderValidation":"Start conversation","locale":"checking language","supported":"checking supported languages","addressdata":"retrieving data","store":"store","directline":"directline","ponyfill":"ponyfill"},"menu":{"message":"Enter your message","allowMicrophone":"Give your browser permission to use microphone to continue","backconversation":"back to the conversation","answer":" answers your questions"},"mobileLandscapePreventer":{"firstline":"For an optimal experience,","secondline":"flip your screen"},"news":{"warningtext":"You are about to access the information channel, the sound of your device will be activated","live":"live","continuous":"continuous"},"poi":{"comment":"customer review","route":"route","nodata":"No content corresponds to your search","openinghours":"Opening hours","prices":"Prices","paymentmethods":"Payment methods","numberofplaces":"number of places","openroutemobile":"open Google Maps route on smartphone","FoodEstablishment":"Where to eat","LodgingBusiness":"Where to sleep","TouristDestination":"What to see","TouristAttraction":"What to do","Product":"Local products","Service":"Services","Event":"Events","City":"Cities","Wine":"Wines"},"suggestion":{"consult":"Check out","thetutorial":"the tutorial"},"template":{"reset":"reset filters","showresults":"Show results","suggestiontitle":"Research suggestions","reminder":"Don\'t forget,\\n I can answer your questions."}}');
2147
+ $a6071e51e9c29521$exports = JSON.parse('{"1":"home","2":"live info channel","3":"weather","4":"emergency numbers","1000":"history","1001":"tutorial","common":{"abort":"abort","all":"all","back":"back","close":"close","continue":"continue","download":"download","downloadsheet":"download this sheet","downloadsheetmobile":"download this sheet on smartphone","filter":"filter","history":"history","lang":"languages","menu":"menu","mode":"mode","needhelp":"Need help ?","parameters":"parameters","print":"print","printsheet":"print this sheet","result":"result","results":"results","singleLang":"language","sound":"sound","submit":"submit","subtitle":"subtitle","tutorial":"tutorial","validate":"validate"},"emergency":{"samu":"maeu","police":"police","firefighter":"firefighters","general":"general","citypolice":"Local police","hospital":"Hospital","homeless":"Homeless (free call)","poison":"Poison Control Center","emergency":"European emergencies"},"error":{"title":"An error occurred","button":"Launch the application again"},"history":{"title":"chat history"},"inputs":{"choose":"Choose an answer"},"language":{"change":"change the language","select":"select the language you want to use"},"link":{"buttontext":"View the document","goto":"Go to address","click":"Click here","scanQR":"by scanning the QrCode"},"loader":{"loader":{"optimal":"For an optimal experience,","classic":"For a more classical experience,","vocal":"I communicate by speaking with the agent.","text":"I communicate by text with the agent."},"modes":{"vocal":"vocal mode","text":"text mode"},"loaderValidation":"Start conversation","locale":"checking language","supported":"checking supported languages","addressdata":"retrieving data","store":"store","directline":"directline","ponyfill":"ponyfill"},"menu":{"message":"Enter your message","allowMicrophone":"Give your browser permission to use microphone to continue","backconversation":"back to the conversation","answer":" answers your questions"},"mobileLandscapePreventer":{"firstline":"For an optimal experience,","secondline":"flip your screen"},"news":{"warningtext":"You are about to access the information channel, the sound of your device will be activated","live":"live","continuous":"continuous"},"poi":{"comment":"customer review","route":"route","nodata":"No content corresponds to your search","openinghours":"Opening hours","prices":"Prices","paymentmethods":"Payment methods","numberofplaces":"number of places","openroutemobile":"open Google Maps route on smartphone","FoodEstablishment":"Where to eat","LodgingBusiness":"Where to sleep","TouristDestination":"What to see","TouristAttraction":"What to do","Product":"Local products","Service":"Services","Event":"Events","City":"Cities","Wine":"Wines"},"suggestion":{"consult":"Check out","thetutorial":"the tutorial"},"template":{"reset":"reset filters","showresults":"Show results","suggestiontitle":"Research suggestions","reminder":"Don\'t forget,\\n I can answer your questions."},"GDPR":{"title":"processing personal data transmitted to the bot","message":"by accepting, you consent that all data transmitted to the chatbot can be used for analysis about the use of the tool, and for the improvement of the knowledge base.\\n\\nYour conversations are kept 6 month before deletion.","link":"open confidency policy","buttonAccept":"I understand and I accept","buttonRefuse":"I refuse","messageAccepted":"your acceptation has been saved","messageRefused":"your refusal has been saved"}}');
1991
2148
 
1992
2149
 
1993
2150
  var $bb98bfd273c4fd65$exports = {};
@@ -2003,19 +2160,19 @@ $f2ba7294ef5fc2ff$exports = JSON.parse('{"1":"kotisivu","2":"live-uutiskanava","
2003
2160
 
2004
2161
 
2005
2162
  var $665b8ec485518214$exports = {};
2006
- $665b8ec485518214$exports = JSON.parse('{"1":"accueil","2":"cha\xeene info live","3":"m\xe9t\xe9o","4":"num\xe9ros d\'urgence","1000":"historique","1001":"tutoriel","common":{"abort":"annuler","all":"tous","back":"retour","close":"fermer","continue":"continuer","download":"t\xe9l\xe9charger","downloadsheet":"t\xe9l\xe9charger cette fiche","downloadsheetmobile":"t\xe9l\xe9charger cette fiche sur mobile","filter":"filtrer","history":"historique","lang":"langues","menu":"menu","mode":"mode","needhelp":"besoin d\'aide ?","parameters":"param\xe8tres","print":"imprimer","printsheet":"imprimer cette fiche","result":"r\xe9sultat","results":"r\xe9sultats","singleLang":"langue","sound":"son","submit":"valider","subtitle":"sous-titre","tutorial":"tutoriel","validate":"valider"},"emergency":{"samu":"samu","police":"police","firefighter":"pompiers","general":"g\xe9n\xe9ral","citypolice":"Police municipale","hospital":"H\xf4pital","homeless":"Sans abris (appel gratuit)","poison":"Centre anti-poison","emergency":"Urgences europ\xe9ennes"},"error":{"title":"une erreur est survenue","button":"Relancer l\'application"},"history":{"title":"historique de conversation"},"inputs":{"choose":"Choisissez une r\xe9ponse"},"language":{"change":"changer la langue","select":"s\xe9lectionnez la langue de votre choix"},"link":{"buttonText":"Voir le document","goto":"Acc\xe9der \xe0 l\'adresse","click":"Cliquez-ici","scanQR":"en scannant le QrCode"},"loader":{"loader":{"optimal":"Pour une exp\xe9rience optimale,","classic":"Pour une exp\xe9rience plus classique,","vocal":"j\'\xe9change de vive voix avec l\'agent.","text":"j\'\xe9change \xe0 l\'\xe9crit avec l\'agent."},"modes":{"vocal":"mode vocal","text":"mode texte"},"loaderValidation":"D\xe9marrer la conversation","locale":"v\xe9rification de la langue","supported":"v\xe9rification des langues disponibles","store":"cr\xe9ation du store","directline":"connection au directline","ponyfill":"cr\xe9ation du ponyfill","addressdata":"r\xe9cup\xe9ration des donn\xe9es"},"menu":{"message":"Saisissez votre message","allowMicrophone":"Autorisez votre navigateur \xe0 utiliser votre micro pour continuer","backconversation":"retour \xe0 la conversation","answer":" r\xe9pond \xe0 vos questions"},"mobileLandscapePreventer":{"firstline":"Pour une exp\xe9rience optimale,","secondline":"basculez votre \xe9cran"},"news":{"warningtext":"Vous allez acc\xe9der \xe0 la cha\xeene info, le son de votre appareil va \xeatre activ\xe9","live":"direct","continuous":"en continu"},"poi":{"comment":"avis clients","route":"y Aller","nodata":"Aucun contenu ne correspond \xe0 votre recherche","openinghours":"Horaires","prices":"Tarifs","paymentmethods":"Modes de paiement","numberofplaces":"nombre de couverts","openroutemobile":"ouvrir l\'itin\xe9raire Google Maps sur mobile","FoodEstablishment":"O\xf9 manger","LodgingBusiness":"O\xf9 dormir","TouristDestination":"A voir","TouristAttraction":"A faire","Product":"Produits locaux","Service":"Services","Event":"Ev\xe8nements","City":"Villes","Wine":"Vins"},"suggestion":{"consult":"Consultez","thetutorial":"le tutoriel"},"template":{"reset":"effacer tout","showresults":"Afficher les r\xe9sultats","suggestiontitle":"Suggestions de recherches","reminder":"N\'oubliez pas,\\n je peux r\xe9pondre \xe0 vos questions."}}');
2163
+ $665b8ec485518214$exports = JSON.parse('{"1":"accueil","2":"cha\xeene info live","3":"m\xe9t\xe9o","4":"num\xe9ros d\'urgence","1000":"historique","1001":"tutoriel","common":{"abort":"annuler","all":"tous","back":"retour","close":"fermer","continue":"continuer","download":"t\xe9l\xe9charger","downloadsheet":"t\xe9l\xe9charger cette fiche","downloadsheetmobile":"t\xe9l\xe9charger cette fiche sur mobile","filter":"filtrer","history":"historique","lang":"langues","menu":"menu","mode":"mode","needhelp":"besoin d\'aide ?","parameters":"param\xe8tres","print":"imprimer","printsheet":"imprimer cette fiche","result":"r\xe9sultat","results":"r\xe9sultats","singleLang":"langue","sound":"son","submit":"valider","subtitle":"sous-titre","tutorial":"tutoriel","validate":"valider"},"emergency":{"samu":"samu","police":"police","firefighter":"pompiers","general":"g\xe9n\xe9ral","citypolice":"Police municipale","hospital":"H\xf4pital","homeless":"Sans abris (appel gratuit)","poison":"Centre anti-poison","emergency":"Urgences europ\xe9ennes"},"error":{"title":"une erreur est survenue","button":"Relancer l\'application"},"history":{"title":"historique de conversation"},"inputs":{"choose":"Choisissez une r\xe9ponse"},"language":{"change":"changer la langue","select":"s\xe9lectionnez la langue de votre choix"},"link":{"buttonText":"Voir le document","goto":"Acc\xe9der \xe0 l\'adresse","click":"Cliquez-ici","scanQR":"en scannant le QrCode"},"loader":{"loader":{"optimal":"Pour une exp\xe9rience optimale,","classic":"Pour une exp\xe9rience plus classique,","vocal":"j\'\xe9change de vive voix avec l\'agent.","text":"j\'\xe9change \xe0 l\'\xe9crit avec l\'agent."},"modes":{"vocal":"mode vocal","text":"mode texte"},"loaderValidation":"D\xe9marrer la conversation","locale":"v\xe9rification de la langue","supported":"v\xe9rification des langues disponibles","store":"cr\xe9ation du store","directline":"connection au directline","ponyfill":"cr\xe9ation du ponyfill","addressdata":"r\xe9cup\xe9ration des donn\xe9es"},"menu":{"message":"Saisissez votre message","allowMicrophone":"Autorisez votre navigateur \xe0 utiliser votre micro pour continuer","backconversation":"retour \xe0 la conversation","answer":" r\xe9pond \xe0 vos questions"},"mobileLandscapePreventer":{"firstline":"Pour une exp\xe9rience optimale,","secondline":"basculez votre \xe9cran"},"news":{"warningtext":"Vous allez acc\xe9der \xe0 la cha\xeene info, le son de votre appareil va \xeatre activ\xe9","live":"direct","continuous":"en continu"},"poi":{"comment":"avis clients","route":"y Aller","nodata":"Aucun contenu ne correspond \xe0 votre recherche","openinghours":"Horaires","prices":"Tarifs","paymentmethods":"Modes de paiement","numberofplaces":"nombre de couverts","openroutemobile":"ouvrir l\'itin\xe9raire Google Maps sur mobile","FoodEstablishment":"O\xf9 manger","LodgingBusiness":"O\xf9 dormir","TouristDestination":"A voir","TouristAttraction":"A faire","Product":"Produits locaux","Service":"Services","Event":"Ev\xe8nements","City":"Villes","Wine":"Vins"},"suggestion":{"consult":"Consultez","thetutorial":"le tutoriel"},"template":{"reset":"effacer tout","showresults":"Afficher les r\xe9sultats","suggestiontitle":"Suggestions de recherches","reminder":"N\'oubliez pas,\\n je peux r\xe9pondre \xe0 vos questions."},"GDPR":{"title":"traitement des donn\xe9es personnelles transmises au bot","message":"en acceptant ce dialogue, vous consentez \xe0 ce que toutes les donn\xe9es transmises au chatbot soient exploit\xe9es \xe0 des fins d\'analyse de l\'utilisation de l\'outil et d\'enrichissement de la base de connaissance.\\n\\nVos conversations sont conserv\xe9es 6 mois avant de faire l\'objet d\'une suppression.","link":"lien pour consulter les politiques de confidentialit\xe9","buttonAccept":"j\'ai compris et j\'accepte","buttonRefuse":"je refuse","messageAccepted":"votre consentement est bien pris en compte","messageRefused":"votre refus est bien pris en compte"}}');
2007
2164
 
2008
2165
 
2009
2166
  var $e1391f8bf11bb24e$exports = {};
2010
- $e1391f8bf11bb24e$exports = JSON.parse('{"1":"accueil","2":"cha\xeene info live","3":"m\xe9t\xe9o","4":"num\xe9ros d\'urgence","1000":"historique","1001":"tutoriel","common":{"abort":"annuler","all":"tous","back":"retour","close":"fermer","continue":"continuer","download":"t\xe9l\xe9charger","downloadsheet":"t\xe9l\xe9charger cette fiche","downloadsheetmobile":"t\xe9l\xe9charger cette fiche sur mobile","filter":"filtrer","history":"historique","lang":"langues","menu":"menu","mode":"mode","needhelp":"besoin d\'aide ?","parameters":"param\xe8tres","print":"imprimer","printsheet":"imprimer cette fiche","result":"r\xe9sultat","results":"r\xe9sultats","singleLang":"langue","sound":"son","submit":"valider","subtitle":"sous-titre","tutorial":"tutoriel","validate":"valider"},"emergency":{"samu":"samu","police":"police","firefighter":"pompiers","general":"g\xe9n\xe9ral","citypolice":"Police municipale","hospital":"H\xf4pital","homeless":"Sans abris (appel gratuit)","poison":"Centre anti-poison","emergency":"Urgences europ\xe9ennes"},"error":{"title":"une erreur est survenue","button":"Relancer l\'application"},"history":{"title":"historique de conversation"},"inputs":{"choose":"Choisissez une r\xe9ponse"},"language":{"change":"changer la langue","select":"s\xe9lectionnez la langue de votre choix"},"link":{"buttonText":"Voir le document","goto":"Acc\xe9der \xe0 l\'adresse","click":"Cliquez-ici","scanQR":"en scannant le QrCode"},"loader":{"loader":{"optimal":"Pour une exp\xe9rience optimale,","classic":"Pour une exp\xe9rience plus classique,","vocal":"j\'\xe9change de vive voix avec l\'agent.","text":"j\'\xe9change \xe0 l\'\xe9crit avec l\'agent."},"modes":{"vocal":"mode vocal","text":"mode texte"},"loaderValidation":"D\xe9marrer la conversation","locale":"v\xe9rification de la langue","supported":"v\xe9rification des langues disponibles","store":"cr\xe9ation du store","directline":"connection au directline","ponyfill":"cr\xe9ation du ponyfill","addressdata":"r\xe9cup\xe9ration des donn\xe9es"},"menu":{"message":"Saisissez votre message","allowMicrophone":"Autorisez votre navigateur \xe0 utiliser votre micro pour continuer","backconversation":"retour \xe0 la conversation","answer":" r\xe9pond \xe0 vos questions"},"mobileLandscapePreventer":{"firstline":"Pour une exp\xe9rience optimale,","secondline":"basculez votre \xe9cran"},"news":{"warningtext":"Vous allez acc\xe9der \xe0 la cha\xeene info, le son de votre appareil va \xeatre activ\xe9","live":"direct","continuous":"en continu"},"poi":{"comment":"avis clients","route":"y Aller","nodata":"Aucun contenu ne correspond \xe0 votre recherche","openinghours":"Horaires","prices":"Tarifs","paymentmethods":"Modes de paiement","numberofplaces":"nombre de couverts","openroutemobile":"ouvrir l\'itin\xe9raire Google Maps sur mobile","FoodEstablishment":"O\xf9 manger","LodgingBusiness":"O\xf9 dormir","TouristDestination":"A voir","TouristAttraction":"A faire","Product":"Produits locaux","Service":"Services","Event":"Ev\xe8nements","City":"Villes","Wine":"Vins"},"suggestion":{"consult":"Consultez","thetutorial":"le tutoriel"},"template":{"reset":"effacer tout","showresults":"Afficher les r\xe9sultats","suggestiontitle":"Suggestions de recherches","reminder":"N\'oubliez pas,\\n je peux r\xe9pondre \xe0 vos questions."}}');
2167
+ $e1391f8bf11bb24e$exports = JSON.parse('{"1":"accueil","2":"cha\xeene info live","3":"m\xe9t\xe9o","4":"num\xe9ros d\'urgence","1000":"historique","1001":"tutoriel","common":{"abort":"annuler","all":"tous","back":"retour","close":"fermer","continue":"continuer","download":"t\xe9l\xe9charger","downloadsheet":"t\xe9l\xe9charger cette fiche","downloadsheetmobile":"t\xe9l\xe9charger cette fiche sur mobile","filter":"filtrer","history":"historique","lang":"langues","menu":"menu","mode":"mode","needhelp":"besoin d\'aide ?","parameters":"param\xe8tres","print":"imprimer","printsheet":"imprimer cette fiche","result":"r\xe9sultat","results":"r\xe9sultats","singleLang":"langue","sound":"son","submit":"valider","subtitle":"sous-titre","tutorial":"tutoriel","validate":"valider"},"emergency":{"samu":"samu","police":"police","firefighter":"pompiers","general":"g\xe9n\xe9ral","citypolice":"Police municipale","hospital":"H\xf4pital","homeless":"Sans abris (appel gratuit)","poison":"Centre anti-poison","emergency":"Urgences europ\xe9ennes"},"error":{"title":"une erreur est survenue","button":"Relancer l\'application"},"history":{"title":"historique de conversation"},"inputs":{"choose":"Choisissez une r\xe9ponse"},"language":{"change":"changer la langue","select":"s\xe9lectionnez la langue de votre choix"},"link":{"buttonText":"Voir le document","goto":"Acc\xe9der \xe0 l\'adresse","click":"Cliquez-ici","scanQR":"en scannant le QrCode"},"loader":{"loader":{"optimal":"Pour une exp\xe9rience optimale,","classic":"Pour une exp\xe9rience plus classique,","vocal":"j\'\xe9change de vive voix avec l\'agent.","text":"j\'\xe9change \xe0 l\'\xe9crit avec l\'agent."},"modes":{"vocal":"mode vocal","text":"mode texte"},"loaderValidation":"D\xe9marrer la conversation","locale":"v\xe9rification de la langue","supported":"v\xe9rification des langues disponibles","store":"cr\xe9ation du store","directline":"connection au directline","ponyfill":"cr\xe9ation du ponyfill","addressdata":"r\xe9cup\xe9ration des donn\xe9es"},"menu":{"message":"Saisissez votre message","allowMicrophone":"Autorisez votre navigateur \xe0 utiliser votre micro pour continuer","backconversation":"retour \xe0 la conversation","answer":" r\xe9pond \xe0 vos questions"},"mobileLandscapePreventer":{"firstline":"Pour une exp\xe9rience optimale,","secondline":"basculez votre \xe9cran"},"news":{"warningtext":"Vous allez acc\xe9der \xe0 la cha\xeene info, le son de votre appareil va \xeatre activ\xe9","live":"direct","continuous":"en continu"},"poi":{"comment":"avis clients","route":"y Aller","nodata":"Aucun contenu ne correspond \xe0 votre recherche","openinghours":"Horaires","prices":"Tarifs","paymentmethods":"Modes de paiement","numberofplaces":"nombre de couverts","openroutemobile":"ouvrir l\'itin\xe9raire Google Maps sur mobile","FoodEstablishment":"O\xf9 manger","LodgingBusiness":"O\xf9 dormir","TouristDestination":"A voir","TouristAttraction":"A faire","Product":"Produits locaux","Service":"Services","Event":"Ev\xe8nements","City":"Villes","Wine":"Vins"},"suggestion":{"consult":"Consultez","thetutorial":"le tutoriel"},"template":{"reset":"effacer tout","showresults":"Afficher les r\xe9sultats","suggestiontitle":"Suggestions de recherches","reminder":"N\'oubliez pas,\\n je peux r\xe9pondre \xe0 vos questions."},"GDPR":{"title":"traitement des donn\xe9es personnelles transmises au bot","message":"en acceptant ce dialogue, vous consentez \xe0 ce que toutes les donn\xe9es transmises au chatbot soient exploit\xe9es \xe0 des fins d\'analyse de l\'utilisation de l\'outil et d\'enrichissement de la base de connaissance.\\n\\nVos conversations sont conserv\xe9es 6 mois avant de faire l\'objet d\'une suppression.","link":"lien pour consulter les politiques de confidentialit\xe9","buttonAccept":"j\'ai compris et j\'accepte","buttonRefuse":"je refuse","messageAccepted":"votre consentement est bien pris en compte","messageRefused":"votre refus est bien pris en compte"}}');
2011
2168
 
2012
2169
 
2013
2170
  var $e49541d4a8c387a4$exports = {};
2014
- $e49541d4a8c387a4$exports = JSON.parse('{"1":"accueil","2":"cha\xeene info live","3":"m\xe9t\xe9o","4":"num\xe9ros d\'urgence","1000":"historique","1001":"tutoriel","common":{"abort":"annuler","all":"tous","back":"retour","close":"fermer","continue":"continuer","download":"t\xe9l\xe9charger","downloadsheet":"t\xe9l\xe9charger cette fiche","downloadsheetmobile":"t\xe9l\xe9charger cette fiche sur mobile","filter":"filtrer","history":"historique","lang":"langues","menu":"menu","mode":"mode","needhelp":"besoin d\'aide ?","parameters":"param\xe8tres","print":"imprimer","printsheet":"imprimer cette fiche","result":"r\xe9sultat","results":"r\xe9sultats","singleLang":"langue","sound":"son","submit":"valider","subtitle":"sous-titre","tutorial":"tutoriel","validate":"valider"},"emergency":{"samu":"samu","police":"police","firefighter":"pompiers","general":"g\xe9n\xe9ral","citypolice":"Police municipale","hospital":"H\xf4pital","homeless":"Sans abris (appel gratuit)","poison":"Centre anti-poison","emergency":"Urgences europ\xe9ennes"},"error":{"title":"une erreur est survenue","button":"Relancer l\'application"},"history":{"title":"historique de conversation"},"inputs":{"choose":"Choisissez une r\xe9ponse"},"language":{"change":"changer la langue","select":"s\xe9lectionnez la langue de votre choix"},"link":{"buttonText":"Voir le document","goto":"Acc\xe9der \xe0 l\'adresse","click":"Cliquez-ici","scanQR":"en scannant le QrCode"},"loader":{"loader":{"optimal":"Pour une exp\xe9rience optimale,","classic":"Pour une exp\xe9rience plus classique,","vocal":"j\'\xe9change de vive voix avec l\'agent.","text":"j\'\xe9change \xe0 l\'\xe9crit avec l\'agent."},"modes":{"vocal":"mode vocal","text":"mode texte"},"loaderValidation":"D\xe9marrer la conversation","locale":"v\xe9rification de la langue","supported":"v\xe9rification des langues disponibles","store":"cr\xe9ation du store","directline":"connection au directline","ponyfill":"cr\xe9ation du ponyfill","addressdata":"r\xe9cup\xe9ration des donn\xe9es"},"menu":{"message":"Saisissez votre message","allowMicrophone":"Autorisez votre navigateur \xe0 utiliser votre micro pour continuer","backconversation":"retour \xe0 la conversation","answer":" r\xe9pond \xe0 vos questions"},"mobileLandscapePreventer":{"firstline":"Pour une exp\xe9rience optimale,","secondline":"basculez votre \xe9cran"},"news":{"warningtext":"Vous allez acc\xe9der \xe0 la cha\xeene info, le son de votre appareil va \xeatre activ\xe9","live":"direct","continuous":"en continu"},"poi":{"comment":"avis clients","route":"y Aller","nodata":"Aucun contenu ne correspond \xe0 votre recherche","openinghours":"Horaires","prices":"Tarifs","paymentmethods":"Modes de paiement","numberofplaces":"nombre de couverts","openroutemobile":"ouvrir l\'itin\xe9raire Google Maps sur mobile","FoodEstablishment":"O\xf9 manger","LodgingBusiness":"O\xf9 dormir","TouristDestination":"A voir","TouristAttraction":"A faire","Product":"Produits locaux","Service":"Services","Event":"Ev\xe8nements","City":"Villes","Wine":"Vins"},"suggestion":{"consult":"Consultez","thetutorial":"le tutoriel"},"template":{"reset":"effacer tout","showresults":"Afficher les r\xe9sultats","suggestiontitle":"Suggestions de recherches","reminder":"N\'oubliez pas,\\n je peux r\xe9pondre \xe0 vos questions."}}');
2171
+ $e49541d4a8c387a4$exports = JSON.parse('{"1":"accueil","2":"cha\xeene info live","3":"m\xe9t\xe9o","4":"num\xe9ros d\'urgence","1000":"historique","1001":"tutoriel","common":{"abort":"annuler","all":"tous","back":"retour","close":"fermer","continue":"continuer","download":"t\xe9l\xe9charger","downloadsheet":"t\xe9l\xe9charger cette fiche","downloadsheetmobile":"t\xe9l\xe9charger cette fiche sur mobile","filter":"filtrer","history":"historique","lang":"langues","menu":"menu","mode":"mode","needhelp":"besoin d\'aide ?","parameters":"param\xe8tres","print":"imprimer","printsheet":"imprimer cette fiche","result":"r\xe9sultat","results":"r\xe9sultats","singleLang":"langue","sound":"son","submit":"valider","subtitle":"sous-titre","tutorial":"tutoriel","validate":"valider"},"emergency":{"samu":"samu","police":"police","firefighter":"pompiers","general":"g\xe9n\xe9ral","citypolice":"Police municipale","hospital":"H\xf4pital","homeless":"Sans abris (appel gratuit)","poison":"Centre anti-poison","emergency":"Urgences europ\xe9ennes"},"error":{"title":"une erreur est survenue","button":"Relancer l\'application"},"history":{"title":"historique de conversation"},"inputs":{"choose":"Choisissez une r\xe9ponse"},"language":{"change":"changer la langue","select":"s\xe9lectionnez la langue de votre choix"},"link":{"buttonText":"Voir le document","goto":"Acc\xe9der \xe0 l\'adresse","click":"Cliquez-ici","scanQR":"en scannant le QrCode"},"loader":{"loader":{"optimal":"Pour une exp\xe9rience optimale,","classic":"Pour une exp\xe9rience plus classique,","vocal":"j\'\xe9change de vive voix avec l\'agent.","text":"j\'\xe9change \xe0 l\'\xe9crit avec l\'agent."},"modes":{"vocal":"mode vocal","text":"mode texte"},"loaderValidation":"D\xe9marrer la conversation","locale":"v\xe9rification de la langue","supported":"v\xe9rification des langues disponibles","store":"cr\xe9ation du store","directline":"connection au directline","ponyfill":"cr\xe9ation du ponyfill","addressdata":"r\xe9cup\xe9ration des donn\xe9es"},"menu":{"message":"Saisissez votre message","allowMicrophone":"Autorisez votre navigateur \xe0 utiliser votre micro pour continuer","backconversation":"retour \xe0 la conversation","answer":" r\xe9pond \xe0 vos questions"},"mobileLandscapePreventer":{"firstline":"Pour une exp\xe9rience optimale,","secondline":"basculez votre \xe9cran"},"news":{"warningtext":"Vous allez acc\xe9der \xe0 la cha\xeene info, le son de votre appareil va \xeatre activ\xe9","live":"direct","continuous":"en continu"},"poi":{"comment":"avis clients","route":"y Aller","nodata":"Aucun contenu ne correspond \xe0 votre recherche","openinghours":"Horaires","prices":"Tarifs","paymentmethods":"Modes de paiement","numberofplaces":"nombre de couverts","openroutemobile":"ouvrir l\'itin\xe9raire Google Maps sur mobile","FoodEstablishment":"O\xf9 manger","LodgingBusiness":"O\xf9 dormir","TouristDestination":"A voir","TouristAttraction":"A faire","Product":"Produits locaux","Service":"Services","Event":"Ev\xe8nements","City":"Villes","Wine":"Vins"},"suggestion":{"consult":"Consultez","thetutorial":"le tutoriel"},"template":{"reset":"effacer tout","showresults":"Afficher les r\xe9sultats","suggestiontitle":"Suggestions de recherches","reminder":"N\'oubliez pas,\\n je peux r\xe9pondre \xe0 vos questions."},"GDPR":{"title":"traitement des donn\xe9es personnelles transmises au bot","message":"en acceptant ce dialogue, vous consentez \xe0 ce que toutes les donn\xe9es transmises au chatbot soient exploit\xe9es \xe0 des fins d\'analyse de l\'utilisation de l\'outil et d\'enrichissement de la base de connaissance.\\n\\nVos conversations sont conserv\xe9es 6 mois avant de faire l\'objet d\'une suppression.","link":"lien pour consulter les politiques de confidentialit\xe9","buttonAccept":"j\'ai compris et j\'accepte","buttonRefuse":"je refuse","messageAccepted":"votre consentement est bien pris en compte","messageRefused":"votre refus est bien pris en compte"}}');
2015
2172
 
2016
2173
 
2017
2174
  var $36bf012ae80b0ec7$exports = {};
2018
- $36bf012ae80b0ec7$exports = JSON.parse('{"1":"accueil","2":"cha\xeene info live","3":"m\xe9t\xe9o","4":"num\xe9ros d\'urgence","1000":"historique","1001":"tutoriel","common":{"abort":"annuler","all":"tous","back":"retour","close":"fermer","continue":"continuer","download":"t\xe9l\xe9charger","downloadsheet":"t\xe9l\xe9charger cette fiche","downloadsheetmobile":"t\xe9l\xe9charger cette fiche sur mobile","filter":"filtrer","history":"historique","lang":"langues","menu":"menu","mode":"mode","needhelp":"besoin d\'aide ?","parameters":"param\xe8tres","print":"imprimer","printsheet":"imprimer cette fiche","result":"r\xe9sultat","results":"r\xe9sultats","singleLang":"langue","sound":"son","submit":"valider","subtitle":"sous-titre","tutorial":"tutoriel","validate":"valider"},"emergency":{"samu":"samu","police":"police","firefighter":"pompiers","general":"g\xe9n\xe9ral","citypolice":"Police municipale","hospital":"H\xf4pital","homeless":"Sans abris (appel gratuit)","poison":"Centre anti-poison","emergency":"Urgences europ\xe9ennes"},"error":{"title":"une erreur est survenue","button":"Relancer l\'application"},"history":{"title":"historique de conversation"},"inputs":{"choose":"Choisissez une r\xe9ponse"},"language":{"change":"changer la langue","select":"s\xe9lectionnez la langue de votre choix"},"link":{"buttonText":"Voir le document","goto":"Acc\xe9der \xe0 l\'adresse","click":"Cliquez-ici","scanQR":"en scannant le QrCode"},"loader":{"loader":{"optimal":"Pour une exp\xe9rience optimale,","classic":"Pour une exp\xe9rience plus classique,","vocal":"j\'\xe9change de vive voix avec l\'agent.","text":"j\'\xe9change \xe0 l\'\xe9crit avec l\'agent."},"modes":{"vocal":"mode vocal","text":"mode texte"},"loaderValidation":"D\xe9marrer la conversation","locale":"v\xe9rification de la langue","supported":"v\xe9rification des langues disponibles","store":"cr\xe9ation du store","directline":"connection au directline","ponyfill":"cr\xe9ation du ponyfill","addressdata":"r\xe9cup\xe9ration des donn\xe9es"},"menu":{"message":"Saisissez votre message","allowMicrophone":"Autorisez votre navigateur \xe0 utiliser votre micro pour continuer","backconversation":"retour \xe0 la conversation","answer":" r\xe9pond \xe0 vos questions"},"mobileLandscapePreventer":{"firstline":"Pour une exp\xe9rience optimale,","secondline":"basculez votre \xe9cran"},"news":{"warningtext":"Vous allez acc\xe9der \xe0 la cha\xeene info, le son de votre appareil va \xeatre activ\xe9","live":"direct","continuous":"en continu"},"poi":{"comment":"avis clients","route":"y Aller","nodata":"Aucun contenu ne correspond \xe0 votre recherche","openinghours":"Horaires","prices":"Tarifs","paymentmethods":"Modes de paiement","numberofplaces":"nombre de couverts","openroutemobile":"ouvrir l\'itin\xe9raire Google Maps sur mobile","FoodEstablishment":"O\xf9 manger","LodgingBusiness":"O\xf9 dormir","TouristDestination":"A voir","TouristAttraction":"A faire","Product":"Produits locaux","Service":"Services","Event":"Ev\xe8nements","City":"Villes","Wine":"Vins"},"suggestion":{"consult":"Consultez","thetutorial":"le tutoriel"},"template":{"reset":"effacer tout","showresults":"Afficher les r\xe9sultats","suggestiontitle":"Suggestions de recherches","reminder":"N\'oubliez pas,\\n je peux r\xe9pondre \xe0 vos questions."}}');
2175
+ $36bf012ae80b0ec7$exports = JSON.parse('{"1":"accueil","2":"cha\xeene info live","3":"m\xe9t\xe9o","4":"num\xe9ros d\'urgence","1000":"historique","1001":"tutoriel","common":{"abort":"annuler","all":"tous","back":"retour","close":"fermer","continue":"continuer","download":"t\xe9l\xe9charger","downloadsheet":"t\xe9l\xe9charger cette fiche","downloadsheetmobile":"t\xe9l\xe9charger cette fiche sur mobile","filter":"filtrer","history":"historique","lang":"langues","menu":"menu","mode":"mode","needhelp":"besoin d\'aide ?","parameters":"param\xe8tres","print":"imprimer","printsheet":"imprimer cette fiche","result":"r\xe9sultat","results":"r\xe9sultats","singleLang":"langue","sound":"son","submit":"valider","subtitle":"sous-titre","tutorial":"tutoriel","validate":"valider"},"emergency":{"samu":"samu","police":"police","firefighter":"pompiers","general":"g\xe9n\xe9ral","citypolice":"Police municipale","hospital":"H\xf4pital","homeless":"Sans abris (appel gratuit)","poison":"Centre anti-poison","emergency":"Urgences europ\xe9ennes"},"error":{"title":"une erreur est survenue","button":"Relancer l\'application"},"history":{"title":"historique de conversation"},"inputs":{"choose":"Choisissez une r\xe9ponse"},"language":{"change":"changer la langue","select":"s\xe9lectionnez la langue de votre choix"},"link":{"buttonText":"Voir le document","goto":"Acc\xe9der \xe0 l\'adresse","click":"Cliquez-ici","scanQR":"en scannant le QrCode"},"loader":{"loader":{"optimal":"Pour une exp\xe9rience optimale,","classic":"Pour une exp\xe9rience plus classique,","vocal":"j\'\xe9change de vive voix avec l\'agent.","text":"j\'\xe9change \xe0 l\'\xe9crit avec l\'agent."},"modes":{"vocal":"mode vocal","text":"mode texte"},"loaderValidation":"D\xe9marrer la conversation","locale":"v\xe9rification de la langue","supported":"v\xe9rification des langues disponibles","store":"cr\xe9ation du store","directline":"connection au directline","ponyfill":"cr\xe9ation du ponyfill","addressdata":"r\xe9cup\xe9ration des donn\xe9es"},"menu":{"message":"Saisissez votre message","allowMicrophone":"Autorisez votre navigateur \xe0 utiliser votre micro pour continuer","backconversation":"retour \xe0 la conversation","answer":" r\xe9pond \xe0 vos questions"},"mobileLandscapePreventer":{"firstline":"Pour une exp\xe9rience optimale,","secondline":"basculez votre \xe9cran"},"news":{"warningtext":"Vous allez acc\xe9der \xe0 la cha\xeene info, le son de votre appareil va \xeatre activ\xe9","live":"direct","continuous":"en continu"},"poi":{"comment":"avis clients","route":"y Aller","nodata":"Aucun contenu ne correspond \xe0 votre recherche","openinghours":"Horaires","prices":"Tarifs","paymentmethods":"Modes de paiement","numberofplaces":"nombre de couverts","openroutemobile":"ouvrir l\'itin\xe9raire Google Maps sur mobile","FoodEstablishment":"O\xf9 manger","LodgingBusiness":"O\xf9 dormir","TouristDestination":"A voir","TouristAttraction":"A faire","Product":"Produits locaux","Service":"Services","Event":"Ev\xe8nements","City":"Villes","Wine":"Vins"},"suggestion":{"consult":"Consultez","thetutorial":"le tutoriel"},"template":{"reset":"effacer tout","showresults":"Afficher les r\xe9sultats","suggestiontitle":"Suggestions de recherches","reminder":"N\'oubliez pas,\\n je peux r\xe9pondre \xe0 vos questions."},"GDPR":{"title":"traitement des donn\xe9es personnelles transmises au bot","message":"en acceptant ce dialogue, vous consentez \xe0 ce que toutes les donn\xe9es transmises au chatbot soient exploit\xe9es \xe0 des fins d\'analyse de l\'utilisation de l\'outil et d\'enrichissement de la base de connaissance.\\n\\nVos conversations sont conserv\xe9es 6 mois avant de faire l\'objet d\'une suppression.","link":"lien pour consulter les politiques de confidentialit\xe9","buttonAccept":"j\'ai compris et j\'accepte","buttonRefuse":"je refuse","messageAccepted":"votre consentement est bien pris en compte","messageRefused":"votre refus est bien pris en compte"}}');
2019
2176
 
2020
2177
 
2021
2178
  var $c0d58208aa6da1b3$exports = {};
@@ -2154,7 +2311,7 @@ const $f902d4436881b887$export$3118ae18000e2700 = ()=>{
2154
2311
  const $b7c552f6163a7a5c$var$useToggleMicrophone = ()=>{
2155
2312
  const mode = (0, $56b00880a398c953$export$bd22554f31e5f96f)((state)=>state.mode);
2156
2313
  const activeRecognitionState = (0, $04ce41b46d359821$export$f299240efcda25a2)((state)=>state.activeRecognitionState);
2157
- const toggleMicrophone = (0, $b3y7N$useCallback)(()=>{
2314
+ const toggleMicrophone = (0, $b3y7N$useCallback)((fromExpectedInput)=>{
2158
2315
  if (mode === (0, $f5ca62954d1f1f5b$export$9484bbecc3c49a2e).text) (0, $04ce41b46d359821$export$45913366c4ba414f)((0, $f5ca62954d1f1f5b$export$3f0071308968cd80).Closed);
2159
2316
  else switch(activeRecognitionState){
2160
2317
  // Do nothing if we are in a transition state
@@ -2167,7 +2324,7 @@ const $b7c552f6163a7a5c$var$useToggleMicrophone = ()=>{
2167
2324
  break;
2168
2325
  case (0, $f5ca62954d1f1f5b$export$3f0071308968cd80).Closed:
2169
2326
  (0, $04ce41b46d359821$export$45913366c4ba414f)((0, $f5ca62954d1f1f5b$export$3f0071308968cd80).Initializing);
2170
- (0, $04ce41b46d359821$export$d0df6aec4e971f52)(true);
2327
+ !fromExpectedInput && (0, $04ce41b46d359821$export$d0df6aec4e971f52)(true);
2171
2328
  break;
2172
2329
  }
2173
2330
  }, [
@@ -2187,12 +2344,14 @@ var $758a083c76f41cee$var$EventsReceived;
2187
2344
  $758a083c76f41cee$var$EventsReceived[$758a083c76f41cee$var$EventsReceived["retorikStartListening"] = 3] = "retorikStartListening";
2188
2345
  $758a083c76f41cee$var$EventsReceived[$758a083c76f41cee$var$EventsReceived["retorikDisplaySubtitles"] = 4] = "retorikDisplaySubtitles";
2189
2346
  })($758a083c76f41cee$var$EventsReceived || ($758a083c76f41cee$var$EventsReceived = {}));
2190
- const $758a083c76f41cee$var$SendActivityEventListener = ({ isRetorikNews: isRetorikNews, hasConversationCookie: hasConversationCookie, userData: userData, changedLayout: changedLayout })=>{
2347
+ const $758a083c76f41cee$var$SendActivityEventListener = ({ isRetorikNews: isRetorikNews, hasConversationCookie: hasConversationCookie, userData: userData })=>{
2191
2348
  const sendPostActivity = $758a083c76f41cee$var$usePostActivity();
2192
2349
  const sendEvent = $758a083c76f41cee$var$useSendEvent();
2193
2350
  const locale = (0, $f902d4436881b887$export$6650dace022cfacc)((state)=>state.locale);
2194
2351
  const activityToSend = (0, $3426110875af99d0$export$77e4cc5334565f28)((state)=>state.activityToSend);
2195
2352
  const eventToSend = (0, $3426110875af99d0$export$77e4cc5334565f28)((state)=>state.eventToSend);
2353
+ const displayGDPR = (0, $3426110875af99d0$export$77e4cc5334565f28)((state)=>state.GDPRDisplay);
2354
+ const userConsent = (0, $3426110875af99d0$export$77e4cc5334565f28)((state)=>state.GDPRUserConsent);
2196
2355
  const { appAvailable: appAvailable, loaderClosed: loaderClosed, configuration: { skipWelcome: skipWelcome } } = (0, $15b0bc93a9787124$export$d8760bee47331b1d)();
2197
2356
  const toggleMicrophone = (0, $b7c552f6163a7a5c$export$2e2bcd8739ae039)();
2198
2357
  const [eventReceived, setEventReceived] = (0, $b3y7N$useState)(null);
@@ -2213,7 +2372,7 @@ const $758a083c76f41cee$var$SendActivityEventListener = ({ isRetorikNews: isReto
2213
2372
  eventReceived.detail && sendEvent(eventReceived.detail.name, eventReceived.detail.value);
2214
2373
  }
2215
2374
  } catch (e) {
2216
- console.warn("Error on event reception");
2375
+ console.warn("Retorik Framework > Error on event reception");
2217
2376
  }
2218
2377
  }, [
2219
2378
  eventReceived
@@ -2236,22 +2395,27 @@ const $758a083c76f41cee$var$SendActivityEventListener = ({ isRetorikNews: isReto
2236
2395
  };
2237
2396
  }, []);
2238
2397
  (0, $b3y7N$useEffect)(()=>{
2239
- if (isRetorikNews || hasConversationCookie) {
2240
- console.log("isRetorikNews || hasConversationCookie", isRetorikNews, hasConversationCookie);
2241
- (0, $56b00880a398c953$export$702dee93694750db)(true);
2242
- } else if (!userAlreadySet && (appAvailable || loaderClosed)) {
2243
- console.log("changedLayout", changedLayout, appAvailable, loaderClosed);
2398
+ if (isRetorikNews || hasConversationCookie) (0, $56b00880a398c953$export$702dee93694750db)(true);
2399
+ else if (!userAlreadySet && appAvailable && !displayGDPR) {
2244
2400
  (0, $56b00880a398c953$export$702dee93694750db)(true);
2401
+ // Send mandatory events : setUser to start conversation, Davi.GDPRConsent for GDPR module
2402
+ sendEvent("setUser", {
2403
+ user: {
2404
+ ...userData,
2405
+ gdprConsent: true
2406
+ },
2407
+ skipWelcome: !!skipWelcome
2408
+ });
2245
2409
  setTimeout(()=>{
2246
- sendEvent("setUser", {
2247
- user: userData,
2248
- skipWelcome: !!skipWelcome
2410
+ sendEvent("Davi.GDPRConsent", {
2411
+ userConsent: userConsent
2249
2412
  });
2250
- }, 1000);
2413
+ }, 100);
2251
2414
  }
2252
2415
  }, [
2253
2416
  appAvailable,
2254
- loaderClosed
2417
+ loaderClosed,
2418
+ displayGDPR
2255
2419
  ]);
2256
2420
  (0, $b3y7N$useEffect)(()=>{
2257
2421
  if (activityToSend) {
@@ -2538,7 +2702,10 @@ const $c7fecc7ec9b4c272$var$ViewContextDefaultValues = {
2538
2702
  themeColors: (0, $71132ad06245c2e7$export$d80fe84b82195dbd),
2539
2703
  isTactile: false,
2540
2704
  isMobile: false,
2705
+ isWidget: false,
2706
+ isLandscape: true,
2541
2707
  isMobileLandscape: false,
2708
+ isBorne: false,
2542
2709
  displayControls: true,
2543
2710
  showHomeAttachments: undefined,
2544
2711
  mediumLandscape: false,
@@ -2564,11 +2731,10 @@ function $c7fecc7ec9b4c272$export$50e22524de02f5db({ viewsConfiguration: viewsCo
2564
2731
  currentWidth
2565
2732
  ]);
2566
2733
  const [isTactile, setIsTactile] = (0, $b3y7N$useState)(false);
2567
- const isMobile = (0, $b3y7N$useMemo)(()=>{
2568
- return (0, $cd0e91e00b0900ed$export$78f16669b353a880).includes(currentDeviceType);
2569
- }, [
2570
- currentDeviceType
2571
- ]);
2734
+ const [isMobile, setIsMobile] = (0, $b3y7N$useState)((0, $cd0e91e00b0900ed$export$78f16669b353a880).includes(currentDeviceType));
2735
+ const [isWidget, setIsWidget] = (0, $b3y7N$useState)((0, $cd0e91e00b0900ed$export$909f4c209eb70365).includes(currentDeviceType));
2736
+ const [isLandscape, setIsLandscape] = (0, $b3y7N$useState)((0, $cd0e91e00b0900ed$export$baf53ca377ebf861).includes(currentDeviceType));
2737
+ const [isBorne, setIsBorne] = (0, $b3y7N$useState)((0, $cd0e91e00b0900ed$export$a8576d98c9c928de).includes(currentDeviceType));
2572
2738
  const isMobileLandscape = (0, $b3y7N$useMemo)(()=>{
2573
2739
  if (currentDeviceType === (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).mobile && currentHeight < currentWidth) return true;
2574
2740
  return false;
@@ -2588,6 +2754,9 @@ function $c7fecc7ec9b4c272$export$50e22524de02f5db({ viewsConfiguration: viewsCo
2588
2754
  themeColors: themeColors,
2589
2755
  isTactile: isTactile,
2590
2756
  isMobile: isMobile,
2757
+ isWidget: isWidget,
2758
+ isLandscape: isLandscape,
2759
+ isBorne: isBorne,
2591
2760
  isMobileLandscape: isMobileLandscape,
2592
2761
  displayControls: displayControls,
2593
2762
  showHomeAttachments: showHomeAttachments,
@@ -2606,6 +2775,10 @@ function $c7fecc7ec9b4c272$export$50e22524de02f5db({ viewsConfiguration: viewsCo
2606
2775
  currentWidth,
2607
2776
  themeColors,
2608
2777
  isTactile,
2778
+ isMobile,
2779
+ isWidget,
2780
+ isLandscape,
2781
+ isBorne,
2609
2782
  isMobileLandscape,
2610
2783
  displayControls,
2611
2784
  showHomeAttachments,
@@ -2617,6 +2790,14 @@ function $c7fecc7ec9b4c272$export$50e22524de02f5db({ viewsConfiguration: viewsCo
2617
2790
  setDisplayControls,
2618
2791
  setShowHomeAttachments
2619
2792
  ]);
2793
+ (0, $b3y7N$useEffect)(()=>{
2794
+ setIsMobile((0, $cd0e91e00b0900ed$export$78f16669b353a880).includes(currentDeviceType));
2795
+ setIsWidget((0, $cd0e91e00b0900ed$export$909f4c209eb70365).includes(currentDeviceType));
2796
+ setIsLandscape((0, $cd0e91e00b0900ed$export$baf53ca377ebf861).includes(currentDeviceType));
2797
+ setIsBorne((0, $cd0e91e00b0900ed$export$a8576d98c9c928de).includes(currentDeviceType));
2798
+ }, [
2799
+ currentDeviceType
2800
+ ]);
2620
2801
  (0, $b3y7N$useEffect)(()=>{
2621
2802
  setIsTactile("ontouchstart" in window || navigator.maxTouchPoints > 0);
2622
2803
  }, []);
@@ -4434,7 +4615,7 @@ const $521e78e1921d1e6b$var$POIAttachment = ({ media: media, title: title, subti
4434
4615
  media && media[0]?.url ? /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
4435
4616
  className: "rf-relative rf-w-full rf-rounded rf-aspect-video",
4436
4617
  style: {
4437
- backgroundImage: `url(${media[0].url})`,
4618
+ backgroundImage: `url(${media[0].url.replaceAll("'", "%27")})`,
4438
4619
  backgroundSize: "cover",
4439
4620
  backgroundRepeat: "no-repeat",
4440
4621
  backgroundPosition: "center"
@@ -8216,6 +8397,7 @@ let $b062754c8efcd061$var$iconsInitialized = false;
8216
8397
 
8217
8398
 
8218
8399
 
8400
+
8219
8401
  // Add markdown-it to window for markdown processing
8220
8402
  window.markdownit = (0, $b3y7N$markdownit);
8221
8403
  (0, $b062754c8efcd061$export$6108075486421829)();
@@ -8274,6 +8456,8 @@ const $e46bc33cb25634ec$var$defaultUser = {
8274
8456
  conversationId: cookieConversationId,
8275
8457
  watermark: "0"
8276
8458
  }));
8459
+ // Tell the activity store that we will retrieve several activities from an existing conversation, so that it displays only the last one
8460
+ (0, $9b100ac34d01a331$export$d7e4f7861d387c67)(true);
8277
8461
  setHasConversationCookie(true);
8278
8462
  test = false;
8279
8463
  }
@@ -8300,9 +8484,12 @@ const $e46bc33cb25634ec$var$defaultUser = {
8300
8484
  }, [
8301
8485
  ponyfillCredentials
8302
8486
  ]);
8303
- // Initialize the store
8487
+ // Initialize the store on mount and close directline on unmount
8304
8488
  (0, $b3y7N$useEffect)(()=>{
8305
8489
  initStore();
8490
+ return ()=>{
8491
+ subscriptionRef?.current?.unsubscribe();
8492
+ };
8306
8493
  }, []);
8307
8494
  // Create custom store
8308
8495
  function initStore() {
@@ -8328,9 +8515,6 @@ const $e46bc33cb25634ec$var$defaultUser = {
8328
8515
  if (directLine) subscriptionRef.current = directLine.connectionStatus$.subscribe((newStatus)=>{
8329
8516
  setConnectionStatus(newStatus);
8330
8517
  });
8331
- return ()=>{
8332
- subscriptionRef?.current?.unsubscribe();
8333
- };
8334
8518
  }, [
8335
8519
  directLine
8336
8520
  ]);
@@ -8418,35 +8602,34 @@ var $7a8005163915b65d$export$2e2bcd8739ae039 = $7a8005163915b65d$var$BackgroundV
8418
8602
 
8419
8603
 
8420
8604
 
8421
- const $9d905911b403e245$var$useRefDimensions = (ref)=>{
8605
+ /**
8606
+ * Use javascript ResizeOberver object to catch element's resize and return current size
8607
+ * @param {React.RefObject<HTMLElement>} ref element for which we want to get the size when resized
8608
+ * @returns {Dimensions} dimension data (width, height)
8609
+ */ const $9d905911b403e245$var$useRefDimensions = (ref)=>{
8422
8610
  const [dimensions, setDimensions] = (0, $b3y7N$useState)({
8423
8611
  width: 1,
8424
8612
  height: 1
8425
8613
  });
8426
- const [windowSize, setWindowSize] = (0, $b3y7N$useState)({
8427
- width: window.innerWidth,
8428
- height: window.innerHeight
8429
- });
8430
- const handleResize = ()=>{
8431
- setWindowSize({
8432
- width: window.innerWidth,
8433
- height: window.innerHeight
8614
+ const [observer, setObserver] = (0, $b3y7N$useState)();
8615
+ const handleResizeObserverTick = (entries)=>{
8616
+ entries.length && entries[0].contentBoxSize.length && setDimensions({
8617
+ width: entries[0].contentBoxSize[0].inlineSize,
8618
+ height: entries[0].contentBoxSize[0].blockSize
8434
8619
  });
8435
8620
  };
8436
- (0, $b3y7N$useEffect)(()=>{
8437
- window.addEventListener("resize", handleResize);
8438
- if (ref.current) {
8439
- const { width: width, height: height } = ref.current.getBoundingClientRect();
8440
- setDimensions({
8441
- width: width,
8442
- height: height
8443
- });
8621
+ (0, $b3y7N$useLayoutEffect)(()=>{
8622
+ if (!observer) {
8623
+ const obs = new ResizeObserver(handleResizeObserverTick);
8624
+ if (ref?.current) {
8625
+ obs.observe(ref.current);
8626
+ setObserver(obs);
8627
+ }
8444
8628
  }
8445
- return ()=>window.removeEventListener("resize", handleResize);
8446
- }, [
8447
- ref,
8448
- windowSize
8449
- ]);
8629
+ return ()=>{
8630
+ observer?.disconnect();
8631
+ };
8632
+ }, []);
8450
8633
  return dimensions;
8451
8634
  };
8452
8635
  var $9d905911b403e245$export$2e2bcd8739ae039 = $9d905911b403e245$var$useRefDimensions;
@@ -8610,11 +8793,11 @@ var $c27ed3c92f4690f2$export$2e2bcd8739ae039 = $c27ed3c92f4690f2$var$VoiceInput;
8610
8793
 
8611
8794
  const $3b31309367603f45$var$UserRequest = ()=>{
8612
8795
  const mode = (0, $56b00880a398c953$export$bd22554f31e5f96f)((state)=>state.mode);
8613
- const { isMobile: isMobile, currentDeviceType: currentDeviceType, mediumLandscape: mediumLandscape } = (0, $c7fecc7ec9b4c272$export$3abe3478af3cb63b)();
8796
+ const { isMobile: isMobile, isBorne: isBorne, mediumLandscape: mediumLandscape } = (0, $c7fecc7ec9b4c272$export$3abe3478af3cb63b)();
8614
8797
  return /*#__PURE__*/ (0, $b3y7N$jsx)((0, $b3y7N$react).Fragment, {
8615
8798
  children: !isMobile && /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
8616
8799
  className: `rf-relative rf-h-full
8617
- ${currentDeviceType === (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).borne && mode === (0, $f5ca62954d1f1f5b$export$9484bbecc3c49a2e).vocal ? "rf-w-4/9" : "rf-w-3/5"}
8800
+ ${isBorne && mode === (0, $f5ca62954d1f1f5b$export$9484bbecc3c49a2e).vocal ? "rf-w-4/9" : "rf-w-3/5"}
8618
8801
  ${mode === (0, $f5ca62954d1f1f5b$export$9484bbecc3c49a2e).text && mediumLandscape ? "rf-col-start-4" : "rf-col-start-5"} rf-col-span-full rf-row-start-1 ${mode === (0, $f5ca62954d1f1f5b$export$9484bbecc3c49a2e).text ? "rf-row-end-4" : "rf-row-end-5"} rf-py-4
8619
8802
  large-vertical:rf-col-start-1 large-vertical:rf-col-span-full large-vertical:rf-row-start-5 large-vertical:rf-row-end-7
8620
8803
  large-vertical:rf-py-5
@@ -8914,7 +9097,6 @@ var $1a1546311db2416e$export$2e2bcd8739ae039 = $1a1546311db2416e$var$ListContext
8914
9097
 
8915
9098
 
8916
9099
 
8917
-
8918
9100
  const $9c63279d4ce73f7d$var$Desktop = ({ className: className, background: background, children: children })=>{
8919
9101
  return /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
8920
9102
  className: `rf-z-dropdown rf-relative rf-col-start-5 rf-col-end-13 rf-row-start-1 rf-row-span-full rf-w-3/5 rf-justify-self-center tactile:rf-pt-1/5 rf-flex rf-flex-col rf-justify-start rf-items-center rf-bg-templateBackground rf-shadow-[3px_3px_6px_#00000029] rf-overflow-y-scroll rf-scrollbar-hidden ${className}`,
@@ -9323,7 +9505,7 @@ var $c38caca23845824a$export$2e2bcd8739ae039 = $c38caca23845824a$var$AbsoluteLar
9323
9505
 
9324
9506
 
9325
9507
  const $73d7e922147f4370$var$SubMenu = ({ background: background, onClick: onClick, children: children })=>{
9326
- const { currentDeviceType: currentDeviceType, isMobile: isMobile } = (0, $c7fecc7ec9b4c272$export$3abe3478af3cb63b)();
9508
+ const { isMobile: isMobile, isLandscape: isLandscape, isBorne: isBorne } = (0, $c7fecc7ec9b4c272$export$3abe3478af3cb63b)();
9327
9509
  return /*#__PURE__*/ (0, $b3y7N$jsxs)((0, $b3y7N$react).Fragment, {
9328
9510
  children: [
9329
9511
  !isMobile && onClick && /*#__PURE__*/ (0, $b3y7N$jsx)((0, $c38caca23845824a$export$2e2bcd8739ae039), {
@@ -9331,14 +9513,14 @@ const $73d7e922147f4370$var$SubMenu = ({ background: background, onClick: onClic
9331
9513
  zIndexClassname: "rf-z-util",
9332
9514
  onClick: onClick
9333
9515
  }),
9334
- currentDeviceType === (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).borne ? /*#__PURE__*/ (0, $b3y7N$jsxs)((0, $c3ba76bcd3f6410d$export$2e2bcd8739ae039), {
9516
+ isBorne ? /*#__PURE__*/ (0, $b3y7N$jsxs)((0, $c3ba76bcd3f6410d$export$2e2bcd8739ae039), {
9335
9517
  className: "rf-z-dropdown rf-flex rf-flex-col rf-pt-[25vh] rf-pb-[15vh] rf-justify-start rf-items-center rf-shadow-[20px_3px_20px_#00000029] rf-overflow-y-scroll rf-scrollbar-hidden",
9336
9518
  background: background || "#FFFFFF",
9337
9519
  children: [
9338
9520
  /*#__PURE__*/ (0, $b3y7N$jsx)((0, $44c583bf9f127cf2$export$2e2bcd8739ae039), {}),
9339
9521
  children
9340
9522
  ]
9341
- }) : currentDeviceType === (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).landscape ? /*#__PURE__*/ (0, $b3y7N$jsx)((0, $9c63279d4ce73f7d$export$2e2bcd8739ae039), {
9523
+ }) : isLandscape ? /*#__PURE__*/ (0, $b3y7N$jsx)((0, $9c63279d4ce73f7d$export$2e2bcd8739ae039), {
9342
9524
  background: background || "#FFFFFF",
9343
9525
  children: children
9344
9526
  }) : /*#__PURE__*/ (0, $b3y7N$jsx)((0, $998084db40d1ea05$export$2e2bcd8739ae039), {
@@ -9366,6 +9548,7 @@ const $76655b543a18462f$var$BackButton = ({ title: title, className: className,
9366
9548
  className: `rf-flex rf-flex-row rf-items-center ${className}`,
9367
9549
  onClick: handleBack,
9368
9550
  "aria-label": title,
9551
+ "data-map": "fermer",
9369
9552
  children: [
9370
9553
  /*#__PURE__*/ (0, $b3y7N$jsx)((0, $62020ef5eaaff2df$export$2e2bcd8739ae039), {
9371
9554
  className: "rf-w-8"
@@ -10761,7 +10944,7 @@ var $bfee9debe091d3c7$export$2e2bcd8739ae039 = $bfee9debe091d3c7$var$SubMenuClos
10761
10944
 
10762
10945
 
10763
10946
  const $1069807c9f448568$var$FullScreenRemoteClosing = ({ className: className, background: background, closeButtonClassName: closeButtonClassName, remoteCloseButtonZIndex: remoteCloseButtonZIndex, mobileReturnTitle: mobileReturnTitle, handleClose: handleClose, onClick: onClick, animation: animation, children: children })=>{
10764
- const { currentDeviceType: currentDeviceType, isMobile: isMobile } = (0, $c7fecc7ec9b4c272$export$3abe3478af3cb63b)();
10947
+ const { isMobile: isMobile, isLandscape: isLandscape, isBorne: isBorne } = (0, $c7fecc7ec9b4c272$export$3abe3478af3cb63b)();
10765
10948
  return /*#__PURE__*/ (0, $b3y7N$jsxs)((0, $b3y7N$react).Fragment, {
10766
10949
  children: [
10767
10950
  /*#__PURE__*/ (0, $b3y7N$jsxs)((0, $c3ba76bcd3f6410d$export$2e2bcd8739ae039), {
@@ -10770,7 +10953,7 @@ const $1069807c9f448568$var$FullScreenRemoteClosing = ({ className: className, b
10770
10953
  onClick: onClick,
10771
10954
  animation: animation,
10772
10955
  children: [
10773
- currentDeviceType === (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).landscape && /*#__PURE__*/ (0, $b3y7N$jsx)((0, $72dd87ba3d0b1b58$export$2e2bcd8739ae039), {
10956
+ isLandscape && /*#__PURE__*/ (0, $b3y7N$jsx)((0, $72dd87ba3d0b1b58$export$2e2bcd8739ae039), {
10774
10957
  onClick: handleClose,
10775
10958
  className: closeButtonClassName,
10776
10959
  showLabel: true
@@ -10783,7 +10966,7 @@ const $1069807c9f448568$var$FullScreenRemoteClosing = ({ className: className, b
10783
10966
  children
10784
10967
  ]
10785
10968
  }),
10786
- currentDeviceType === (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).borne && /*#__PURE__*/ (0, $b3y7N$jsx)((0, $c38caca23845824a$export$2e2bcd8739ae039), {
10969
+ isBorne && /*#__PURE__*/ (0, $b3y7N$jsx)((0, $c38caca23845824a$export$2e2bcd8739ae039), {
10787
10970
  dashboardVisible: true,
10788
10971
  zIndexClassname: remoteCloseButtonZIndex,
10789
10972
  onClick: handleClose
@@ -11265,7 +11448,6 @@ var $d78724a5e31d6c8f$export$2e2bcd8739ae039 = $d78724a5e31d6c8f$var$MobileDispl
11265
11448
 
11266
11449
 
11267
11450
 
11268
-
11269
11451
  // Check if we should let the event propagate. For example leaflet events should pass to allow map panning
11270
11452
  const $4d8d462ee41ffdc9$var$checkShouldPropagate = (e)=>{
11271
11453
  if (e.target) try {
@@ -11308,8 +11490,20 @@ const $4d8d462ee41ffdc9$var$handleTouch = (e)=>{
11308
11490
  localStorage.setItem("Retorik.Framework.TouchY", `${e.touches[0].screenY}`);
11309
11491
  e.touches.length > 1 && !$4d8d462ee41ffdc9$var$checkShouldPropagate(e) && e.cancelable && e.preventDefault();
11310
11492
  };
11311
- const $4d8d462ee41ffdc9$var$preventEvents = (element, ref)=>{
11312
- if (ref && ref?.current) {
11493
+ /**
11494
+ * Attach wheel | touch events on either a HTMLElement or a reference to a HTMLDivElement to prevent the propagation of this events to parent window.
11495
+ * @param {HTMLElement | null} element HTMLElement to which we will attach the events
11496
+ * @param {React.RefObject<HTMLDivElement>} ref reference to the HTMLDivElement to which we will attach the events
11497
+ * @param {AbortSignal} signal abort signal to remove events when needed
11498
+ */ const $4d8d462ee41ffdc9$var$preventEvents = (element, ref, signal)=>{
11499
+ // Add abort signal to options if present
11500
+ const options = signal ? {
11501
+ passive: false,
11502
+ signal: signal
11503
+ } : {
11504
+ passive: false
11505
+ };
11506
+ if (ref?.current) {
11313
11507
  try {
11314
11508
  ref.current.removeEventListener("wheel", (e)=>$4d8d462ee41ffdc9$var$handleRefStop(e, ref));
11315
11509
  ref.current.removeEventListener("touchstart", (e)=>$4d8d462ee41ffdc9$var$handleTouch(e));
@@ -11317,25 +11511,13 @@ const $4d8d462ee41ffdc9$var$preventEvents = (element, ref)=>{
11317
11511
  } catch (err) {
11318
11512
  console.warn(err);
11319
11513
  }
11320
- ref.current.addEventListener("wheel", (e)=>$4d8d462ee41ffdc9$var$handleRefStop(e, ref), {
11321
- passive: false
11322
- });
11323
- ref.current.addEventListener("touchstart", (e)=>$4d8d462ee41ffdc9$var$handleTouch(e), {
11324
- passive: false
11325
- });
11326
- ref.current.addEventListener("touchmove", (e)=>$4d8d462ee41ffdc9$var$handleRefStop(e, ref), {
11327
- passive: false
11328
- });
11514
+ ref.current.addEventListener("wheel", (e)=>$4d8d462ee41ffdc9$var$handleRefStop(e, ref), options);
11515
+ ref.current.addEventListener("touchstart", (e)=>$4d8d462ee41ffdc9$var$handleTouch(e), options);
11516
+ ref.current.addEventListener("touchmove", (e)=>$4d8d462ee41ffdc9$var$handleRefStop(e, ref), options);
11329
11517
  } else if (element) {
11330
- element.addEventListener("wheel", (e)=>$4d8d462ee41ffdc9$var$handleStop(e), {
11331
- passive: false
11332
- });
11333
- element.addEventListener("touchstart", (e)=>$4d8d462ee41ffdc9$var$handleTouch(e), {
11334
- passive: false
11335
- });
11336
- element.addEventListener("touchmove", (e)=>$4d8d462ee41ffdc9$var$handleStop(e), {
11337
- passive: false
11338
- });
11518
+ element.addEventListener("wheel", (e)=>$4d8d462ee41ffdc9$var$handleStop(e), options);
11519
+ element.addEventListener("touchstart", (e)=>$4d8d462ee41ffdc9$var$handleTouch(e), options);
11520
+ element.addEventListener("touchmove", (e)=>$4d8d462ee41ffdc9$var$handleStop(e), options);
11339
11521
  }
11340
11522
  };
11341
11523
  var $4d8d462ee41ffdc9$export$2e2bcd8739ae039 = $4d8d462ee41ffdc9$var$preventEvents;
@@ -11344,12 +11526,12 @@ var $4d8d462ee41ffdc9$export$2e2bcd8739ae039 = $4d8d462ee41ffdc9$var$preventEven
11344
11526
  const $27f6452958f7148b$var$FilterMobile = ({ className: className, setFiltersOpened: setFiltersOpened, handleClose: handleClose })=>{
11345
11527
  const translation = (0, $f902d4436881b887$export$6650dace022cfacc)((state)=>state.currentTranslations);
11346
11528
  const { resetFilters: resetFilters } = (0, $f3355770fb53f173$export$f9763ecd339e95eb)();
11347
- const { currentDeviceType: currentDeviceType } = (0, $c7fecc7ec9b4c272$export$3abe3478af3cb63b)();
11529
+ const { isWidget: isWidget } = (0, $c7fecc7ec9b4c272$export$3abe3478af3cb63b)();
11348
11530
  const [open, setOpen] = (0, $b3y7N$useState)(false);
11349
11531
  const [currentOpened, setCurrentOpened] = (0, $b3y7N$useState)(undefined);
11350
11532
  const divRef = (0, $b3y7N$useRef)(null);
11351
11533
  (0, $b3y7N$useEffect)(()=>{
11352
- if (divRef?.current) currentDeviceType === (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).widget && (0, $4d8d462ee41ffdc9$export$2e2bcd8739ae039)(null, divRef);
11534
+ if (divRef?.current) isWidget && (0, $4d8d462ee41ffdc9$export$2e2bcd8739ae039)(null, divRef);
11353
11535
  }, [
11354
11536
  divRef?.current
11355
11537
  ]);
@@ -11533,13 +11715,14 @@ const $5959014767b0decc$export$93d01adc5582c83e = ({ direction: direction, displ
11533
11715
  };
11534
11716
 
11535
11717
 
11718
+
11536
11719
  const { useSendPostBack: $6b0db30c4b5b5858$var$useSendPostBack } = (0, $b3y7N$hooks1);
11537
11720
  let $6b0db30c4b5b5858$var$timer = null;
11538
11721
  const $6b0db30c4b5b5858$var$ListContainer = ({ hasFilterOrSuggestedAction: hasFilterOrSuggestedAction, numberOfResults: numberOfResults })=>{
11539
11722
  const translation = (0, $f902d4436881b887$export$6650dace022cfacc)((state)=>state.currentTranslations);
11540
11723
  const sendPostback = $6b0db30c4b5b5858$var$useSendPostBack();
11541
11724
  const { content: content, selectedFilters: selectedFilters, loadingData: loadingData, setLoadingData: setLoadingData } = (0, $f3355770fb53f173$export$f9763ecd339e95eb)();
11542
- const { currentDeviceType: currentDeviceType, isMobile: isMobile } = (0, $c7fecc7ec9b4c272$export$3abe3478af3cb63b)();
11725
+ const { currentDeviceType: currentDeviceType, isMobile: isMobile, isWidget: isWidget } = (0, $c7fecc7ec9b4c272$export$3abe3478af3cb63b)();
11543
11726
  const currentPagination = (0, $97a7deacd265097c$export$2e2bcd8739ae039)();
11544
11727
  const [contentToDisplay, setContentToDisplay] = (0, $b3y7N$useState)([]);
11545
11728
  const [landscapeStyle, setLandscapeStyle] = (0, $b3y7N$useState)("large:rf-h-3/5");
@@ -11549,6 +11732,7 @@ const $6b0db30c4b5b5858$var$ListContainer = ({ hasFilterOrSuggestedAction: hasFi
11549
11732
  const scrollRef = (0, $b3y7N$useRef)(null);
11550
11733
  const contentRef = (0, $b3y7N$useRef)(null);
11551
11734
  const numberOfDisplayed = (0, $b3y7N$useRef)();
11735
+ const [abortController, setAbortController] = (0, $b3y7N$useState)(null);
11552
11736
  (0, $b3y7N$useEffect)(()=>{
11553
11737
  setLandscapeStyle(hasFilterOrSuggestedAction ? "large:rf-h-[60vh]" : "");
11554
11738
  }, [
@@ -11638,6 +11822,21 @@ const $6b0db30c4b5b5858$var$ListContainer = ({ hasFilterOrSuggestedAction: hasFi
11638
11822
  }, [
11639
11823
  contentToDisplay
11640
11824
  ]);
11825
+ (0, $b3y7N$useEffect)(()=>{
11826
+ if (contentRef?.current && isWidget) {
11827
+ if (currentDeviceType === (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).widgetLandscape) {
11828
+ const ab = new AbortController();
11829
+ setAbortController(ab);
11830
+ (0, $4d8d462ee41ffdc9$export$2e2bcd8739ae039)(null, contentRef, ab.signal);
11831
+ } else {
11832
+ abortController?.abort();
11833
+ setAbortController(null);
11834
+ }
11835
+ }
11836
+ }, [
11837
+ contentRef?.current,
11838
+ currentDeviceType
11839
+ ]);
11641
11840
  /**
11642
11841
  * Click on 'see more' button in mobile mode or scroll to the end of the list in desktop / borne modes.
11643
11842
  * This will send a postback message with 'hospitality.pointOfInterest.nextPage' name to get new content
@@ -11658,7 +11857,8 @@ const $6b0db30c4b5b5858$var$ListContainer = ({ hasFilterOrSuggestedAction: hasFi
11658
11857
  * Scroll to the scrollRef HTMLDivElement at the top of the view
11659
11858
  */ const scrollToRef = ()=>{
11660
11859
  if (scrollRef && scrollRef.current !== null) scrollRef.current.scrollIntoView({
11661
- behavior: "smooth"
11860
+ behavior: "smooth",
11861
+ block: "nearest"
11662
11862
  });
11663
11863
  setLoadingData(false);
11664
11864
  };
@@ -11847,10 +12047,10 @@ const $a8e0bc17b0fe6d93$var$springLeaveDuration = 2500;
11847
12047
  const $a8e0bc17b0fe6d93$var$List = ({ activity: activity, onClose: onClose })=>{
11848
12048
  const mode = (0, $56b00880a398c953$export$bd22554f31e5f96f)((state)=>state.mode);
11849
12049
  const sendEvent = (0, $b3y7N$useSendEvent)();
11850
- const { isMobile: isMobile, currentDeviceType: currentDeviceType } = (0, $c7fecc7ec9b4c272$export$3abe3478af3cb63b)();
12050
+ const { isMobile: isMobile, isWidget: isWidget, currentDeviceType: currentDeviceType } = (0, $c7fecc7ec9b4c272$export$3abe3478af3cb63b)();
11851
12051
  const { content: content, filters: filters, selectedFilters: selectedFilters, setContent: setContent } = (0, $f3355770fb53f173$export$f9763ecd339e95eb)();
11852
- const { locale: locale } = (0, $f902d4436881b887$export$6650dace022cfacc)();
11853
- const { lastListActivity: lastListActivity } = (0, $3426110875af99d0$export$77e4cc5334565f28)();
12052
+ const locale = (0, $f902d4436881b887$export$6650dace022cfacc)((state)=>state.locale);
12053
+ const lastListActivity = (0, $3426110875af99d0$export$77e4cc5334565f28)((state)=>state.lastListActivity);
11854
12054
  const [mobileFiltersOpened, setMobileFiltersOpened] = (0, $b3y7N$useState)(false);
11855
12055
  const [largeFilterOpenedKey, setLargeFilterOpenedKey] = (0, $b3y7N$useState)(undefined);
11856
12056
  const scrollRef = (0, $b3y7N$useRef)(null);
@@ -11861,6 +12061,7 @@ const $a8e0bc17b0fe6d93$var$List = ({ activity: activity, onClose: onClose })=>{
11861
12061
  }));
11862
12062
  const timerRef = (0, $b3y7N$useRef)(null);
11863
12063
  const divRef = (0, $b3y7N$useRef)(null);
12064
+ const [abortController, setAbortController] = (0, $b3y7N$useState)(null);
11864
12065
  /**
11865
12066
  * On call :
11866
12067
  * - set ListContext's content state to undefined
@@ -11907,13 +12108,24 @@ const $a8e0bc17b0fe6d93$var$List = ({ activity: activity, onClose: onClose })=>{
11907
12108
  * - scroll to the scrollRef HTML element at the top of the view
11908
12109
  */ const scrollToRef = ()=>{
11909
12110
  if (scrollRef && scrollRef.current !== null) scrollRef.current.scrollIntoView({
11910
- behavior: "smooth"
12111
+ behavior: "smooth",
12112
+ block: "nearest"
11911
12113
  });
11912
12114
  };
11913
12115
  (0, $b3y7N$useEffect)(()=>{
11914
- if (divRef?.current) currentDeviceType === (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).widget && (0, $4d8d462ee41ffdc9$export$2e2bcd8739ae039)(null, divRef);
12116
+ if (divRef?.current && isWidget) {
12117
+ if (currentDeviceType === (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).widget) {
12118
+ const ab = new AbortController();
12119
+ setAbortController(ab);
12120
+ (0, $4d8d462ee41ffdc9$export$2e2bcd8739ae039)(null, divRef, ab.signal);
12121
+ } else {
12122
+ abortController?.abort();
12123
+ setAbortController(null);
12124
+ }
12125
+ }
11915
12126
  }, [
11916
- divRef?.current
12127
+ divRef?.current,
12128
+ currentDeviceType
11917
12129
  ]);
11918
12130
  /**
11919
12131
  * On content change :
@@ -12039,10 +12251,12 @@ const $b749e27f4bddcf1e$var$Card = ({ children: children, className: className,
12039
12251
  if (to === "bottom") setScrollButtonDirection("top");
12040
12252
  else setScrollButtonDirection("bottom");
12041
12253
  if (from === "button" && botEndRef && botEndRef.current !== null && to === "bottom") botEndRef.current.scrollIntoView({
12042
- behavior: "smooth"
12254
+ behavior: "smooth",
12255
+ block: "nearest"
12043
12256
  });
12044
12257
  else if (to === "top" && cardRef && cardRef.current) cardRef.current.children[1].scrollIntoView({
12045
- behavior: "smooth"
12258
+ behavior: "smooth",
12259
+ block: "nearest"
12046
12260
  });
12047
12261
  };
12048
12262
  const handleScroll = ()=>{
@@ -12197,6 +12411,8 @@ var $fe786f6198e14865$export$2e2bcd8739ae039 = $fe786f6198e14865$var$Swiper;
12197
12411
 
12198
12412
 
12199
12413
 
12414
+
12415
+
12200
12416
  const $8e767b1b71b4e397$var$springEnterDuration = 1000;
12201
12417
  // Cards' width coefficients depending on the mode and display type
12202
12418
  const $8e767b1b71b4e397$var$widthCoefficients = {
@@ -12222,7 +12438,7 @@ const $8e767b1b71b4e397$var$Carousel = /*#__PURE__*/ (0, $b3y7N$react).forwardRe
12222
12438
  currentDeviceType
12223
12439
  ]);
12224
12440
  const coefficient = (0, $b3y7N$useMemo)(()=>{
12225
- return mode === (0, $f5ca62954d1f1f5b$export$9484bbecc3c49a2e).vocal ? currentDeviceType === (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).landscape ? history ? $8e767b1b71b4e397$var$widthCoefficients.textAndVocalMobile : $8e767b1b71b4e397$var$widthCoefficients.vocalDesktop : currentDeviceType === (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).borne ? history ? $8e767b1b71b4e397$var$widthCoefficients.vocalDesktop : $8e767b1b71b4e397$var$widthCoefficients.vocalBorne : $8e767b1b71b4e397$var$widthCoefficients.textAndVocalMobile : $8e767b1b71b4e397$var$widthCoefficients.textAndVocalMobile;
12441
+ return mode === (0, $f5ca62954d1f1f5b$export$9484bbecc3c49a2e).vocal ? currentDeviceType === (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).landscape || currentDeviceType === (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).widgetLandscape ? history ? $8e767b1b71b4e397$var$widthCoefficients.textAndVocalMobile : $8e767b1b71b4e397$var$widthCoefficients.vocalDesktop : currentDeviceType === (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).borne || currentDeviceType === (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).widgetBorne ? history ? $8e767b1b71b4e397$var$widthCoefficients.vocalDesktop : $8e767b1b71b4e397$var$widthCoefficients.vocalBorne : $8e767b1b71b4e397$var$widthCoefficients.textAndVocalMobile : $8e767b1b71b4e397$var$widthCoefficients.textAndVocalMobile;
12226
12442
  }, [
12227
12443
  mode,
12228
12444
  currentDeviceType
@@ -12239,6 +12455,7 @@ const $8e767b1b71b4e397$var$Carousel = /*#__PURE__*/ (0, $b3y7N$react).forwardRe
12239
12455
  const [wheeling, setWheeling] = (0, $b3y7N$useState)(0);
12240
12456
  const divRef = (0, $b3y7N$useRef)(null);
12241
12457
  const timerRef = (0, $b3y7N$useRef)(null);
12458
+ const dimensions = (0, $9d905911b403e245$export$2e2bcd8739ae039)(divRef);
12242
12459
  const [spring, api] = (0, $b3y7N$useSpring)(()=>({
12243
12460
  from: {
12244
12461
  transform: "translateX(0%)"
@@ -12269,13 +12486,13 @@ const $8e767b1b71b4e397$var$Carousel = /*#__PURE__*/ (0, $b3y7N$react).forwardRe
12269
12486
  * On component unmount :
12270
12487
  * - clear timeout
12271
12488
  */ (0, $b3y7N$useEffect)(()=>{
12272
- if (divRef.current) {
12273
- let newCardWidth = Math.floor(divRef.current.clientWidth * coefficient);
12489
+ if (dimensions) {
12490
+ let newCardWidth = Math.floor(dimensions.width * coefficient);
12274
12491
  if (forceMobileView && newCardWidth > 400) {
12275
12492
  newCardWidth = 400;
12276
- setCurrentPadding((divRef.current.clientWidth - newCardWidth - 5 * (nbCards - 1)) / 2);
12277
- if (nbCards * newCardWidth < divRef.current.clientWidth) setEnableTranslation(false);
12278
- } else setCurrentPadding((1 - coefficient) * divRef.current.clientWidth / 2);
12493
+ setCurrentPadding((dimensions.width - newCardWidth - 5 * (nbCards - 1)) / 2);
12494
+ if (nbCards * newCardWidth < dimensions.width) setEnableTranslation(false);
12495
+ } else setCurrentPadding((1 - coefficient) * dimensions.width / 2);
12279
12496
  const newCardHeight = Math.ceil(newCardWidth * 10 / 16);
12280
12497
  // Space needed to center to cards
12281
12498
  // Cards' width (all dispositions) and height (only used in vertical disposition)
@@ -12286,7 +12503,7 @@ const $8e767b1b71b4e397$var$Carousel = /*#__PURE__*/ (0, $b3y7N$react).forwardRe
12286
12503
  }
12287
12504
  return ()=>timerRef && clearTimeout(timerRef.current);
12288
12505
  }, [
12289
- divRef,
12506
+ dimensions,
12290
12507
  coefficient,
12291
12508
  nbCards,
12292
12509
  currentDeviceType,
@@ -12343,6 +12560,8 @@ const $8e767b1b71b4e397$var$Carousel = /*#__PURE__*/ (0, $b3y7N$react).forwardRe
12343
12560
  * @param distance : number
12344
12561
  * @param elpasedTime : number
12345
12562
  */ const onSwipeLeft = (distance, elapsedTime)=>{
12563
+ // Utils store util to show that the user is swiping
12564
+ (0, $3426110875af99d0$export$19e9368606a5170f)();
12346
12565
  const velocity = Math.abs(distance / elapsedTime);
12347
12566
  setTransitionDuration($8e767b1b71b4e397$var$defaultTransitionDuration);
12348
12567
  if (currentCard !== nbCards - 1 && cardWidth) {
@@ -12362,6 +12581,8 @@ const $8e767b1b71b4e397$var$Carousel = /*#__PURE__*/ (0, $b3y7N$react).forwardRe
12362
12581
  * @param distance : number
12363
12582
  * @param elpasedTime : number
12364
12583
  */ const onSwipeRight = (distance, elapsedTime)=>{
12584
+ // Utils store util to show that the user is swiping
12585
+ (0, $3426110875af99d0$export$19e9368606a5170f)();
12365
12586
  const velocity = Math.abs(distance / elapsedTime);
12366
12587
  setTransitionDuration($8e767b1b71b4e397$var$defaultTransitionDuration);
12367
12588
  if (currentCard !== 0 && cardWidth) {
@@ -12426,6 +12647,8 @@ const $8e767b1b71b4e397$var$Carousel = /*#__PURE__*/ (0, $b3y7N$react).forwardRe
12426
12647
  * - update currentCard state with the key parameter
12427
12648
  * @param key : number
12428
12649
  */ const handleClick = (key)=>{
12650
+ // Utils store util to show that the user is swiping
12651
+ (0, $3426110875af99d0$export$19e9368606a5170f)();
12429
12652
  setTransitionDuration($8e767b1b71b4e397$var$defaultTransitionDuration);
12430
12653
  setCurrentCard(key);
12431
12654
  };
@@ -12435,7 +12658,11 @@ const $8e767b1b71b4e397$var$Carousel = /*#__PURE__*/ (0, $b3y7N$react).forwardRe
12435
12658
  * - set wheeling state to a positive or negative unique value (here Date.now() is used as unique)
12436
12659
  * @param delta : number
12437
12660
  */ const handleWheel = (delta)=>{
12438
- if (delta !== undefined) setWheeling(delta > 0 ? Date.now() : -Date.now());
12661
+ if (delta !== undefined) {
12662
+ // Utils store util to show that the user is swiping
12663
+ (0, $3426110875af99d0$export$19e9368606a5170f)();
12664
+ setWheeling(delta > 0 ? Date.now() : -Date.now());
12665
+ }
12439
12666
  };
12440
12667
  return /*#__PURE__*/ (0, $b3y7N$jsxs)((0, $b3y7N$animated).div, {
12441
12668
  ref: divRef,
@@ -12775,7 +13002,7 @@ var $c0e1e00b31395822$export$2e2bcd8739ae039 = $c0e1e00b31395822$var$HistoryItem
12775
13002
 
12776
13003
  const $84322fe6e310bbe4$var$HistoryList = ()=>{
12777
13004
  const translation = (0, $f902d4436881b887$export$6650dace022cfacc)((state)=>state.currentTranslations);
12778
- const { currentDeviceType: currentDeviceType } = (0, $c7fecc7ec9b4c272$export$3abe3478af3cb63b)();
13005
+ const { isWidget: isWidget, isBorne: isBorne } = (0, $c7fecc7ec9b4c272$export$3abe3478af3cb63b)();
12779
13006
  const activities = (0, $d1182d10cbe1b27f$export$2e2bcd8739ae039)();
12780
13007
  const scrollRef = (0, $b3y7N$useRef)(null);
12781
13008
  const divRef = (0, $b3y7N$useRef)(null);
@@ -12785,7 +13012,8 @@ const $84322fe6e310bbe4$var$HistoryList = ()=>{
12785
13012
  * - scroll to the scrollRef HTML element at the bottom of the view
12786
13013
  */ const scrollToRef = ()=>{
12787
13014
  if (scrollRef && scrollRef.current !== null) scrollRef.current.scrollIntoView({
12788
- behavior: "smooth"
13015
+ behavior: "smooth",
13016
+ block: "nearest"
12789
13017
  });
12790
13018
  };
12791
13019
  /**
@@ -12797,7 +13025,7 @@ const $84322fe6e310bbe4$var$HistoryList = ()=>{
12797
13025
  }, 200);
12798
13026
  }, []);
12799
13027
  (0, $b3y7N$useEffect)(()=>{
12800
- if (divRef?.current) currentDeviceType === (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).widget && (0, $4d8d462ee41ffdc9$export$2e2bcd8739ae039)(null, divRef);
13028
+ divRef?.current && isWidget && (0, $4d8d462ee41ffdc9$export$2e2bcd8739ae039)(null, divRef);
12801
13029
  }, [
12802
13030
  divRef?.current
12803
13031
  ]);
@@ -12812,7 +13040,7 @@ const $84322fe6e310bbe4$var$HistoryList = ()=>{
12812
13040
  title: translation.history.title,
12813
13041
  children: /*#__PURE__*/ (0, $b3y7N$jsxs)("div", {
12814
13042
  ref: divRef,
12815
- className: `rf-pb-4 rf-overflow-y-scroll ${currentDeviceType === (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).borne ? "rf-scrollbar-thin" : "rf-scrollbar-hidden"}`,
13043
+ className: `rf-pb-4 rf-overflow-y-scroll ${isBorne ? "rf-scrollbar-thin" : "rf-scrollbar-hidden"}`,
12816
13044
  children: [
12817
13045
  activities.map((activity, key)=>{
12818
13046
  return /*#__PURE__*/ (0, $b3y7N$jsx)((0, $c0e1e00b31395822$export$2e2bcd8739ae039), {
@@ -12839,16 +13067,21 @@ var $84322fe6e310bbe4$export$2e2bcd8739ae039 = $84322fe6e310bbe4$var$HistoryList
12839
13067
 
12840
13068
 
12841
13069
 
13070
+
12842
13071
  const $3084bb16a28ccfad$var$LanguageChoice = ()=>{
12843
13072
  const translation = (0, $f902d4436881b887$export$6650dace022cfacc)((state)=>state.currentTranslations);
12844
13073
  const locale = (0, $f902d4436881b887$export$6650dace022cfacc)((state)=>state.locale);
12845
13074
  const supported = (0, $f902d4436881b887$export$6650dace022cfacc)((state)=>state.supported);
13075
+ const { configuration: { skipWelcome: skipWelcome } } = (0, $15b0bc93a9787124$export$d8760bee47331b1d)();
12846
13076
  const sendEvent = (0, $b3y7N$useSendEvent)();
12847
13077
  const [currentLanguage, setCurrentLanguage] = (0, $b3y7N$useState)(locale);
12848
- const handleClose = ()=>{
13078
+ const handleClose = (changed)=>{
12849
13079
  (0, $3426110875af99d0$export$f0c096b4ecd7115d)((0, $f5ca62954d1f1f5b$export$f05d0fed0593ead7).none);
12850
- sendEvent("Davi.CloseWindow", null);
12851
- sendEvent("Davi.CloseWindowLanguages", null);
13080
+ // Only send events when language has not been changed, either way it will collide with the TriggerWelcome event
13081
+ if (!changed) {
13082
+ sendEvent("Davi.CloseWindow", null);
13083
+ sendEvent("Davi.CloseWindowLanguages", null);
13084
+ }
12852
13085
  };
12853
13086
  const handleChange = (language)=>{
12854
13087
  setCurrentLanguage(language);
@@ -12858,16 +13091,17 @@ const $3084bb16a28ccfad$var$LanguageChoice = ()=>{
12858
13091
  * Send a 'TriggerWelcome' event to get the welcome message in the new language.
12859
13092
  * @param language string
12860
13093
  */ const handleSelect = (language)=>{
12861
- if (language !== locale) {
13094
+ const changed = language !== locale;
13095
+ if (changed) {
12862
13096
  (0, $f902d4436881b887$export$c8aadf3621e41efb)(language);
12863
- setTimeout(()=>{
13097
+ !skipWelcome && setTimeout(()=>{
12864
13098
  sendEvent("TriggerWelcome", undefined);
12865
13099
  }, 150);
12866
13100
  }
12867
- handleClose();
13101
+ handleClose(changed);
12868
13102
  };
12869
13103
  return /*#__PURE__*/ (0, $b3y7N$jsxs)((0, $bfee9debe091d3c7$export$2e2bcd8739ae039), {
12870
- handleClose: handleClose,
13104
+ handleClose: ()=>handleClose(false),
12871
13105
  children: [
12872
13106
  /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
12873
13107
  className: "large:rf-mt-[20vh] large-tactile:rf-mt-0 rf-title-bold-size-auto rf-font-bold",
@@ -13340,12 +13574,11 @@ const $4b302858c0cfd21a$var$DownloadQR = ({ url: url })=>{
13340
13574
  var $4b302858c0cfd21a$export$2e2bcd8739ae039 = $4b302858c0cfd21a$var$DownloadQR;
13341
13575
 
13342
13576
 
13343
-
13344
13577
  const $097ad82d11b7502d$var$DownloadQRHeight = 200;
13345
13578
  const $097ad82d11b7502d$var$DownloadSheetHeight = 100;
13346
13579
  const $097ad82d11b7502d$var$DetailedText = ({ text: text, otherInformations: otherInformations, color: color, url: url, titleHeight: titleHeight })=>{
13347
13580
  const { configuration: { isUsedOnBorne: isUsedOnBorne } } = (0, $15b0bc93a9787124$export$d8760bee47331b1d)();
13348
- const { currentDeviceType: currentDeviceType, currentHeight: currentHeight, isMobile: isMobile } = (0, $c7fecc7ec9b4c272$export$3abe3478af3cb63b)();
13581
+ const { currentHeight: currentHeight, isMobile: isMobile, isLandscape: isLandscape } = (0, $c7fecc7ec9b4c272$export$3abe3478af3cb63b)();
13349
13582
  const textRef = (0, $b3y7N$useRef)(null);
13350
13583
  const otherInformationsRef = (0, $b3y7N$useRef)(null);
13351
13584
  const [opacityStyle, setOpacityStyle] = (0, $b3y7N$useState)("");
@@ -13365,8 +13598,8 @@ const $097ad82d11b7502d$var$DetailedText = ({ text: text, otherInformations: oth
13365
13598
  const [otherInformationsMaxHeight, setOtherInformationsMaxHeight] = (0, $b3y7N$useState)(0);
13366
13599
  (0, $b3y7N$useEffect)(()=>{
13367
13600
  if (textRef?.current && otherInformationsRef?.current && textContainerMaxHeight && !isMobile) {
13368
- const textHeight = currentDeviceType === (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).landscape ? textContainerMaxHeight * 58 / 100 : currentHeight * 30 / 100;
13369
- const otherInformationsHeight = currentDeviceType === (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).landscape ? textContainerMaxHeight * 40 / 100 : currentHeight * 18 / 100;
13601
+ const textHeight = isLandscape ? textContainerMaxHeight * 58 / 100 : currentHeight * 30 / 100;
13602
+ const otherInformationsHeight = isLandscape ? textContainerMaxHeight * 40 / 100 : currentHeight * 18 / 100;
13370
13603
  if (textRef.current.scrollHeight > textHeight) {
13371
13604
  if (otherInformationsRef.current.scrollHeight > otherInformationsHeight) {
13372
13605
  setTextMaxHeight(textHeight);
@@ -13430,7 +13663,7 @@ const $097ad82d11b7502d$var$DetailedText = ({ text: text, otherInformations: oth
13430
13663
  /*#__PURE__*/ (0, $b3y7N$jsxs)("div", {
13431
13664
  className: "rf-w-full rf-flex rf-flex-col rf-items-start",
13432
13665
  style: {
13433
- maxHeight: currentDeviceType === (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).landscape ? textContainerMaxHeight : undefined
13666
+ maxHeight: isLandscape ? textContainerMaxHeight : undefined
13434
13667
  },
13435
13668
  children: [
13436
13669
  processedText && /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
@@ -13476,7 +13709,7 @@ const $097ad82d11b7502d$var$DetailedText = ({ text: text, otherInformations: oth
13476
13709
  })
13477
13710
  ]
13478
13711
  }),
13479
- currentDeviceType === (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).landscape && url && (isUsedOnBorne ? /*#__PURE__*/ (0, $b3y7N$jsx)((0, $4b302858c0cfd21a$export$2e2bcd8739ae039), {
13712
+ isLandscape && url && (isUsedOnBorne ? /*#__PURE__*/ (0, $b3y7N$jsx)((0, $4b302858c0cfd21a$export$2e2bcd8739ae039), {
13480
13713
  url: url
13481
13714
  }) : /*#__PURE__*/ (0, $b3y7N$jsx)((0, $ea652c6136f8ad06$export$2e2bcd8739ae039), {
13482
13715
  url: url
@@ -14156,9 +14389,8 @@ var $9008f3f761b264d2$export$2e2bcd8739ae039 = $9008f3f761b264d2$var$Map;
14156
14389
 
14157
14390
 
14158
14391
 
14159
-
14160
14392
  const $9c484f261d7d5f92$var$DetailedAddress = ({ address: address, phoneNumber: phoneNumber, coordinates: coordinates, color: color, customerReviews: customerReviews, url: url })=>{
14161
- const { currentWidth: currentWidth, currentDeviceType: currentDeviceType, isMobile: isMobile } = (0, $c7fecc7ec9b4c272$export$3abe3478af3cb63b)();
14393
+ const { currentWidth: currentWidth, isMobile: isMobile, isLandscape: isLandscape, isBorne: isBorne } = (0, $c7fecc7ec9b4c272$export$3abe3478af3cb63b)();
14162
14394
  const { configuration: configuration } = (0, $15b0bc93a9787124$export$d8760bee47331b1d)();
14163
14395
  return /*#__PURE__*/ (0, $b3y7N$jsxs)("div", {
14164
14396
  className: "rf-relative rf-w-1/3 vertical:rf-w-full large:rf-bg-truewhite rf-flex rf-flex-col large-vertical:rf-flex-row",
@@ -14169,13 +14401,13 @@ const $9c484f261d7d5f92$var$DetailedAddress = ({ address: address, phoneNumber:
14169
14401
  customerReviews: customerReviews
14170
14402
  }),
14171
14403
  /*#__PURE__*/ (0, $b3y7N$jsxs)("div", {
14172
- className: `rf-px-6 rf-flex rf-flex-col large-vertical:rf-w-1/2 rf-items-center rf-text-center ${customerReviews ? currentDeviceType !== (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).borne ? "rf-bg-truewhite rf-justify-start" : "rf-bg-truewhite rf-justify-center" : "rf-justify-center"}`,
14404
+ className: `rf-px-6 rf-flex rf-flex-col large-vertical:rf-w-1/2 rf-items-center rf-text-center ${customerReviews ? isBorne ? "rf-bg-truewhite rf-justify-center" : "rf-bg-truewhite rf-justify-start" : "rf-justify-center"}`,
14173
14405
  style: {
14174
- height: isMobile ? customerReviews ? currentWidth : undefined : currentDeviceType === (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).landscape ? coordinates && coordinates.latitude && coordinates.longitude ? "50%" : "100%" : "calc(50vw - 3rem)"
14406
+ height: isMobile ? customerReviews ? currentWidth : undefined : isLandscape ? coordinates && coordinates.latitude && coordinates.longitude ? "50%" : "100%" : "calc(50vw - 3rem)"
14175
14407
  },
14176
14408
  children: [
14177
14409
  /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
14178
- className: customerReviews && currentDeviceType !== (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).borne ? currentDeviceType === (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).landscape ? "rf-pt-[26vh] rf-pb-12" : "rf-pt-11/20 rf-pb-12" : "rf-py-12",
14410
+ className: customerReviews && !isBorne ? isLandscape ? "rf-pt-[26vh] rf-pb-12" : "rf-pt-11/20 rf-pb-12" : "rf-py-12",
14179
14411
  children: address && /*#__PURE__*/ (0, $b3y7N$jsxs)((0, $b3y7N$react).Fragment, {
14180
14412
  children: [
14181
14413
  address.street && /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
@@ -14190,7 +14422,7 @@ const $9c484f261d7d5f92$var$DetailedAddress = ({ address: address, phoneNumber:
14190
14422
  phoneNumber && /*#__PURE__*/ (0, $b3y7N$jsx)((0, $ac6c51612e5952f1$export$2e2bcd8739ae039), {
14191
14423
  phoneNumber: phoneNumber
14192
14424
  }),
14193
- coordinates && coordinates.latitude && coordinates.longitude && currentDeviceType === (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).borne && url && (configuration.isUsedOnBorne ? /*#__PURE__*/ (0, $b3y7N$jsx)((0, $4b302858c0cfd21a$export$2e2bcd8739ae039), {
14425
+ coordinates && coordinates.latitude && coordinates.longitude && isBorne && url && (configuration.isUsedOnBorne ? /*#__PURE__*/ (0, $b3y7N$jsx)((0, $4b302858c0cfd21a$export$2e2bcd8739ae039), {
14194
14426
  url: url
14195
14427
  }) : /*#__PURE__*/ (0, $b3y7N$jsx)((0, $ea652c6136f8ad06$export$2e2bcd8739ae039), {
14196
14428
  className: "rf-justify-center",
@@ -14201,14 +14433,14 @@ const $9c484f261d7d5f92$var$DetailedAddress = ({ address: address, phoneNumber:
14201
14433
  coordinates && coordinates.latitude && coordinates.longitude ? /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
14202
14434
  className: "rf-relative large-vertical:rf-w-1/2",
14203
14435
  style: {
14204
- height: isMobile ? currentWidth : currentDeviceType === (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).landscape ? "50%" : "calc(50vw - 3rem)"
14436
+ height: isMobile ? currentWidth : isLandscape ? "50%" : "calc(50vw - 3rem)"
14205
14437
  },
14206
14438
  children: /*#__PURE__*/ (0, $b3y7N$jsx)((0, $9008f3f761b264d2$export$2e2bcd8739ae039), {
14207
14439
  latitude: coordinates.latitude,
14208
14440
  longitude: coordinates.longitude,
14209
14441
  color: color
14210
14442
  })
14211
- }) : currentDeviceType === (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).borne ? /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
14443
+ }) : isBorne ? /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
14212
14444
  className: "rf-flex rf-justify-center rf-items-center rf-h-[calc(50vw-3rem)] rf-w-1/2",
14213
14445
  children: url && (configuration.isUsedOnBorne ? /*#__PURE__*/ (0, $b3y7N$jsx)((0, $4b302858c0cfd21a$export$2e2bcd8739ae039), {
14214
14446
  url: url
@@ -14237,7 +14469,7 @@ const $df69961a6c1440a3$var$AttachmentDetails = ()=>{
14237
14469
  const locale = (0, $f902d4436881b887$export$6650dace022cfacc)((state)=>state.locale);
14238
14470
  const { configuration: { isUsedOnBorne: isUsedOnBorne }, baseAddress: baseAddress } = (0, $15b0bc93a9787124$export$d8760bee47331b1d)();
14239
14471
  const mode = (0, $56b00880a398c953$export$bd22554f31e5f96f)((state)=>state.mode);
14240
- const { themeColors: themeColors, isMobile: isMobile, currentDeviceType: currentDeviceType } = (0, $c7fecc7ec9b4c272$export$3abe3478af3cb63b)();
14472
+ const { themeColors: themeColors, isMobile: isMobile, isWidget: isWidget, currentDeviceType: currentDeviceType } = (0, $c7fecc7ec9b4c272$export$3abe3478af3cb63b)();
14241
14473
  const [content, setContent] = (0, $b3y7N$useState)(undefined);
14242
14474
  const [color, setColor] = (0, $b3y7N$useState)(themeColors.secondary);
14243
14475
  const [titleHeight, setTitleHeight] = (0, $b3y7N$useState)(0);
@@ -14255,7 +14487,7 @@ const $df69961a6c1440a3$var$AttachmentDetails = ()=>{
14255
14487
  detailedItemContent
14256
14488
  ]);
14257
14489
  (0, $b3y7N$useLayoutEffect)(()=>{
14258
- if (divRef?.current) currentDeviceType === (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).widget && (0, $4d8d462ee41ffdc9$export$2e2bcd8739ae039)(null, divRef);
14490
+ if (divRef?.current) isWidget && (0, $4d8d462ee41ffdc9$export$2e2bcd8739ae039)(null, divRef);
14259
14491
  });
14260
14492
  (0, $b3y7N$useEffect)(()=>{
14261
14493
  if (content) {
@@ -14710,7 +14942,7 @@ async function $891be3260bb3784e$export$cdd2c9f4b3acf5fb(data) {
14710
14942
  const $26692c14feff4dbf$export$6478e9f7582bd8fc = ()=>{
14711
14943
  const translation = (0, $f902d4436881b887$export$6650dace022cfacc)((state)=>state.currentTranslations);
14712
14944
  const { addressData: addressData } = (0, $15b0bc93a9787124$export$d8760bee47331b1d)();
14713
- const { isMobile: isMobile, currentDeviceType: currentDeviceType } = (0, $c7fecc7ec9b4c272$export$3abe3478af3cb63b)();
14945
+ const { isMobile: isMobile, isWidget: isWidget } = (0, $c7fecc7ec9b4c272$export$3abe3478af3cb63b)();
14714
14946
  const [municipalPoliceNumber, setMunicipalPoliceNumber] = (0, $b3y7N$useState)("");
14715
14947
  const [localHospitalName, setLocalHospitalName] = (0, $b3y7N$useState)("");
14716
14948
  const [localHospitalNumber, setLocalHospitalNumber] = (0, $b3y7N$useState)("");
@@ -14719,7 +14951,7 @@ const $26692c14feff4dbf$export$6478e9f7582bd8fc = ()=>{
14719
14951
  const subView = (0, $f5ca62954d1f1f5b$export$3b4d92ba873f009a).emergency;
14720
14952
  const divRef = (0, $b3y7N$useRef)(null);
14721
14953
  (0, $b3y7N$useEffect)(()=>{
14722
- if (divRef?.current) currentDeviceType === (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).widget && (0, $4d8d462ee41ffdc9$export$2e2bcd8739ae039)(null, divRef);
14954
+ if (divRef?.current) isWidget && (0, $4d8d462ee41ffdc9$export$2e2bcd8739ae039)(null, divRef);
14723
14955
  }, [
14724
14956
  divRef?.current
14725
14957
  ]);
@@ -15048,43 +15280,6 @@ var $5ed8b6227682377a$export$2e2bcd8739ae039 = $5ed8b6227682377a$var$SubViews;
15048
15280
 
15049
15281
 
15050
15282
 
15051
- const $f9b55dee2122a017$export$d95eb9b67812311f = (0, $b3y7N$create)()(()=>{
15052
- return {
15053
- widgetDisplayType: "large",
15054
- open: false,
15055
- loaded: false
15056
- };
15057
- });
15058
- const $f9b55dee2122a017$export$a1c83309c736819f = ()=>{
15059
- $f9b55dee2122a017$export$d95eb9b67812311f.setState({
15060
- open: true,
15061
- loaded: true
15062
- });
15063
- };
15064
- const $f9b55dee2122a017$export$d27f1b0993b666c = ()=>{
15065
- $f9b55dee2122a017$export$d95eb9b67812311f.setState({
15066
- open: false,
15067
- loaded: true
15068
- });
15069
- };
15070
- const $f9b55dee2122a017$export$77c0ba4d0d97cee5 = ()=>{
15071
- const open = $f9b55dee2122a017$export$d95eb9b67812311f.getState().open;
15072
- $f9b55dee2122a017$export$d95eb9b67812311f.setState({
15073
- open: !open,
15074
- loaded: true
15075
- });
15076
- };
15077
- const $f9b55dee2122a017$export$f0e9d14ede4c01bd = ()=>{
15078
- const displayType = $f9b55dee2122a017$export$d95eb9b67812311f.getState().widgetDisplayType;
15079
- $f9b55dee2122a017$export$d95eb9b67812311f.setState({
15080
- widgetDisplayType: displayType === "large" ? "thumbnail" : "large"
15081
- });
15082
- };
15083
-
15084
-
15085
-
15086
-
15087
-
15088
15283
 
15089
15284
  function $d8c9d0fe519d0cbe$export$2e2bcd8739ae039() {
15090
15285
  const activities = (0, $9b100ac34d01a331$export$b56465394e2b1287)((state)=>state.messageActivities);
@@ -15130,6 +15325,46 @@ function $d8c9d0fe519d0cbe$export$2e2bcd8739ae039() {
15130
15325
 
15131
15326
 
15132
15327
 
15328
+ /* eslint-disable react/jsx-boolean-value */
15329
+
15330
+
15331
+
15332
+
15333
+
15334
+ const $f9b55dee2122a017$export$d95eb9b67812311f = (0, $b3y7N$create)()(()=>{
15335
+ return {
15336
+ widgetDisplayType: "large",
15337
+ open: false,
15338
+ loaded: false
15339
+ };
15340
+ });
15341
+ const $f9b55dee2122a017$export$a1c83309c736819f = ()=>{
15342
+ $f9b55dee2122a017$export$d95eb9b67812311f.setState({
15343
+ open: true,
15344
+ loaded: true
15345
+ });
15346
+ };
15347
+ const $f9b55dee2122a017$export$d27f1b0993b666c = ()=>{
15348
+ $f9b55dee2122a017$export$d95eb9b67812311f.setState({
15349
+ open: false,
15350
+ loaded: true
15351
+ });
15352
+ };
15353
+ const $f9b55dee2122a017$export$77c0ba4d0d97cee5 = ()=>{
15354
+ const open = $f9b55dee2122a017$export$d95eb9b67812311f.getState().open;
15355
+ $f9b55dee2122a017$export$d95eb9b67812311f.setState({
15356
+ open: !open,
15357
+ loaded: true
15358
+ });
15359
+ };
15360
+ const $f9b55dee2122a017$export$f0e9d14ede4c01bd = ()=>{
15361
+ const displayType = $f9b55dee2122a017$export$d95eb9b67812311f.getState().widgetDisplayType;
15362
+ $f9b55dee2122a017$export$d95eb9b67812311f.setState({
15363
+ widgetDisplayType: displayType === "large" ? "thumbnail" : "large"
15364
+ });
15365
+ };
15366
+
15367
+
15133
15368
 
15134
15369
 
15135
15370
 
@@ -15138,7 +15373,8 @@ function $d8c9d0fe519d0cbe$export$2e2bcd8739ae039() {
15138
15373
 
15139
15374
 
15140
15375
 
15141
- const $0d96395552e34116$export$aa0c5ba341a0028 = ({ agentName: agentName = "L\xe9a", companyName: companyName = "Davi", subCompanyMessage: subCompanyMessage, imageUrl: imageUrl = "", forceMobileView: forceMobileView = false })=>{
15376
+ const $0d96395552e34116$export$aa0c5ba341a0028 = ({ agentName: agentName = "L\xe9a", companyName: companyName, companyNameLocalized: companyNameLocalized, subCompanyMessage: subCompanyMessage, subCompanyMessageLocalized: subCompanyMessageLocalized, imageUrl: imageUrl = "" })=>{
15377
+ const locale = (0, $f902d4436881b887$export$6650dace022cfacc)((state)=>state.locale);
15142
15378
  const translation = (0, $f902d4436881b887$export$6650dace022cfacc)((state)=>state.currentTranslations);
15143
15379
  const { themeColors: themeColors } = (0, $c7fecc7ec9b4c272$export$3abe3478af3cb63b)();
15144
15380
  return /*#__PURE__*/ (0, $b3y7N$jsxs)("div", {
@@ -15150,7 +15386,7 @@ const $0d96395552e34116$export$aa0c5ba341a0028 = ({ agentName: agentName = "L\xe
15150
15386
  children: /*#__PURE__*/ (0, $b3y7N$jsx)("img", {
15151
15387
  src: imageUrl,
15152
15388
  alt: "Agent",
15153
- className: `${forceMobileView ? "rf-m-auto rf-max-h-28" : "rf-w-full"} rf-aspect-square rf-rounded-half rf-border-secondary rf-border-2 rf-bg-truewhite`
15389
+ className: "rf-w-full rf-max-h-28 rf-aspect-square rf-rounded-half rf-border-secondary rf-border-2 rf-bg-truewhite"
15154
15390
  })
15155
15391
  }),
15156
15392
  /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
@@ -15158,11 +15394,11 @@ const $0d96395552e34116$export$aa0c5ba341a0028 = ({ agentName: agentName = "L\xe
15158
15394
  style: {
15159
15395
  color: themeColors.companyName
15160
15396
  },
15161
- children: companyName
15397
+ children: companyNameLocalized?.[locale] || companyName || "Davi"
15162
15398
  }),
15163
15399
  /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
15164
15400
  className: "rf-col-start-2 rf-col-span-full rf-row-start-3 rf-row-end-4 rf-flex rf-items-start rf-text-sm rf-italic",
15165
- children: subCompanyMessage || `${agentName} ${translation.menu.answer}`
15401
+ children: subCompanyMessageLocalized?.[locale] || subCompanyMessage || `${agentName} ${translation.menu.answer}`
15166
15402
  }),
15167
15403
  /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
15168
15404
  className: "rf-col-start-2 rf-col-span-full rf-row-start-2 rf-row-end-3 -rf-ml-2 rf-flex rf-items-center",
@@ -15176,82 +15412,226 @@ const $0d96395552e34116$export$aa0c5ba341a0028 = ({ agentName: agentName = "L\xe
15176
15412
 
15177
15413
 
15178
15414
 
15415
+
15416
+
15417
+
15418
+
15419
+
15420
+
15421
+
15422
+
15423
+
15424
+
15179
15425
  /**
15180
- * On call :
15181
- * - check if the activity data need a display as list to be triggered
15426
+ * Check if the activity data need a display as list to be triggered
15182
15427
  * @param activity : RetorikActivity
15183
15428
  * @returns boolean
15184
- */ function $019b0a0c6328bd4c$var$checkListDisplay(activity) {
15185
- return activity && (activity.attachmentLayout?.toLowerCase() === "davilist" || activity.attachmentLayout !== "carousel" && activity.attachments && activity.attachments.length > 1) || false;
15186
- }
15187
- const $019b0a0c6328bd4c$export$a1f3f6b0b496333e = ()=>{
15429
+ */ const $1136774ec828a7ed$export$7c55936a30618336 = (activity)=>{
15430
+ return !!(activity?.attachmentLayout?.toLowerCase() === "davilist" || activity?.attachmentLayout !== "carousel" && activity?.attachments?.length && activity.attachments.length > 1);
15431
+ };
15432
+
15433
+
15434
+ const $ea27a870d6ff37c7$var$DisplayStandard = ({ botResponses: botResponses, isMobile: isMobile })=>{
15435
+ const locale = (0, $f902d4436881b887$export$6650dace022cfacc)((state)=>state.locale);
15436
+ const { configuration: { forceMobileView: forceMobileView } } = (0, $15b0bc93a9787124$export$d8760bee47331b1d)();
15437
+ return /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
15438
+ id: "retorik-botResponses",
15439
+ className: "rf-flex rf-flex-col rf-text-size-auto rf-gap-2 rf-scrollbar-hidden",
15440
+ children: botResponses.map((activity, key)=>{
15441
+ const answerTime = activity.localTimestamp ? new Date(activity.localTimestamp) : activity.timestamp ? new Date(activity.timestamp) : new Date();
15442
+ return /*#__PURE__*/ (0, $b3y7N$jsxs)("div", {
15443
+ className: `${key > 0 && "rf-pt-2"} rf-text-textModePanelConversationBot rf-animate-slideBottom rf-flex rf-flex-col rf-items-start rf-gap-2`,
15444
+ children: [
15445
+ isMobile && /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
15446
+ className: "rf-px-4 rf-text-[#9A9A9A]",
15447
+ children: answerTime.toLocaleString(locale, {
15448
+ hour: "numeric",
15449
+ minute: "numeric"
15450
+ })
15451
+ }),
15452
+ activity.htmlText ? /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
15453
+ className: "rf-px-4",
15454
+ dangerouslySetInnerHTML: {
15455
+ __html: activity.htmlText
15456
+ }
15457
+ }) : activity.text ? /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
15458
+ className: "rf-px-4",
15459
+ children: (0, $3792187fd212489a$export$d6c6ec86eedacfd9)(activity.text)
15460
+ }) : /*#__PURE__*/ (0, $b3y7N$jsx)((0, $b3y7N$react).Fragment, {}),
15461
+ !!activity?.attachments?.length && !(0, $1136774ec828a7ed$export$7c55936a30618336)(activity) && /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
15462
+ className: `${forceMobileView ? "rf-m-auto" : "rf-w-full"} ${activity.attachments.length <= 1 && "rf-px-4"} rf-flex rf-flex-col rf-gap-2`,
15463
+ children: /*#__PURE__*/ (0, $b3y7N$jsx)((0, $d7c37f48f10c5387$export$2e2bcd8739ae039), {
15464
+ activity: activity
15465
+ })
15466
+ })
15467
+ ]
15468
+ }, key);
15469
+ })
15470
+ });
15471
+ };
15472
+ var $ea27a870d6ff37c7$export$2e2bcd8739ae039 = $ea27a870d6ff37c7$var$DisplayStandard;
15473
+
15474
+
15475
+
15476
+
15477
+
15478
+ const $b22a7bbed115cb27$var$interval = 25;
15479
+ const $b22a7bbed115cb27$var$DisplayStreaming = ({ streamingQueue: streamingQueue, triggerScroll: triggerScroll })=>{
15480
+ const [streamingTextToDisplay, setStreamingTextToDisplay] = (0, $b3y7N$useState)("");
15481
+ const [currentTextEnded, setCurrentTextEnded] = (0, $b3y7N$useState)(true);
15482
+ const [currentQueueIndex, setCurrentQueueIndex] = (0, $b3y7N$useState)(0);
15483
+ const intervalRef = (0, $b3y7N$useRef)(null);
15484
+ const streamRef = (0, $b3y7N$useRef)([]);
15485
+ const handleNewStreaming = (text)=>{
15486
+ setCurrentTextEnded(false);
15487
+ // Create array containing indexes of \n parts to replace them with html <br /> tag later
15488
+ const slashNIndexesArray = [];
15489
+ let searchIndex = 0;
15490
+ while(text.indexOf("\n", searchIndex) !== -1){
15491
+ const index = text.indexOf("\n", searchIndex);
15492
+ slashNIndexesArray.push(index);
15493
+ searchIndex = index + 2;
15494
+ }
15495
+ streamRef.current = text.split("");
15496
+ let currentIndex = 0;
15497
+ intervalRef.current = setInterval(()=>{
15498
+ if (streamRef.current?.length) {
15499
+ const current = streamRef.current[0];
15500
+ if (slashNIndexesArray.includes(currentIndex)) {
15501
+ // If the current index is present in the array of indexes, then it means it is a \n so replace it with <br /> and jump 2 characters after
15502
+ setStreamingTextToDisplay((value)=>`${value}<br />`);
15503
+ streamRef.current = streamRef.current.slice(1);
15504
+ } else {
15505
+ setStreamingTextToDisplay((value)=>`${value}${current}`);
15506
+ streamRef.current = streamRef.current.slice(1);
15507
+ }
15508
+ currentIndex++;
15509
+ } else {
15510
+ setCurrentTextEnded(true);
15511
+ intervalRef.current && clearInterval(intervalRef.current);
15512
+ }
15513
+ }, $b22a7bbed115cb27$var$interval);
15514
+ };
15515
+ (0, $b3y7N$useEffect)(()=>{
15516
+ if (streamingQueue?.length && currentTextEnded) {
15517
+ if (streamingQueue.length > currentQueueIndex) {
15518
+ handleNewStreaming(streamingQueue[currentQueueIndex].text || "");
15519
+ setCurrentQueueIndex((value)=>value + 1);
15520
+ } else {
15521
+ setCurrentQueueIndex(0);
15522
+ (0, $04ce41b46d359821$export$de8aad637f733113)(null);
15523
+ }
15524
+ }
15525
+ }, [
15526
+ streamingQueue,
15527
+ currentTextEnded
15528
+ ]);
15529
+ (0, $b3y7N$useEffect)(()=>{
15530
+ streamingTextToDisplay.length % 20 === 0 && triggerScroll();
15531
+ }, [
15532
+ streamingTextToDisplay
15533
+ ]);
15534
+ (0, $b3y7N$useEffect)(()=>{
15535
+ return ()=>{
15536
+ intervalRef?.current && clearInterval(intervalRef.current);
15537
+ };
15538
+ }, []);
15539
+ return /*#__PURE__*/ (0, $b3y7N$jsxs)("div", {
15540
+ id: "retorik-botResponses",
15541
+ className: "rf-flex rf-flex-col rf-text-size-auto rf-scrollbar-hidden",
15542
+ children: [
15543
+ streamingTextToDisplay && /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
15544
+ className: "rf-px-4 rf-text-textModePanelConversationBot",
15545
+ dangerouslySetInnerHTML: {
15546
+ __html: streamingTextToDisplay
15547
+ }
15548
+ }),
15549
+ currentQueueIndex !== 0 && /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
15550
+ className: "rf-px-4 rf-font-bold rf-text-textModePanelConversationBot rf-animate-blink",
15551
+ children: "..."
15552
+ })
15553
+ ]
15554
+ });
15555
+ };
15556
+ var $b22a7bbed115cb27$export$2e2bcd8739ae039 = $b22a7bbed115cb27$var$DisplayStreaming;
15557
+
15558
+
15559
+ const $df2e46a0b1d75dd8$var$ConversationDisplay = ({ userQuestion: userQuestion, botResponses: botResponses, streamingId: streamingId, streamingQueue: streamingQueue, userQuestionTime: userQuestionTime, isMobile: isMobile, triggerScroll: triggerScroll })=>{
15560
+ const locale = (0, $f902d4436881b887$export$6650dace022cfacc)((state)=>state.locale);
15561
+ return /*#__PURE__*/ (0, $b3y7N$jsxs)((0, $b3y7N$react).Fragment, {
15562
+ children: [
15563
+ userQuestion?.text && /*#__PURE__*/ (0, $b3y7N$jsxs)("div", {
15564
+ id: "retorik-userQuestion",
15565
+ className: "rf-pb-4 rf-text-textModePanelConversationUser rf-animate-slideBottom rf-flex rf-flex-col rf-justify-start rf-text-size-auto rf-gap-2",
15566
+ children: [
15567
+ userQuestionTime && /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
15568
+ className: "rf-px-4 rf-text-[#9A9A9A]",
15569
+ children: userQuestionTime.toLocaleString(locale, {
15570
+ hour: "numeric",
15571
+ minute: "numeric"
15572
+ })
15573
+ }),
15574
+ /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
15575
+ className: "rf-px-4",
15576
+ children: userQuestion.text
15577
+ })
15578
+ ]
15579
+ }, userQuestion.id),
15580
+ streamingId && streamingQueue?.length ? /*#__PURE__*/ (0, $b3y7N$jsx)((0, $b22a7bbed115cb27$export$2e2bcd8739ae039), {
15581
+ streamingQueue: streamingQueue,
15582
+ triggerScroll: triggerScroll
15583
+ }) : /*#__PURE__*/ (0, $b3y7N$jsx)((0, $ea27a870d6ff37c7$export$2e2bcd8739ae039), {
15584
+ botResponses: botResponses || [],
15585
+ isMobile: isMobile
15586
+ })
15587
+ ]
15588
+ });
15589
+ };
15590
+ var $df2e46a0b1d75dd8$export$2e2bcd8739ae039 = $df2e46a0b1d75dd8$var$ConversationDisplay;
15591
+
15592
+
15593
+
15594
+ const $2aae80cf8e050a0a$var$ConversationPanelMobile = ({ homeActivity: homeActivity, itemsInConversation: itemsInConversation })=>{
15188
15595
  const activities = (0, $d8c9d0fe519d0cbe$export$2e2bcd8739ae039)();
15189
- const { open: open } = (0, $f9b55dee2122a017$export$d95eb9b67812311f)();
15190
- const { isMobile: isMobile, currentDeviceType: currentDeviceType, showHomeAttachments: showHomeAttachments, mediumLandscape: mediumLandscape } = (0, $c7fecc7ec9b4c272$export$3abe3478af3cb63b)();
15191
- const listClosed = (0, $3426110875af99d0$export$77e4cc5334565f28)((state)=>state.listClosed);
15192
15596
  const { configuration: configuration } = (0, $15b0bc93a9787124$export$d8760bee47331b1d)();
15597
+ const { currentDeviceType: currentDeviceType, isWidget: isWidget } = (0, $c7fecc7ec9b4c272$export$3abe3478af3cb63b)();
15598
+ const listClosed = (0, $3426110875af99d0$export$77e4cc5334565f28)((state)=>state.listClosed);
15599
+ const open = (0, $f9b55dee2122a017$export$d95eb9b67812311f)((state)=>state.open);
15193
15600
  const agentData = (0, $56b00880a398c953$export$bd22554f31e5f96f)((state)=>state.agentData);
15194
- const [list, setList] = (0, $b3y7N$useState)();
15601
+ const [opacityStyle, setOpacityStyle] = (0, $b3y7N$useState)("");
15195
15602
  const [scrollButtonDisplay, setScrollButtonDisplay] = (0, $b3y7N$useState)(false);
15196
15603
  const [scrollButtonDirection, setScrollButtonDirection] = (0, $b3y7N$useState)("bottom");
15197
- const retorikConversationRef = (0, $b3y7N$useRef)(null);
15198
15604
  const [preventScroll, setPreventScroll] = (0, $b3y7N$useState)(false);
15199
- const userQuestion = (0, $b3y7N$useMemo)(()=>{
15200
- if (activities && activities.length > 0 && !isMobile) {
15201
- const lastActivity = activities[activities.length - 1];
15202
- return lastActivity.question.text ? lastActivity.question : undefined;
15203
- } else return undefined;
15204
- }, [
15205
- activities
15206
- ]);
15207
- const botResponses = (0, $b3y7N$useMemo)(()=>{
15208
- if (activities && activities.length > 0 && !isMobile) {
15209
- const lastActivity = activities[activities.length - 1];
15210
- return lastActivity.answers;
15211
- } else return undefined;
15212
- }, [
15213
- activities
15214
- ]);
15605
+ const streamingId = (0, $04ce41b46d359821$export$f299240efcda25a2)((state)=>state.streamingReplyToIdForText);
15606
+ const streamingQueue = (0, $04ce41b46d359821$export$f299240efcda25a2)((state)=>state.streamingQueueForText);
15607
+ const retorikConversationRef = (0, $b3y7N$useRef)(null);
15215
15608
  const botEndRef = (0, $b3y7N$useRef)(null);
15216
15609
  const timerRef = (0, $b3y7N$useRef)(null);
15217
- const activitiesNumberWithResponse = (0, $b3y7N$useMemo)(()=>{
15218
- let number = 0;
15219
- activities.forEach((element)=>{
15220
- number += element.answers.length + 1;
15221
- });
15222
- return number;
15223
- }, [
15224
- activities
15225
- ]);
15226
- const [opacityStyle, setOpacityStyle] = (0, $b3y7N$useState)("");
15227
15610
  const handleScroll = ()=>{
15228
15611
  if (retorikConversationRef.current) {
15229
- const scrollHeight = retorikConversationRef.current.scrollHeight;
15230
- const scrollTop = retorikConversationRef.current.scrollTop;
15231
- const offsetHeight = retorikConversationRef.current.offsetHeight;
15232
- const clientHeight = retorikConversationRef.current.clientHeight;
15233
- if (scrollHeight > offsetHeight) {
15612
+ const current = retorikConversationRef.current;
15613
+ if (current.scrollHeight > current.offsetHeight) {
15234
15614
  setScrollButtonDisplay(true);
15235
- if (scrollHeight - scrollTop === clientHeight) setScrollButtonDirection("top");
15236
- else if (scrollHeight - scrollTop < clientHeight + 10) setScrollButtonDirection("top");
15615
+ if (current.scrollHeight - current.scrollTop === current.clientHeight) setScrollButtonDirection("top");
15616
+ else if (current.scrollHeight - current.scrollTop < current.clientHeight + 10) setScrollButtonDirection("top");
15237
15617
  else setScrollButtonDirection("bottom");
15238
15618
  }
15239
- const maxScroll = scrollHeight - clientHeight;
15240
- const percentage = Math.ceil(scrollTop / maxScroll * 15);
15619
+ const percentage = Math.ceil(current.scrollTop / (current.scrollHeight - current.clientHeight) * 15);
15241
15620
  setOpacityStyle(`linear-gradient(to top, black ${100 - percentage}%, transparent 100%)`);
15242
15621
  }
15243
15622
  };
15244
15623
  /**
15245
- * On call :
15246
- * - scroll to the botEndRef HTML element at the bottom of the view
15624
+ * Scroll to the botEndRef HTML element at the bottom of the view
15247
15625
  */ const scrollHandler = (to, from)=>{
15248
15626
  if (to === "bottom") setScrollButtonDirection("top");
15249
15627
  else setScrollButtonDirection("bottom");
15250
- if ((!preventScroll || from === "button") && botEndRef && botEndRef.current !== null && to === "bottom") botEndRef.current.scrollIntoView({
15251
- behavior: "smooth"
15628
+ if ((!preventScroll || from === "button") && botEndRef?.current && to === "bottom") botEndRef.current.scrollIntoView({
15629
+ behavior: "smooth",
15630
+ block: "nearest"
15252
15631
  });
15253
- else if (to === "top" && retorikConversationRef && retorikConversationRef.current) retorikConversationRef.current.children[1].scrollIntoView({
15254
- behavior: "smooth"
15632
+ else if (to === "top" && retorikConversationRef?.current) retorikConversationRef.current.children[1].scrollIntoView({
15633
+ behavior: "smooth",
15634
+ block: "nearest"
15255
15635
  });
15256
15636
  };
15257
15637
  (0, $b3y7N$useEffect)(()=>{
@@ -15263,9 +15643,12 @@ const $019b0a0c6328bd4c$export$a1f3f6b0b496333e = ()=>{
15263
15643
  timerRef.current && clearTimeout(timerRef.current);
15264
15644
  };
15265
15645
  }, [
15266
- activitiesNumberWithResponse,
15646
+ itemsInConversation,
15267
15647
  retorikConversationRef?.current?.scrollHeight
15268
15648
  ]);
15649
+ (0, $b3y7N$useLayoutEffect)(()=>{
15650
+ if (retorikConversationRef?.current) isWidget && (0, $4d8d462ee41ffdc9$export$2e2bcd8739ae039)(null, retorikConversationRef);
15651
+ });
15269
15652
  /**
15270
15653
  * On retorikConversationRef change :
15271
15654
  * - check if retorikConversationRef.current is defined
@@ -15279,191 +15662,189 @@ const $019b0a0c6328bd4c$export$a1f3f6b0b496333e = ()=>{
15279
15662
  }, [
15280
15663
  retorikConversationRef?.current
15281
15664
  ]);
15282
- (0, $b3y7N$useLayoutEffect)(()=>{
15283
- if (retorikConversationRef?.current) currentDeviceType === (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).widget && (0, $4d8d462ee41ffdc9$export$2e2bcd8739ae039)(null, retorikConversationRef);
15284
- });
15285
- /**
15286
- * On call :
15287
- * - set listClosed state to true
15288
- */ const onCloseList = ()=>{
15289
- (0, $3426110875af99d0$export$f03cfde7db70aa27)(true);
15290
- };
15291
- /**
15292
- * On call :
15293
- * - scroll to the botEndRef HTML element at the bottom of the view
15294
- * - check if there is an activity in need of List display
15295
- * - set list state depending on the check's result
15296
- */ (0, $b3y7N$useEffect)(()=>{
15297
- setPreventScroll(false);
15298
- if (isMobile) {
15299
- const answers = activities && activities.length > 0 ? activities[activities.length - 1].answers : [];
15300
- setList(answers.some((activity)=>$019b0a0c6328bd4c$var$checkListDisplay(activity)));
15301
- } else botResponses && setList(botResponses.some((activity)=>$019b0a0c6328bd4c$var$checkListDisplay(activity)));
15302
- }, [
15303
- activitiesNumberWithResponse
15304
- ]);
15305
15665
  (0, $b3y7N$useEffect)(()=>{
15306
- if ((listClosed || showHomeAttachments) && botEndRef.current) {
15307
- const timer = setTimeout(()=>{
15666
+ if ((listClosed || homeActivity) && botEndRef.current) {
15667
+ timerRef.current && clearTimeout(timerRef.current);
15668
+ timerRef.current = setTimeout(()=>{
15308
15669
  scrollHandler("bottom", "newMessage");
15309
15670
  }, 100);
15310
- return ()=>timer && clearTimeout(timer);
15311
15671
  }
15312
- return ()=>{};
15313
15672
  }, [
15314
15673
  listClosed,
15315
- showHomeAttachments
15674
+ homeActivity
15316
15675
  ]);
15317
- return /*#__PURE__*/ (0, $b3y7N$jsx)((0, $b3y7N$Fragment), {
15318
- children: (userQuestion || botResponses || isMobile) && (list && !listClosed ? isMobile ? /*#__PURE__*/ (0, $b3y7N$jsx)((0, $718b46f7bb725bee$export$2e2bcd8739ae039), {
15319
- activity: activities[activities.length - 1].answers.find((activity)=>$019b0a0c6328bd4c$var$checkListDisplay(activity)),
15320
- onClose: onCloseList
15321
- }) : /*#__PURE__*/ (0, $b3y7N$jsx)((0, $718b46f7bb725bee$export$2e2bcd8739ae039), {
15322
- activity: botResponses?.find((activity)=>$019b0a0c6328bd4c$var$checkListDisplay(activity)),
15323
- onClose: onCloseList
15324
- }) : /*#__PURE__*/ (0, $b3y7N$jsxs)("div", {
15325
- className: `rf-relative rf-max-h-full ${isMobile && "rf-h-full"} rf-bg-textModePanelBackground ${configuration?.forceMobileView ? "rf-col-start-1" : mediumLandscape ? "rf-col-start-4" : "rf-col-start-5"} vertical:rf-col-start-1 rf-col-span-full vertical:rf-w-full ${configuration?.forceMobileView ? "rf-row-start-1" : "rf-row-start-4"} rf-row-end-13 large-vertical:rf-row-start-7 large-vertical:rf-row-span-6 rf-self-start rf-overflow-hidden
15326
- vertical:rf-row-start-1 vertical:rf-row-span-full vertical:rf-overflow-x-auto rf-justify-self-center large:rf-w-3/5 rf-flex rf-flex-col large:rf-rounded`,
15327
- children: [
15328
- isMobile && /*#__PURE__*/ (0, $b3y7N$jsx)((0, $0d96395552e34116$export$aa0c5ba341a0028), {
15329
- agentName: agentData?.name,
15330
- companyName: configuration?.companyName,
15331
- subCompanyMessage: configuration?.subCompanyMessage,
15332
- imageUrl: agentData?.portrait,
15333
- forceMobileView: configuration?.forceMobileView
15334
- }),
15335
- /*#__PURE__*/ (0, $b3y7N$jsxs)("div", {
15336
- ref: retorikConversationRef,
15337
- id: "retorik-conversation",
15338
- className: `rf-relative rf-max-h-full rf-bg-textModePanelBackground rf-py-4 rf-overflow-y-scroll rf-overflow-x-hidden rf-scrollbar-thin ${isMobile && "rf-self-auto rf-mb-26 rf-h-full"}
15339
- vertical:rf-overflow-x-auto rf-justify-self-center rf-flex rf-flex-col rf-text-size-auto rf-text-trueblack rf-shadow-[3px_3px_6px_#00000029]`,
15340
- style: {
15341
- WebkitMaskImage: currentDeviceType === (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).mobile ? opacityStyle : undefined
15342
- },
15343
- onScroll: handleScroll,
15344
- children: [
15345
- /*#__PURE__*/ (0, $b3y7N$jsx)((0, $5959014767b0decc$export$93d01adc5582c83e), {
15346
- direction: scrollButtonDirection,
15347
- display: isMobile && scrollButtonDisplay && open,
15348
- scrollHandler: scrollHandler,
15349
- setPreventScroll: setPreventScroll,
15350
- className: "rf-fixed rf-z-ui rf-bottom-40 rf-right-6 rf-w-9 rf-h-9 rf-cursor-pointer rf-bg-[#00000050] rf-p-[7px_12px] rf-rounded-[20px] rf-flex"
15351
- }),
15352
- isMobile ? /*#__PURE__*/ (0, $b3y7N$jsx)($019b0a0c6328bd4c$var$MultipleActivites, {
15353
- history: activities,
15354
- forceMobileView: configuration.forceMobileView
15355
- }) : /*#__PURE__*/ (0, $b3y7N$jsx)($019b0a0c6328bd4c$var$SingleMessage, {
15356
- userQuestion: userQuestion,
15357
- botResponses: botResponses,
15358
- forceMobileView: configuration.forceMobileView
15359
- }),
15360
- /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
15361
- ref: botEndRef
15362
- })
15363
- ]
15364
- })
15365
- ]
15366
- }))
15367
- });
15368
- };
15369
- const $019b0a0c6328bd4c$var$SingleMessage = ({ userQuestion: userQuestion, botResponses: botResponses, userClassName: userClassName = "", forceMobileView: forceMobileView = false })=>{
15370
- const locale = (0, $f902d4436881b887$export$6650dace022cfacc)((state)=>state.locale);
15371
- const { isMobile: isMobile, showHomeAttachments: showHomeAttachments } = (0, $c7fecc7ec9b4c272$export$3abe3478af3cb63b)();
15372
- const userQuestionTime = userQuestion ? userQuestion.localTimestamp ? new Date(userQuestion.localTimestamp) : userQuestion.timestamp ? new Date(userQuestion.timestamp) : new Date() : undefined;
15373
- return isMobile || !showHomeAttachments ? /*#__PURE__*/ (0, $b3y7N$jsxs)((0, $b3y7N$react).Fragment, {
15676
+ return /*#__PURE__*/ (0, $b3y7N$jsxs)("div", {
15677
+ className: "rf-relative rf-max-h-full rf-h-full rf-max-w-full rf-w-full rf-col-start-1 rf-col-span-full rf-row-start-1 rf-row-end-13 rf-self-start rf-overflow-hidden rf-justify-self-center rf-flex rf-flex-col rf-bg-textModePanelBackground",
15374
15678
  children: [
15375
- userQuestion && userQuestion.text && /*#__PURE__*/ (0, $b3y7N$jsxs)("div", {
15376
- id: "retorik-userQuestion",
15377
- className: `rf-text-textModePanelConversationUser rf-animate-slideBottom rf-flex rf-flex-col rf-justify-start rf-text-size-auto rf-gap-2 ${userClassName}`,
15679
+ /*#__PURE__*/ (0, $b3y7N$jsx)((0, $0d96395552e34116$export$aa0c5ba341a0028), {
15680
+ agentName: agentData?.name,
15681
+ companyName: configuration?.companyName,
15682
+ companyNameLocalized: configuration?.companyNameLocalized,
15683
+ subCompanyMessage: configuration?.subCompanyMessage,
15684
+ subCompanyMessageLocalized: configuration?.subCompanyMessageLocalized,
15685
+ imageUrl: agentData?.portrait
15686
+ }),
15687
+ /*#__PURE__*/ (0, $b3y7N$jsxs)("div", {
15688
+ ref: retorikConversationRef,
15689
+ id: "retorik-conversation",
15690
+ className: "rf-relative rf-max-h-full rf-h-full rf-py-4 rf-overflow-y-scroll rf-scrollbar-thin rf-self-auto rf-mb-26 rf-overflow-x-auto rf-justify-self-center rf-flex rf-flex-col rf-text-size-auto rf-text-trueblack rf-bg-textModePanelBackground rf-shadow-[3px_3px_6px_#00000029]",
15691
+ style: {
15692
+ WebkitMaskImage: currentDeviceType === (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).mobile ? opacityStyle : undefined
15693
+ },
15694
+ onScroll: handleScroll,
15378
15695
  children: [
15379
- isMobile && userQuestionTime && /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
15380
- className: "rf-px-4 rf-text-[#9A9A9A]",
15381
- children: userQuestionTime.toLocaleString(locale, {
15382
- hour: "numeric",
15383
- minute: "numeric"
15384
- })
15696
+ /*#__PURE__*/ (0, $b3y7N$jsx)((0, $5959014767b0decc$export$93d01adc5582c83e), {
15697
+ direction: scrollButtonDirection,
15698
+ display: scrollButtonDisplay && open,
15699
+ scrollHandler: scrollHandler,
15700
+ setPreventScroll: setPreventScroll,
15701
+ className: "rf-fixed rf-z-ui rf-bottom-40 rf-right-6 rf-w-9 rf-h-9 rf-cursor-pointer rf-bg-[#00000050] rf-p-[7px_12px] rf-rounded-[20px] rf-flex"
15385
15702
  }),
15703
+ activities.map((activity, index)=>{
15704
+ const userQuestionTime = activity.question ? activity.question.localTimestamp ? new Date(activity.question.localTimestamp) : activity.question.timestamp ? new Date(activity.question.timestamp) : new Date() : undefined;
15705
+ return /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
15706
+ className: "rf-pt-3",
15707
+ children: /*#__PURE__*/ (0, $b3y7N$jsx)((0, $df2e46a0b1d75dd8$export$2e2bcd8739ae039), {
15708
+ userQuestion: activity.question,
15709
+ botResponses: activity.answers,
15710
+ streamingId: index === activities.length - 1 ? streamingId : null,
15711
+ streamingQueue: streamingQueue,
15712
+ userQuestionTime: userQuestionTime,
15713
+ isMobile: true,
15714
+ triggerScroll: ()=>scrollHandler("bottom", "newMessage")
15715
+ })
15716
+ }, index);
15717
+ }),
15718
+ homeActivity?.attachments?.length ? /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
15719
+ className: "rf-pt-4 rf-flex rf-flex-col rf-text-size-auto rf-gap-2",
15720
+ children: /*#__PURE__*/ (0, $b3y7N$jsx)((0, $d7c37f48f10c5387$export$2e2bcd8739ae039), {
15721
+ activity: homeActivity
15722
+ })
15723
+ }) : /*#__PURE__*/ (0, $b3y7N$jsx)((0, $b3y7N$react).Fragment, {}),
15386
15724
  /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
15387
- className: "rf-px-4",
15388
- children: userQuestion.text
15725
+ ref: botEndRef
15389
15726
  })
15390
15727
  ]
15391
- }, userQuestion.id),
15392
- botResponses && /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
15393
- id: "retorik-botResponses",
15394
- className: `${userQuestion && "rf-pt-4"} rf-flex rf-flex-col rf-text-size-auto rf-gap-2 rf-scrollbar-hidden`,
15395
- children: botResponses.map((activity, key)=>{
15396
- const answerTime = activity.localTimestamp ? new Date(activity.localTimestamp) : activity.timestamp ? new Date(activity.timestamp) : new Date();
15397
- return /*#__PURE__*/ (0, $b3y7N$jsx)((0, $b3y7N$react).Fragment, {
15398
- children: /*#__PURE__*/ (0, $b3y7N$jsx)($019b0a0c6328bd4c$var$BotMessageActivity, {
15399
- activity: activity,
15400
- answerTime: answerTime,
15401
- isMobile: isMobile,
15402
- mappingKey: key,
15403
- locale: locale,
15404
- forceMobileView: forceMobileView
15405
- })
15406
- }, key);
15407
- })
15408
15728
  })
15409
15729
  ]
15410
- }) : showHomeAttachments.attachments?.length > 0 ? /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
15411
- className: "rf-pt-4 rf-flex rf-flex-col rf-text-size-auto rf-gap-2",
15412
- children: /*#__PURE__*/ (0, $b3y7N$jsx)((0, $d7c37f48f10c5387$export$2e2bcd8739ae039), {
15413
- activity: showHomeAttachments
15414
- })
15415
- }) : /*#__PURE__*/ (0, $b3y7N$jsx)((0, $b3y7N$Fragment), {});
15730
+ });
15416
15731
  };
15417
- const $019b0a0c6328bd4c$var$MultipleActivites = ({ history: history, forceMobileView: forceMobileView = false })=>{
15418
- const { showHomeAttachments: showHomeAttachments } = (0, $c7fecc7ec9b4c272$export$3abe3478af3cb63b)();
15419
- return /*#__PURE__*/ (0, $b3y7N$jsxs)((0, $b3y7N$Fragment), {
15420
- children: [
15421
- history && history.map((history, index)=>{
15422
- return /*#__PURE__*/ (0, $b3y7N$jsx)((0, $b3y7N$react).Fragment, {
15423
- children: /*#__PURE__*/ (0, $b3y7N$jsx)($019b0a0c6328bd4c$var$SingleMessage, {
15424
- userClassName: "rf-pt-3",
15425
- userQuestion: history.question,
15426
- botResponses: history.answers,
15427
- forceMobileView: forceMobileView
15732
+ var $2aae80cf8e050a0a$export$2e2bcd8739ae039 = $2aae80cf8e050a0a$var$ConversationPanelMobile;
15733
+
15734
+
15735
+
15736
+
15737
+
15738
+
15739
+
15740
+
15741
+
15742
+ const $158745933e0ea53f$var$ConversationPanelLarge = ({ homeActivity: homeActivity, itemsInConversation: itemsInConversation })=>{
15743
+ const activities = (0, $d8c9d0fe519d0cbe$export$2e2bcd8739ae039)();
15744
+ const { mediumLandscape: mediumLandscape } = (0, $c7fecc7ec9b4c272$export$3abe3478af3cb63b)();
15745
+ const streamingId = (0, $04ce41b46d359821$export$f299240efcda25a2)((state)=>state.streamingReplyToIdForText);
15746
+ const streamingQueue = (0, $04ce41b46d359821$export$f299240efcda25a2)((state)=>state.streamingQueueForText);
15747
+ const botEndRef = (0, $b3y7N$useRef)(null);
15748
+ const timerRef = (0, $b3y7N$useRef)(null);
15749
+ const userQuestion = (0, $b3y7N$useMemo)(()=>{
15750
+ return activities.length && activities[activities.length - 1].question?.text ? activities[activities.length - 1].question : undefined;
15751
+ }, [
15752
+ activities
15753
+ ]);
15754
+ const botResponses = (0, $b3y7N$useMemo)(()=>{
15755
+ return activities.length ? activities[activities.length - 1].answers : undefined;
15756
+ }, [
15757
+ activities
15758
+ ]);
15759
+ const handleScroll = ()=>{
15760
+ botEndRef?.current?.scrollIntoView({
15761
+ behavior: "smooth",
15762
+ block: "nearest"
15763
+ });
15764
+ };
15765
+ (0, $b3y7N$useEffect)(()=>{
15766
+ timerRef.current && clearTimeout(timerRef.current);
15767
+ timerRef.current = setTimeout(()=>{
15768
+ handleScroll();
15769
+ }, 100);
15770
+ return ()=>{
15771
+ timerRef.current && clearTimeout(timerRef.current);
15772
+ };
15773
+ }, [
15774
+ itemsInConversation
15775
+ ]);
15776
+ return homeActivity?.attachments?.length || streamingId || userQuestion || botResponses ? /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
15777
+ className: `rf-relative rf-max-h-full ${mediumLandscape ? "rf-col-start-4" : "rf-col-start-5"} vertical:rf-col-start-1 rf-col-span-full rf-row-start-4 rf-row-end-12 large-vertical:rf-row-start-7 large-vertical:rf-row-span-6 rf-self-start rf-overflow-hidden rf-justify-self-center rf-w-3/5 rf-flex rf-flex-col rf-rounded rf-bg-textModePanelBackground`,
15778
+ children: /*#__PURE__*/ (0, $b3y7N$jsxs)("div", {
15779
+ id: "retorik-conversation",
15780
+ className: "rf-relative rf-max-h-full rf-bg-textModePanelBackground rf-py-4 rf-overflow-y-scroll rf-overflow-x-hidden rf-scrollbar-thin vertical:rf-overflow-x-auto rf-justify-self-center rf-flex rf-flex-col rf-text-size-auto rf-text-trueblack rf-shadow-[3px_3px_6px_#00000029]",
15781
+ children: [
15782
+ homeActivity?.attachments?.length ? /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
15783
+ className: "rf-pt-4 rf-flex rf-flex-col rf-text-size-auto rf-gap-2",
15784
+ children: /*#__PURE__*/ (0, $b3y7N$jsx)((0, $d7c37f48f10c5387$export$2e2bcd8739ae039), {
15785
+ activity: homeActivity
15428
15786
  })
15429
- }, index);
15430
- }),
15431
- showHomeAttachments && showHomeAttachments.attachments?.length > 0 && /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
15432
- className: "rf-pt-4 rf-flex rf-flex-col rf-text-size-auto rf-gap-2",
15433
- children: /*#__PURE__*/ (0, $b3y7N$jsx)((0, $d7c37f48f10c5387$export$2e2bcd8739ae039), {
15434
- activity: showHomeAttachments
15787
+ }) : /*#__PURE__*/ (0, $b3y7N$jsx)((0, $df2e46a0b1d75dd8$export$2e2bcd8739ae039), {
15788
+ userQuestion: userQuestion,
15789
+ botResponses: botResponses,
15790
+ streamingId: streamingId,
15791
+ streamingQueue: streamingQueue,
15792
+ triggerScroll: handleScroll
15793
+ }),
15794
+ /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
15795
+ ref: botEndRef
15435
15796
  })
15436
- })
15437
- ]
15438
- });
15797
+ ]
15798
+ })
15799
+ }) : /*#__PURE__*/ (0, $b3y7N$jsx)((0, $b3y7N$react).Fragment, {});
15439
15800
  };
15440
- const $019b0a0c6328bd4c$var$BotMessageActivity = ({ isMobile: isMobile, answerTime: answerTime, locale: locale, activity: activity, mappingKey: mappingKey, forceMobileView: forceMobileView })=>{
15441
- return /*#__PURE__*/ (0, $b3y7N$jsxs)("div", {
15442
- className: `${mappingKey > 0 && "rf-pt-2"} rf-text-textModePanelConversationBot rf-animate-slideBottom rf-flex rf-flex-col rf-items-start rf-gap-2`,
15443
- children: [
15444
- isMobile && /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
15445
- className: "rf-px-4 rf-text-[#9A9A9A]",
15446
- children: answerTime.toLocaleString(locale, {
15447
- hour: "numeric",
15448
- minute: "numeric"
15449
- })
15450
- }),
15451
- activity.htmlText ? /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
15452
- className: "rf-px-4",
15453
- dangerouslySetInnerHTML: {
15454
- __html: activity.htmlText
15455
- }
15456
- }) : activity.text ? /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
15457
- className: "rf-px-4",
15458
- children: (0, $3792187fd212489a$export$d6c6ec86eedacfd9)(activity.text)
15459
- }) : /*#__PURE__*/ (0, $b3y7N$jsx)((0, $b3y7N$react).Fragment, {}),
15460
- !!activity?.attachments?.length && !$019b0a0c6328bd4c$var$checkListDisplay(activity) && /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
15461
- className: `${forceMobileView ? "rf-m-auto" : "rf-w-full"} ${activity.attachments.length <= 1 && "rf-px-4"} rf-flex rf-flex-col rf-gap-2`,
15462
- children: /*#__PURE__*/ (0, $b3y7N$jsx)((0, $d7c37f48f10c5387$export$2e2bcd8739ae039), {
15463
- activity: activity
15464
- })
15465
- })
15466
- ]
15801
+ var $158745933e0ea53f$export$2e2bcd8739ae039 = $158745933e0ea53f$var$ConversationPanelLarge;
15802
+
15803
+
15804
+
15805
+ const $019b0a0c6328bd4c$export$a1f3f6b0b496333e = ()=>{
15806
+ const activities = (0, $d8c9d0fe519d0cbe$export$2e2bcd8739ae039)();
15807
+ const { configuration: { forceMobileView: forceMobileView } } = (0, $15b0bc93a9787124$export$d8760bee47331b1d)();
15808
+ const { isMobile: isMobile, showHomeAttachments: showHomeAttachments } = (0, $c7fecc7ec9b4c272$export$3abe3478af3cb63b)();
15809
+ const listClosed = (0, $3426110875af99d0$export$77e4cc5334565f28)((state)=>state.listClosed);
15810
+ const [listActivity, setListActivity] = (0, $b3y7N$useState)(undefined);
15811
+ /**
15812
+ * Number of questions and answers in the conversation. Used to trigger useEffects more efficiently
15813
+ */ const itemsInConversation = (0, $b3y7N$useMemo)(()=>{
15814
+ let number = 0;
15815
+ activities.forEach((element)=>{
15816
+ number += element.answers.length + 1;
15817
+ });
15818
+ return number;
15819
+ }, [
15820
+ activities
15821
+ ]);
15822
+ /**
15823
+ * Scroll to the botEndRef HTML element at the bottom of the view, then check if there is an activity in need of List display.
15824
+ * Finally, set list state depending on the check's result.
15825
+ */ (0, $b3y7N$useEffect)(()=>{
15826
+ const answers = activities.length ? activities[activities.length - 1].answers : [];
15827
+ setListActivity(answers.find((activity)=>(0, $1136774ec828a7ed$export$7c55936a30618336)(activity)));
15828
+ }, [
15829
+ itemsInConversation
15830
+ ]);
15831
+ (0, $b3y7N$useEffect)(()=>{
15832
+ if (listClosed || showHomeAttachments) setListActivity(undefined);
15833
+ }, [
15834
+ listClosed,
15835
+ showHomeAttachments
15836
+ ]);
15837
+ return /*#__PURE__*/ (0, $b3y7N$jsx)((0, $b3y7N$react).Fragment, {
15838
+ children: listActivity && !listClosed ? /*#__PURE__*/ (0, $b3y7N$jsx)((0, $718b46f7bb725bee$export$2e2bcd8739ae039), {
15839
+ activity: listActivity,
15840
+ onClose: ()=>(0, $3426110875af99d0$export$f03cfde7db70aa27)(true)
15841
+ }) : isMobile || forceMobileView ? /*#__PURE__*/ (0, $b3y7N$jsx)((0, $2aae80cf8e050a0a$export$2e2bcd8739ae039), {
15842
+ homeActivity: showHomeAttachments,
15843
+ itemsInConversation: itemsInConversation
15844
+ }) : /*#__PURE__*/ (0, $b3y7N$jsx)((0, $158745933e0ea53f$export$2e2bcd8739ae039), {
15845
+ homeActivity: showHomeAttachments,
15846
+ itemsInConversation: itemsInConversation
15847
+ })
15467
15848
  });
15468
15849
  };
15469
15850
 
@@ -15718,14 +16099,13 @@ var $fada14688b15ab6e$export$2e2bcd8739ae039 = $fada14688b15ab6e$var$Mobile;
15718
16099
 
15719
16100
 
15720
16101
 
15721
-
15722
16102
  const $ab0e724de876f16a$var$ParametersAndDashboardContainer = ({ handleBack: handleBack, hideMenu: hideMenu = false })=>{
15723
16103
  const translation = (0, $f902d4436881b887$export$6650dace022cfacc)((state)=>state.currentTranslations);
15724
16104
  const locale = (0, $f902d4436881b887$export$6650dace022cfacc)((state)=>state.locale);
15725
- const { currentDeviceType: currentDeviceType } = (0, $c7fecc7ec9b4c272$export$3abe3478af3cb63b)();
16105
+ const { isWidget: isWidget } = (0, $c7fecc7ec9b4c272$export$3abe3478af3cb63b)();
15726
16106
  const divRef = (0, $b3y7N$useRef)(null);
15727
16107
  (0, $b3y7N$useEffect)(()=>{
15728
- divRef?.current && currentDeviceType === (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).widget && (0, $4d8d462ee41ffdc9$export$2e2bcd8739ae039)(null, divRef);
16108
+ divRef?.current && isWidget && (0, $4d8d462ee41ffdc9$export$2e2bcd8739ae039)(null, divRef);
15729
16109
  }, [
15730
16110
  divRef.current
15731
16111
  ]);
@@ -16378,6 +16758,7 @@ var $9f452debefb0a8cb$export$2e2bcd8739ae039 = $9f452debefb0a8cb$var$News;
16378
16758
 
16379
16759
 
16380
16760
 
16761
+
16381
16762
  var $a9d2f359055b3248$var$Steps;
16382
16763
  // Steps enum
16383
16764
  (function($a9d2f359055b3248$var$Steps) {
@@ -16389,6 +16770,7 @@ var $a9d2f359055b3248$var$Steps;
16389
16770
  })($a9d2f359055b3248$var$Steps || ($a9d2f359055b3248$var$Steps = {}));
16390
16771
  const $a9d2f359055b3248$var$NewsView = ({ chatbotData: chatbotData, hideMenu: hideMenu, isRetorikNews: isRetorikNews, handleEndedWithoutloop: handleEndedWithoutloop })=>{
16391
16772
  const translation = (0, $f902d4436881b887$export$6650dace022cfacc)((state)=>state.currentTranslations);
16773
+ const sendEvent = (0, $b3y7N$useSendEvent)();
16392
16774
  const { configuration: configuration } = (0, $15b0bc93a9787124$export$d8760bee47331b1d)();
16393
16775
  const agentData = (0, $56b00880a398c953$export$bd22554f31e5f96f)((state)=>state.agentData);
16394
16776
  const muted = (0, $04ce41b46d359821$export$f299240efcda25a2)((state)=>state.muted);
@@ -16408,6 +16790,10 @@ const $a9d2f359055b3248$var$NewsView = ({ chatbotData: chatbotData, hideMenu: hi
16408
16790
  (0, $b3y7N$useEffect)(()=>{
16409
16791
  setDisplayControls(false);
16410
16792
  muted && (0, $04ce41b46d359821$export$a1680ba91cc9be33)(false);
16793
+ return ()=>{
16794
+ sendEvent("Davi.CloseWindow", null);
16795
+ sendEvent("Davi.CloseWindowNews", null);
16796
+ };
16411
16797
  }, []);
16412
16798
  /**
16413
16799
  * On step change :
@@ -16555,14 +16941,15 @@ var $a9d2f359055b3248$export$2e2bcd8739ae039 = $a9d2f359055b3248$var$NewsView;
16555
16941
 
16556
16942
 
16557
16943
 
16944
+
16558
16945
  const $f729533f4d036d9a$var$WarningBeforeNewsView = ({ propsToTransfer: propsToTransfer })=>{
16559
16946
  const translation = (0, $f902d4436881b887$export$6650dace022cfacc)((state)=>state.currentTranslations);
16947
+ const sendEvent = (0, $b3y7N$useSendEvent)();
16560
16948
  const { setRoute: setRoute } = (0, $c7fecc7ec9b4c272$export$3abe3478af3cb63b)();
16561
16949
  const [waiting, setWaiting] = (0, $b3y7N$useState)(true);
16562
- (0, $b3y7N$useEffect)(()=>{
16563
- setWaiting(true);
16564
- }, []);
16565
16950
  const handleClick = (goHome)=>{
16951
+ sendEvent("Davi.CloseWindow", null);
16952
+ sendEvent("Davi.CloseWindowNewsSoundActivated", null);
16566
16953
  goHome ? setRoute((0, $f5ca62954d1f1f5b$export$3565eb3d00ca5a74).Home) : setWaiting(false);
16567
16954
  };
16568
16955
  return waiting ? /*#__PURE__*/ (0, $b3y7N$jsxs)("div", {
@@ -16724,12 +17111,7 @@ const $f11f1612db196f03$var$Container = ({ fullSize: fullSize, width: width, hei
16724
17111
  * - check and set the classes in the main div that will allow us to use tailwind variants
16725
17112
  * - set the main div dimensions in context
16726
17113
  */ (0, $b3y7N$useEffect)(()=>{
16727
- // Widget mode => portrait only
16728
- if (parent === (0, $f5ca62954d1f1f5b$export$a31c5a03aaeee5f).widget) {
16729
- setPortrait("rf-portrait");
16730
- setLarge("");
16731
- setCurrentDeviceType((0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).widget);
16732
- } else if (forceMobileView) {
17114
+ if (forceMobileView) {
16733
17115
  setLarge("");
16734
17116
  setCurrentDeviceType((0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).mobile);
16735
17117
  setPortrait("rf-portrait");
@@ -16738,27 +17120,28 @@ const $f11f1612db196f03$var$Container = ({ fullSize: fullSize, width: width, hei
16738
17120
  if (isPortrait) {
16739
17121
  if (dimensions.width > (0, $cd0e91e00b0900ed$export$2e65b7c7134e01f0)) {
16740
17122
  setLarge("rf-large");
16741
- setCurrentDeviceType((0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).borne);
17123
+ setCurrentDeviceType(parent === (0, $f5ca62954d1f1f5b$export$a31c5a03aaeee5f).widget ? (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).widgetBorne : (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).borne);
16742
17124
  } else {
16743
17125
  setLarge("");
16744
- setCurrentDeviceType((0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).mobile);
17126
+ setCurrentDeviceType(parent === (0, $f5ca62954d1f1f5b$export$a31c5a03aaeee5f).widget ? (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).widget : (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).mobile);
16745
17127
  }
16746
17128
  } else if (dimensions.height > (0, $cd0e91e00b0900ed$export$2e65b7c7134e01f0)) {
16747
17129
  setLarge("rf-large");
16748
- setCurrentDeviceType((0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).landscape);
17130
+ setCurrentDeviceType(parent === (0, $f5ca62954d1f1f5b$export$a31c5a03aaeee5f).widget ? (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).widgetLandscape : (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).landscape);
16749
17131
  } else {
16750
17132
  setLarge("");
16751
- setCurrentDeviceType((0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).mobile);
17133
+ setCurrentDeviceType(parent === (0, $f5ca62954d1f1f5b$export$a31c5a03aaeee5f).widget ? (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).widget : (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).mobile);
16752
17134
  }
16753
17135
  } else if (0, $b3y7N$isMobile) {
16754
17136
  setPortrait("rf-portrait");
16755
17137
  setLarge("");
16756
- setCurrentDeviceType((0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).mobile);
17138
+ setCurrentDeviceType(parent === (0, $f5ca62954d1f1f5b$export$a31c5a03aaeee5f).widget ? (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).widget : (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).mobile);
16757
17139
  } else {
16758
17140
  const isPortrait = checkPortrait(dimensions.width, dimensions.height);
16759
17141
  // Check for 'rf-large' class
16760
- setLarge("rf-large");
16761
- setCurrentDeviceType(isPortrait ? (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).borne : (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).landscape);
17142
+ setLarge(parent === (0, $f5ca62954d1f1f5b$export$a31c5a03aaeee5f).widget && dimensions.width < (0, $cd0e91e00b0900ed$export$2e65b7c7134e01f0) ? "" : "rf-large");
17143
+ if (isPortrait) setCurrentDeviceType(parent === (0, $f5ca62954d1f1f5b$export$a31c5a03aaeee5f).widget ? dimensions.width > (0, $cd0e91e00b0900ed$export$2e65b7c7134e01f0) ? (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).widgetBorne : (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).widget : (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).borne);
17144
+ else setCurrentDeviceType(parent === (0, $f5ca62954d1f1f5b$export$a31c5a03aaeee5f).widget ? (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).widgetLandscape : (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).landscape);
16762
17145
  }
16763
17146
  dimensions.height && setCurrentHeight(dimensions.height);
16764
17147
  dimensions.width && setCurrentWidth(dimensions.width);
@@ -16766,7 +17149,7 @@ const $f11f1612db196f03$var$Container = ({ fullSize: fullSize, width: width, hei
16766
17149
  dimensions
16767
17150
  ]);
16768
17151
  (0, $b3y7N$useEffect)(()=>{
16769
- container?.current && currentDeviceType === (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).widget && (0, $4d8d462ee41ffdc9$export$2e2bcd8739ae039)(container.current);
17152
+ container?.current && (0, $cd0e91e00b0900ed$export$909f4c209eb70365).includes(currentDeviceType) && (0, $4d8d462ee41ffdc9$export$2e2bcd8739ae039)(container.current);
16770
17153
  }, [
16771
17154
  container.current
16772
17155
  ]);
@@ -17013,6 +17396,8 @@ var $1286c804208ea5de$export$2e2bcd8739ae039 = $1286c804208ea5de$var$getThemeCol
17013
17396
 
17014
17397
  const $77cdbd24be841e31$var$buildSSML = (activity, speechMarkdownParser, sayAsWords)=>{
17015
17398
  let speech = activity.speak || activity.text;
17399
+ // Replace character not recognized in Microsoft TTS
17400
+ speech = speech.replaceAll("\u2019", "'");
17016
17401
  if (sayAsWords && sayAsWords.length) {
17017
17402
  const wordsUsed = [];
17018
17403
  sayAsWords.forEach((tuple)=>{
@@ -17027,7 +17412,7 @@ const $77cdbd24be841e31$var$buildSSML = (activity, speechMarkdownParser, sayAsWo
17027
17412
  try {
17028
17413
  textParsedAsSSML = speechMarkdownParser.toSSML(speech);
17029
17414
  } catch (e) {
17030
- console.warn("Error in speechmarkdown parser : ", e);
17415
+ console.warn("Retorik Framework > Error in speechmarkdown parser : ", e);
17031
17416
  }
17032
17417
  return `<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:mstts="https://www.w3.org/2001/mstts" xmlns:emo="http://www.w3.org/2009/10/emotionml" xml:lang="${activity.locale}">` + textParsedAsSSML + "</speak>";
17033
17418
  };
@@ -17054,6 +17439,84 @@ function $77cdbd24be841e31$export$2e2bcd8739ae039({ activity: activity, voice: v
17054
17439
 
17055
17440
 
17056
17441
 
17442
+ const $9e68771eb9634954$export$52a3c04e084af2a0 = {
17443
+ onesecond: `${(0, $cd0e91e00b0900ed$export$eefca12493f9e9b9)}/onesecond.mp3`,
17444
+ speechrecognition: `${(0, $cd0e91e00b0900ed$export$eefca12493f9e9b9)}/blip.mp3`
17445
+ };
17446
+
17447
+
17448
+ class $14763f78c7718bd3$var$IndexedDbManager {
17449
+ version = 1;
17450
+ storeName = "speechSynthesisData";
17451
+ checkDB = async ()=>{
17452
+ return new Promise((resolve)=>{
17453
+ const request = indexedDB.open("retorik-framework-db", this.version);
17454
+ request.onsuccess = ()=>{
17455
+ resolve(true);
17456
+ };
17457
+ request.onerror = ()=>{
17458
+ resolve(false);
17459
+ };
17460
+ request.onupgradeneeded = ()=>{
17461
+ const db = request.result;
17462
+ // If the data object store doesn't exist, create it
17463
+ if (!db.objectStoreNames.contains(this.storeName)) db.createObjectStore(this.storeName, {
17464
+ keyPath: "id"
17465
+ });
17466
+ };
17467
+ });
17468
+ };
17469
+ addSpeechData = async (data)=>{
17470
+ return new Promise((resolve)=>{
17471
+ const request = indexedDB.open("retorik-framework-db", this.version);
17472
+ request.onsuccess = ()=>{
17473
+ const db = request.result;
17474
+ const tx = db.transaction(this.storeName, "readwrite");
17475
+ const store = tx.objectStore(this.storeName);
17476
+ // Base 64 encode
17477
+ data.id = window.btoa(encodeURI(data.id));
17478
+ store.add(data);
17479
+ resolve(true);
17480
+ };
17481
+ request.onerror = ()=>{
17482
+ resolve(false);
17483
+ };
17484
+ });
17485
+ };
17486
+ getSpeechData = async (id)=>{
17487
+ return new Promise((resolve)=>{
17488
+ const request = indexedDB.open("retorik-framework-db", this.version);
17489
+ request.onsuccess = ()=>{
17490
+ const db = request.result;
17491
+ const tx = db.transaction(this.storeName, "readonly");
17492
+ const store = tx.objectStore(this.storeName);
17493
+ // Base 64 encode
17494
+ const data = store.get(window.btoa(encodeURI(id)));
17495
+ data.onsuccess = ()=>{
17496
+ resolve(data.result);
17497
+ };
17498
+ };
17499
+ request.onerror = ()=>{
17500
+ resolve(null);
17501
+ };
17502
+ });
17503
+ };
17504
+ }
17505
+ var $14763f78c7718bd3$export$2e2bcd8739ae039 = $14763f78c7718bd3$var$IndexedDbManager;
17506
+
17507
+
17508
+
17509
+
17510
+
17511
+
17512
+
17513
+
17514
+
17515
+
17516
+
17517
+
17518
+
17519
+
17057
17520
 
17058
17521
 
17059
17522
 
@@ -17072,47 +17535,65 @@ var $8c2db177e015e048$export$2e2bcd8739ae039 = $8c2db177e015e048$var$Animation;
17072
17535
 
17073
17536
 
17074
17537
 
17075
-
17076
-
17538
+ const $b01026c055a6f4cc$var$springEnterDuration = 500;
17539
+ const $b01026c055a6f4cc$var$springLeaveDuration = 1000;
17077
17540
  const $b01026c055a6f4cc$var$LoaderCallToAction = ({ handleValidation: handleValidation })=>{
17541
+ const locale = (0, $f902d4436881b887$export$6650dace022cfacc)((state)=>state.locale);
17078
17542
  const translation = (0, $f902d4436881b887$export$6650dace022cfacc)((state)=>state.currentTranslations);
17079
- const { configuration: { loaderInformationTexts: loaderInformationTexts, hideRetorikLogo: hideRetorikLogo, disableSpeechMode: disabledSpeechMode } } = (0, $15b0bc93a9787124$export$d8760bee47331b1d)();
17543
+ const { configuration: { loaderInformationTexts: loaderInformationTexts, loaderInformationTextsLocalized: loaderInformationTextsLocalized, hideRetorikLogo: hideRetorikLogo, disableSpeechMode: disabledSpeechMode } } = (0, $15b0bc93a9787124$export$d8760bee47331b1d)();
17080
17544
  const mode = (0, $56b00880a398c953$export$bd22554f31e5f96f)((state)=>state.mode);
17081
- const { themeColors: themeColors, isMobile: isMobile, currentDeviceType: currentDeviceType } = (0, $c7fecc7ec9b4c272$export$3abe3478af3cb63b)();
17082
- const [textSize, setTextSize] = (0, $b3y7N$useState)("landscape");
17545
+ const { themeColors: themeColors } = (0, $c7fecc7ec9b4c272$export$3abe3478af3cb63b)();
17083
17546
  const container = (0, $b3y7N$useRef)(null);
17084
- const dimensions = (0, $9d905911b403e245$export$2e2bcd8739ae039)(container);
17085
17547
  const [hover, setHover] = (0, $b3y7N$useState)(false);
17086
17548
  const animationColor = {
17087
17549
  "--rf-color-loader-animation": themeColors.loader.animation
17088
17550
  };
17089
- /**
17090
- * On container dimension change :
17091
- * - check which display mode is active (mobile, borne , landscape)
17092
- * - set text size depending on the display mode
17093
- */ (0, $b3y7N$useEffect)(()=>{
17094
- let isPortrait = true;
17095
- if (!(dimensions.width && dimensions.height && dimensions.width < dimensions.height)) isPortrait = false;
17096
- if (dimensions.width && dimensions.width > 600) setTextSize(isPortrait ? "rf-text-lgcustom" : "rf-text-basecustom");
17097
- else setTextSize("rf-text-sm");
17098
- }, [
17099
- dimensions
17100
- ]);
17551
+ const animationTimerRef = (0, $b3y7N$useRef)();
17552
+ const [spring, api] = (0, $b3y7N$useSpring)(()=>({
17553
+ from: {
17554
+ opacity: 0
17555
+ }
17556
+ }));
17557
+ (0, $b3y7N$useEffect)(()=>{
17558
+ api.start({
17559
+ from: {
17560
+ opacity: 0
17561
+ },
17562
+ to: {
17563
+ opacity: 1
17564
+ },
17565
+ config: {
17566
+ duration: $b01026c055a6f4cc$var$springEnterDuration
17567
+ }
17568
+ });
17569
+ return ()=>{
17570
+ animationTimerRef?.current && clearTimeout(animationTimerRef.current);
17571
+ };
17572
+ }, []);
17101
17573
  const handleChange = (modeId)=>{
17102
17574
  const tempMode = modeId === 1 ? (0, $f5ca62954d1f1f5b$export$9484bbecc3c49a2e).vocal : (0, $f5ca62954d1f1f5b$export$9484bbecc3c49a2e).text;
17103
17575
  (0, $56b00880a398c953$export$d4f039427a1beff1)(tempMode);
17104
17576
  };
17105
- (0, $b3y7N$useEffect)(()=>{
17106
- if (container.current && currentDeviceType === (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).widget) (0, $4d8d462ee41ffdc9$export$2e2bcd8739ae039)(container.current);
17107
- }, [
17108
- container.current
17109
- ]);
17110
- return /*#__PURE__*/ (0, $b3y7N$jsxs)("div", {
17111
- className: `rf-absolute rf-z-modal rf-top-0 rf-left-0 rf-h-full rf-w-full rf-font-default rf-flex rf-flex-col rf-items-center ${textSize} rf-animate-loaderFadeIn`,
17577
+ const handleValidate = ()=>{
17578
+ handleValidation();
17579
+ api.start({
17580
+ from: {
17581
+ opacity: 1
17582
+ },
17583
+ to: {
17584
+ opacity: 0
17585
+ },
17586
+ config: {
17587
+ duration: $b01026c055a6f4cc$var$springLeaveDuration
17588
+ }
17589
+ });
17590
+ };
17591
+ return /*#__PURE__*/ (0, $b3y7N$jsxs)((0, $b3y7N$animated).div, {
17592
+ className: "rf-h-full rf-w-full rf-flex rf-flex-col rf-items-center rf-animate-loaderFadeIn",
17112
17593
  ref: container,
17113
17594
  style: {
17114
- background: themeColors.loader.background,
17115
- ...animationColor
17595
+ ...animationColor,
17596
+ ...spring
17116
17597
  },
17117
17598
  children: [
17118
17599
  /*#__PURE__*/ (0, $b3y7N$jsxs)("div", {
@@ -17128,14 +17609,14 @@ const $b01026c055a6f4cc$var$LoaderCallToAction = ({ handleValidation: handleVali
17128
17609
  color: themeColors.loader.text
17129
17610
  },
17130
17611
  children: [
17131
- loaderInformationTexts?.vocal.top && loaderInformationTexts.text.top ? /*#__PURE__*/ (0, $b3y7N$jsx)("p", {
17132
- children: mode === (0, $f5ca62954d1f1f5b$export$9484bbecc3c49a2e).vocal ? loaderInformationTexts?.vocal.top : loaderInformationTexts.text.top
17612
+ loaderInformationTexts?.vocal.top && loaderInformationTexts.text.top || loaderInformationTextsLocalized?.vocal?.top?.[locale] && loaderInformationTextsLocalized.text?.top?.[locale] ? /*#__PURE__*/ (0, $b3y7N$jsx)("p", {
17613
+ children: mode === (0, $f5ca62954d1f1f5b$export$9484bbecc3c49a2e).vocal ? loaderInformationTextsLocalized?.vocal?.top?.[locale] || loaderInformationTexts?.vocal?.top : loaderInformationTextsLocalized?.text?.top?.[locale] || loaderInformationTexts?.text?.top
17133
17614
  }) : /*#__PURE__*/ (0, $b3y7N$jsx)("p", {
17134
17615
  children: mode === (0, $f5ca62954d1f1f5b$export$9484bbecc3c49a2e).vocal ? translation.loader.loader.optimal : translation.loader.loader.classic
17135
17616
  }),
17136
- loaderInformationTexts?.vocal.top && loaderInformationTexts.text.top ? loaderInformationTexts?.vocal.bottom && loaderInformationTexts.text.bottom && /*#__PURE__*/ (0, $b3y7N$jsx)("p", {
17617
+ loaderInformationTexts?.vocal?.bottom && loaderInformationTexts.text?.bottom || loaderInformationTextsLocalized?.vocal?.bottom?.[locale] && loaderInformationTextsLocalized.text?.bottom?.[locale] ? /*#__PURE__*/ (0, $b3y7N$jsx)("p", {
17137
17618
  className: "rf-font-bold",
17138
- children: mode === (0, $f5ca62954d1f1f5b$export$9484bbecc3c49a2e).vocal ? loaderInformationTexts?.vocal.bottom : loaderInformationTexts.text.bottom
17619
+ children: mode === (0, $f5ca62954d1f1f5b$export$9484bbecc3c49a2e).vocal ? loaderInformationTextsLocalized?.vocal?.bottom?.[locale] || loaderInformationTexts?.vocal?.bottom : loaderInformationTextsLocalized?.text?.bottom?.[locale] || loaderInformationTexts?.text?.bottom
17139
17620
  }) : /*#__PURE__*/ (0, $b3y7N$jsx)("p", {
17140
17621
  className: "rf-font-bold",
17141
17622
  children: mode === (0, $f5ca62954d1f1f5b$export$9484bbecc3c49a2e).vocal ? translation.loader.loader.vocal : translation.loader.loader.text
@@ -17144,48 +17625,38 @@ const $b01026c055a6f4cc$var$LoaderCallToAction = ({ handleValidation: handleVali
17144
17625
  })
17145
17626
  ]
17146
17627
  }),
17147
- /*#__PURE__*/ (0, $b3y7N$jsxs)("div", {
17628
+ /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
17148
17629
  className: `rf-w-full rf-h-1/2 rf-flex rf-flex-col ${hideRetorikLogo ? "rf-justify-start" : "rf-justify-between"} rf-items-center`,
17149
- children: [
17150
- /*#__PURE__*/ (0, $b3y7N$jsxs)("div", {
17151
- className: "rf-flex rf-flex-col rf-items-center",
17152
- children: [
17153
- /*#__PURE__*/ (0, $b3y7N$jsx)((0, $5d0815fae7c6a756$export$2e2bcd8739ae039), {
17154
- texts: {
17155
- left: translation.loader.modes.vocal,
17156
- leftId: 1,
17157
- right: translation.loader.modes.text,
17158
- rightId: 2
17159
- },
17160
- colors: themeColors.loader.toggle,
17161
- defaultChecked: mode,
17162
- handleChange: handleChange,
17163
- showLeft: !disabledSpeechMode,
17164
- showRight: true
17165
- }),
17166
- /*#__PURE__*/ (0, $b3y7N$jsx)("button", {
17167
- className: "rf-font-bold rf-border-2 rf-rounded-lg rf-px-6 rf-py-3 rf-mt-8",
17168
- style: {
17169
- color: hover ? themeColors.loader.button.text.hover : themeColors.loader.button.text.default,
17170
- borderColor: hover ? themeColors.loader.button.border.hover : themeColors.loader.button.border.default,
17171
- background: hover ? themeColors.loader.button.background.hover : themeColors.loader.button.background.default
17172
- },
17173
- onClick: handleValidation,
17174
- onMouseEnter: ()=>setHover(true),
17175
- onMouseLeave: ()=>setHover(false),
17176
- children: translation.loader.loaderValidation
17177
- })
17178
- ]
17179
- }),
17180
- !hideRetorikLogo && (isMobile ? /*#__PURE__*/ (0, $b3y7N$jsx)((0, $3e897bcad5b32e5c$export$2e2bcd8739ae039), {
17181
- className: "rf-mb-10 rf-h-14"
17182
- }) : /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
17183
- className: "rf-w-full rf-flex rf-justify-start",
17184
- children: /*#__PURE__*/ (0, $b3y7N$jsx)((0, $3e897bcad5b32e5c$export$2e2bcd8739ae039), {
17185
- className: "rf-ml-4 rf-mb-4 rf-h-14"
17630
+ children: /*#__PURE__*/ (0, $b3y7N$jsxs)("div", {
17631
+ className: "rf-flex rf-flex-col rf-items-center",
17632
+ children: [
17633
+ /*#__PURE__*/ (0, $b3y7N$jsx)((0, $5d0815fae7c6a756$export$2e2bcd8739ae039), {
17634
+ texts: {
17635
+ left: translation.loader.modes.vocal,
17636
+ leftId: 1,
17637
+ right: translation.loader.modes.text,
17638
+ rightId: 2
17639
+ },
17640
+ colors: themeColors.loader.toggle,
17641
+ defaultChecked: mode,
17642
+ handleChange: handleChange,
17643
+ showLeft: !disabledSpeechMode,
17644
+ showRight: true
17645
+ }),
17646
+ /*#__PURE__*/ (0, $b3y7N$jsx)("button", {
17647
+ className: "rf-font-bold rf-border-2 rf-rounded-lg rf-px-6 rf-py-3 rf-mt-8",
17648
+ style: {
17649
+ color: hover ? themeColors.loader.button.text.hover : themeColors.loader.button.text.default,
17650
+ borderColor: hover ? themeColors.loader.button.border.hover : themeColors.loader.button.border.default,
17651
+ background: hover ? themeColors.loader.button.background.hover : themeColors.loader.button.background.default
17652
+ },
17653
+ onClick: handleValidate,
17654
+ onMouseEnter: ()=>setHover(true),
17655
+ onMouseLeave: ()=>setHover(false),
17656
+ children: translation.loader.loaderValidation
17186
17657
  })
17187
- }))
17188
- ]
17658
+ ]
17659
+ })
17189
17660
  })
17190
17661
  ]
17191
17662
  });
@@ -17194,79 +17665,243 @@ var $b01026c055a6f4cc$export$2e2bcd8739ae039 = $b01026c055a6f4cc$var$LoaderCallT
17194
17665
 
17195
17666
 
17196
17667
 
17197
- const $9e68771eb9634954$export$52a3c04e084af2a0 = {
17198
- onesecond: `${(0, $cd0e91e00b0900ed$export$eefca12493f9e9b9)}/onesecond.mp3`,
17199
- speechrecognition: `${(0, $cd0e91e00b0900ed$export$eefca12493f9e9b9)}/blip.mp3`
17200
- };
17201
17668
 
17202
17669
 
17203
- class $14763f78c7718bd3$var$IndexedDbManager {
17204
- version = 1;
17205
- storeName = "speechSynthesisData";
17206
- checkDB = async ()=>{
17207
- return new Promise((resolve)=>{
17208
- const request = indexedDB.open("retorik-framework-db", this.version);
17209
- request.onsuccess = ()=>{
17210
- resolve(true);
17211
- };
17212
- request.onerror = ()=>{
17213
- resolve(false);
17214
- };
17215
- request.onupgradeneeded = ()=>{
17216
- const db = request.result;
17217
- // If the data object store doesn't exist, create it
17218
- if (!db.objectStoreNames.contains(this.storeName)) db.createObjectStore(this.storeName, {
17219
- keyPath: "id"
17220
- });
17221
- };
17222
- });
17223
- };
17224
- addSpeechData = async (data)=>{
17225
- return new Promise((resolve)=>{
17226
- const request = indexedDB.open("retorik-framework-db", this.version);
17227
- request.onsuccess = ()=>{
17228
- const db = request.result;
17229
- const tx = db.transaction(this.storeName, "readwrite");
17230
- const store = tx.objectStore(this.storeName);
17231
- // Base 64 encode
17232
- data.id = window.btoa(encodeURI(data.id));
17233
- store.add(data);
17234
- resolve(true);
17235
- };
17236
- request.onerror = ()=>{
17237
- resolve(false);
17238
- };
17239
- });
17240
- };
17241
- getSpeechData = async (id)=>{
17242
- return new Promise((resolve)=>{
17243
- const request = indexedDB.open("retorik-framework-db", this.version);
17244
- request.onsuccess = ()=>{
17245
- const db = request.result;
17246
- const tx = db.transaction(this.storeName, "readonly");
17247
- const store = tx.objectStore(this.storeName);
17248
- // Base 64 encode
17249
- const data = store.get(window.btoa(encodeURI(id)));
17250
- data.onsuccess = ()=>{
17251
- resolve(data.result);
17252
- };
17253
- };
17254
- request.onerror = ()=>{
17255
- resolve(null);
17256
- };
17670
+
17671
+
17672
+
17673
+
17674
+ const $495c62a3599dd276$var$springDuration = 500;
17675
+ const $495c62a3599dd276$var$finalMessageDisplayDuration = 2500;
17676
+ const $495c62a3599dd276$var$GdprWindow = ({ titleTextSize: titleTextSize })=>{
17677
+ const data = (0, $3426110875af99d0$export$77e4cc5334565f28)((state)=>state.GDPRWindowData);
17678
+ const translation = (0, $f902d4436881b887$export$6650dace022cfacc)((state)=>state.currentTranslations);
17679
+ const locale = (0, $f902d4436881b887$export$6650dace022cfacc)((state)=>state.locale);
17680
+ const { themeColors: themeColors, isMobile: isMobile } = (0, $c7fecc7ec9b4c272$export$3abe3478af3cb63b)();
17681
+ const [finalMessage, setFinalMessage] = (0, $b3y7N$useState)(null);
17682
+ const finalMessageTimerRef = (0, $b3y7N$useRef)();
17683
+ const animationTimerRef = (0, $b3y7N$useRef)();
17684
+ const [spring, api] = (0, $b3y7N$useSpring)(()=>({
17685
+ from: {
17686
+ opacity: 0
17687
+ }
17688
+ }));
17689
+ (0, $b3y7N$useEffect)(()=>{
17690
+ api.start({
17691
+ from: {
17692
+ opacity: 0
17693
+ },
17694
+ to: {
17695
+ opacity: 1
17696
+ },
17697
+ config: {
17698
+ duration: $495c62a3599dd276$var$springDuration
17699
+ }
17257
17700
  });
17701
+ return ()=>{
17702
+ finalMessageTimerRef?.current && clearTimeout(finalMessageTimerRef.current);
17703
+ animationTimerRef?.current && clearTimeout(animationTimerRef.current);
17704
+ };
17705
+ }, []);
17706
+ const texts = (0, $b3y7N$useMemo)(()=>{
17707
+ return {
17708
+ title: data?.title?.[locale] || translation.GDPR.title,
17709
+ message: data?.message?.[locale] || translation.GDPR.message,
17710
+ link: data?.link?.[locale] || translation.GDPR.link,
17711
+ buttonAccept: data?.buttonAccept?.[locale] || translation.GDPR.buttonAccept,
17712
+ buttonRefuse: data?.buttonRefuse?.[locale] || translation.GDPR.buttonRefuse,
17713
+ messageAccepted: data?.messageAccepted?.[locale] || translation.GDPR.messageAccepted,
17714
+ messageRefused: data?.messageRefused?.[locale] || translation.GDPR.messageRefused
17715
+ };
17716
+ }, [
17717
+ translation,
17718
+ locale
17719
+ ]);
17720
+ const handleCheck = (value)=>{
17721
+ (0, $3426110875af99d0$export$7a09e6b3c59f37ad)(value);
17722
+ setFinalMessage(value ? texts.messageAccepted : texts.messageRefused);
17723
+ finalMessageTimerRef.current = setTimeout(()=>{
17724
+ api.start({
17725
+ from: {
17726
+ opacity: 1
17727
+ },
17728
+ to: {
17729
+ opacity: 0
17730
+ },
17731
+ config: {
17732
+ duration: $495c62a3599dd276$var$springDuration
17733
+ }
17734
+ });
17735
+ }, $495c62a3599dd276$var$finalMessageDisplayDuration);
17736
+ animationTimerRef.current = setTimeout(()=>{
17737
+ (0, $3426110875af99d0$export$ff26692bd8e0fbbd)(false);
17738
+ }, $495c62a3599dd276$var$springDuration + $495c62a3599dd276$var$finalMessageDisplayDuration);
17258
17739
  };
17259
- }
17260
- var $14763f78c7718bd3$export$2e2bcd8739ae039 = $14763f78c7718bd3$var$IndexedDbManager;
17740
+ return /*#__PURE__*/ (0, $b3y7N$jsxs)((0, $b3y7N$animated).div, {
17741
+ className: "rf-h-full rf-w-full rf-flex rf-flex-col rf-gap-12 rf-justify-center rf-items-center rf-text-center",
17742
+ style: {
17743
+ ...spring
17744
+ },
17745
+ children: [
17746
+ /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
17747
+ className: `${isMobile ? "rf-w-3/4" : "rf-w-1/2"} ${titleTextSize}`,
17748
+ children: (0, $2765b17b11305295$export$d07f57595c356899)(texts.title, locale)
17749
+ }),
17750
+ /*#__PURE__*/ (0, $b3y7N$jsxs)("div", {
17751
+ className: `${isMobile ? "rf-w-3/4" : "rf-w-1/2"} rf-flex rf-flex-col rf-items-center rf-gap-4`,
17752
+ children: [
17753
+ /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
17754
+ dangerouslySetInnerHTML: {
17755
+ __html: (0, $2765b17b11305295$export$d07f57595c356899)(texts.message, locale).replaceAll("\n", "<br>")
17756
+ }
17757
+ }),
17758
+ data?.linkURL && /*#__PURE__*/ (0, $b3y7N$jsx)("a", {
17759
+ href: data.linkURL,
17760
+ target: "_blank",
17761
+ rel: "noreferrer noopener",
17762
+ style: {
17763
+ color: themeColors.primary,
17764
+ textDecoration: "underline"
17765
+ },
17766
+ children: (0, $2765b17b11305295$export$d07f57595c356899)(texts.link, locale)
17767
+ })
17768
+ ]
17769
+ }),
17770
+ /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
17771
+ className: "rf-w-full rf-h-16 rf-flex rf-flex-row rf-justify-center rf-gap-4",
17772
+ children: finalMessage ? /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
17773
+ className: `${isMobile ? "rf-w-3/4" : "rf-w-1/2"} rf-animate-fadeIn`,
17774
+ children: (0, $2765b17b11305295$export$d07f57595c356899)(finalMessage, locale)
17775
+ }) : /*#__PURE__*/ (0, $b3y7N$jsxs)((0, $b3y7N$react).Fragment, {
17776
+ children: [
17777
+ /*#__PURE__*/ (0, $b3y7N$jsx)("button", {
17778
+ className: "rf-h-fit rf-px-4 rf-py-2 rf-rounded-lg",
17779
+ onClick: ()=>handleCheck(true),
17780
+ style: {
17781
+ color: themeColors.loader.toggle.text,
17782
+ background: themeColors.loader.toggle.background,
17783
+ borderColor: themeColors.loader.toggle.background
17784
+ },
17785
+ children: (0, $2765b17b11305295$export$d07f57595c356899)(texts.buttonAccept, locale)
17786
+ }),
17787
+ /*#__PURE__*/ (0, $b3y7N$jsx)("button", {
17788
+ className: "rf-h-fit rf-px-4 rf-py-2 rf-rounded-lg",
17789
+ onClick: ()=>handleCheck(false),
17790
+ style: {
17791
+ color: themeColors.loader.toggle.text,
17792
+ background: themeColors.loader.toggle.background,
17793
+ borderColor: themeColors.loader.toggle.background
17794
+ },
17795
+ children: (0, $2765b17b11305295$export$d07f57595c356899)(texts.buttonRefuse, locale)
17796
+ })
17797
+ ]
17798
+ })
17799
+ })
17800
+ ]
17801
+ });
17802
+ };
17803
+ var $495c62a3599dd276$export$2e2bcd8739ae039 = $495c62a3599dd276$var$GdprWindow;
17261
17804
 
17262
17805
 
17806
+ const $fde3bdcd46120869$var$springEnterDuration = 500;
17807
+ const $fde3bdcd46120869$var$springLeaveDuration = 1000;
17808
+ const $fde3bdcd46120869$var$GdprAndLoader = ({ appAvailable: appAvailable, handleValidation: handleValidation })=>{
17809
+ const displayGDPR = (0, $3426110875af99d0$export$77e4cc5334565f28)((state)=>state.GDPRDisplay);
17810
+ const { configuration: { hideRetorikLogo: hideRetorikLogo }, loaderClosed: loaderClosed } = (0, $15b0bc93a9787124$export$d8760bee47331b1d)();
17811
+ const { themeColors: themeColors, isMobile: isMobile, isWidget: isWidget } = (0, $c7fecc7ec9b4c272$export$3abe3478af3cb63b)();
17812
+ const [textSize, setTextSize] = (0, $b3y7N$useState)("");
17813
+ const [titleTextSize, setTitleTextSize] = (0, $b3y7N$useState)();
17814
+ const container = (0, $b3y7N$useRef)(null);
17815
+ const dimensions = (0, $9d905911b403e245$export$2e2bcd8739ae039)(container);
17816
+ const animationTimerRef = (0, $b3y7N$useRef)();
17817
+ const [spring, api] = (0, $b3y7N$useSpring)(()=>({
17818
+ from: {
17819
+ opacity: 0
17820
+ }
17821
+ }));
17822
+ (0, $b3y7N$useEffect)(()=>{
17823
+ api.start({
17824
+ from: {
17825
+ opacity: 0
17826
+ },
17827
+ to: {
17828
+ opacity: 1
17829
+ },
17830
+ config: {
17831
+ duration: $fde3bdcd46120869$var$springEnterDuration
17832
+ }
17833
+ });
17834
+ return ()=>{
17835
+ animationTimerRef?.current && clearTimeout(animationTimerRef.current);
17836
+ };
17837
+ }, []);
17838
+ (0, $b3y7N$useEffect)(()=>{
17839
+ if (dimensions.width && dimensions.height && dimensions.width > 600) {
17840
+ if (dimensions.width < dimensions.height) {
17841
+ setTextSize("rf-text-lgcustom");
17842
+ setTitleTextSize("rf-text-3xl");
17843
+ } else {
17844
+ setTextSize("rf-text-basecustom");
17845
+ setTitleTextSize("rf-text-4xl");
17846
+ }
17847
+ } else {
17848
+ setTextSize("rf-text-sm");
17849
+ setTitleTextSize("rf-text-2xl");
17850
+ }
17851
+ }, [
17852
+ dimensions
17853
+ ]);
17854
+ const handleValidate = ()=>{
17855
+ handleValidation();
17856
+ api.start({
17857
+ from: {
17858
+ opacity: 1
17859
+ },
17860
+ to: {
17861
+ opacity: 0
17862
+ },
17863
+ config: {
17864
+ duration: $fde3bdcd46120869$var$springLeaveDuration
17865
+ }
17866
+ });
17867
+ };
17868
+ (0, $b3y7N$useEffect)(()=>{
17869
+ container?.current && isWidget && (0, $4d8d462ee41ffdc9$export$2e2bcd8739ae039)(container.current);
17870
+ }, [
17871
+ container?.current
17872
+ ]);
17873
+ return displayGDPR || !(appAvailable || loaderClosed) ? /*#__PURE__*/ (0, $b3y7N$jsxs)((0, $b3y7N$animated).div, {
17874
+ id: "retorik-GDPR-and-loader",
17875
+ className: `rf-absolute rf-z-modal rf-top-0 rf-left-0 rf-h-full rf-w-full rf-font-default
17876
+ ${textSize}`,
17877
+ ref: container,
17878
+ style: {
17879
+ background: themeColors.loader.background,
17880
+ color: themeColors.loader.text,
17881
+ ...spring
17882
+ },
17883
+ children: [
17884
+ displayGDPR ? /*#__PURE__*/ (0, $b3y7N$jsx)((0, $495c62a3599dd276$export$2e2bcd8739ae039), {
17885
+ titleTextSize: titleTextSize
17886
+ }) : !(appAvailable || loaderClosed) ? /*#__PURE__*/ (0, $b3y7N$jsx)((0, $b01026c055a6f4cc$export$2e2bcd8739ae039), {
17887
+ handleValidation: handleValidate
17888
+ }) : /*#__PURE__*/ (0, $b3y7N$jsx)((0, $b3y7N$react).Fragment, {}),
17889
+ !hideRetorikLogo && (isMobile ? /*#__PURE__*/ (0, $b3y7N$jsx)((0, $3e897bcad5b32e5c$export$2e2bcd8739ae039), {
17890
+ className: "rf-absolute rf-bottom-10 rf-h-14"
17891
+ }) : /*#__PURE__*/ (0, $b3y7N$jsx)((0, $3e897bcad5b32e5c$export$2e2bcd8739ae039), {
17892
+ className: "rf-absolute rf-left-4 rf-bottom-4 rf-h-14"
17893
+ }))
17894
+ ]
17895
+ }) : /*#__PURE__*/ (0, $b3y7N$jsx)((0, $b3y7N$react).Fragment, {});
17896
+ };
17897
+ var $fde3bdcd46120869$export$2e2bcd8739ae039 = $fde3bdcd46120869$var$GdprAndLoader;
17263
17898
 
17264
17899
 
17265
17900
  const $ba6bf0e283157133$var$DBManager = new (0, $14763f78c7718bd3$export$2e2bcd8739ae039)();
17266
17901
  const $ba6bf0e283157133$var$tagsRemoverRegex = /<[^<>]+>/g;
17267
- const $ba6bf0e283157133$var$RetorikSpeech = ({ ponyfill: ponyfill, onEnd: onEnd, onError: onError, onStart: onStart, utterance: utterance, appAvailable: appAvailable })=>{
17902
+ const $ba6bf0e283157133$var$RetorikSpeech = ({ ponyfill: ponyfill, onEnd: onEnd, onError: onError, onStart: onStart, utterance: utterance, nextUtterance: nextUtterance, appAvailable: appAvailable })=>{
17268
17903
  const locale = (0, $f902d4436881b887$export$6650dace022cfacc)((state)=>state.locale);
17269
- const { loaderClosed: loaderClosed, setLoaderClosed: setLoaderClosed, configuration: { enableSpeechCaching: enableSpeechCaching, speechRecognitionOptions: speechRecognitionOptions } } = (0, $15b0bc93a9787124$export$d8760bee47331b1d)();
17904
+ const { loaderClosed: loaderClosed, setLoaderClosed: setLoaderClosed, configuration: { enableSpeechCaching: enableSpeechCaching, speechRecognitionOptions: speechRecognitionOptions, isUsedOnBorne: isUsedOnBorne } } = (0, $15b0bc93a9787124$export$d8760bee47331b1d)();
17270
17905
  const { voice: voice } = (0, $4c54e002ebd97cf8$export$57e792e009c800a0)();
17271
17906
  const muted = (0, $04ce41b46d359821$export$f299240efcda25a2)((state)=>state.muted);
17272
17907
  const activeRecognitionState = (0, $04ce41b46d359821$export$f299240efcda25a2)((state)=>state.activeRecognitionState);
@@ -17275,6 +17910,9 @@ const $ba6bf0e283157133$var$RetorikSpeech = ({ ponyfill: ponyfill, onEnd: onEnd,
17275
17910
  const speechRecognitionAudioRef = (0, $b3y7N$useRef)(null);
17276
17911
  const [DBReady, setDBReady] = (0, $b3y7N$useState)(false);
17277
17912
  const [playingBlob, setPlayingBlob] = (0, $b3y7N$useState)(false);
17913
+ const [nextUtteranceData, setNextUtteranceData] = (0, $b3y7N$useState)(null);
17914
+ const nextUtteranceBoundariesRef = (0, $b3y7N$useRef)([]);
17915
+ const nextUtteranceVisemesRef = (0, $b3y7N$useRef)([]);
17278
17916
  const emptyTextUtteranceRef = (0, $b3y7N$useRef)(null);
17279
17917
  (0, $b3y7N$useEffect)(()=>{
17280
17918
  $ba6bf0e283157133$var$DBManager.checkDB().then((result)=>setDBReady(result));
@@ -17283,70 +17921,103 @@ const $ba6bf0e283157133$var$RetorikSpeech = ({ ponyfill: ponyfill, onEnd: onEnd,
17283
17921
  if (appAvailable || loaderClosed) {
17284
17922
  // Cancel synthesis if using synthesizer
17285
17923
  if (!playingBlob) ponyfill && ponyfill.speechSynthesis.cancel();
17924
+ resetNextUtteranceData();
17286
17925
  if (audioRef.current && !audioRef.current?.paused) {
17287
17926
  audioRef.current.pause();
17288
17927
  handleEnd();
17289
17928
  }
17290
17929
  }
17291
17930
  };
17931
+ const attachEvents = (tempUtterance, isMainUtterance)=>{
17932
+ tempUtterance.onerror = (event)=>{
17933
+ isMainUtterance ? handleError(event) : setNextUtteranceData(null);
17934
+ };
17935
+ tempUtterance.onsynthesiscompleted = ()=>{
17936
+ const endBoundary = {
17937
+ word: "",
17938
+ startTime: 0,
17939
+ endTime: 0,
17940
+ boundaryType: "EndBoundary"
17941
+ };
17942
+ if (isMainUtterance) {
17943
+ const tempBoundaries = boundaryRef?.current || [];
17944
+ boundaryRef.current = [
17945
+ ...tempBoundaries,
17946
+ endBoundary
17947
+ ];
17948
+ (0, $04ce41b46d359821$export$c24886139fddc386)([
17949
+ ...tempBoundaries,
17950
+ endBoundary
17951
+ ]);
17952
+ } else nextUtteranceBoundariesRef.current = [
17953
+ ...nextUtteranceBoundariesRef.current,
17954
+ endBoundary
17955
+ ];
17956
+ };
17957
+ tempUtterance.onboundary = (event)=>{
17958
+ if (event.boundaryType !== "Viseme") {
17959
+ const newBoundary = {
17960
+ word: event.name,
17961
+ startTime: event.elapsedTime,
17962
+ endTime: event.elapsedTime + event.duration,
17963
+ boundaryType: event.boundaryType
17964
+ };
17965
+ if (isMainUtterance) {
17966
+ // Update the boundaryData state with the new data.
17967
+ const tempBoundaries = boundaryRef?.current || [];
17968
+ boundaryRef.current = [
17969
+ ...tempBoundaries,
17970
+ newBoundary
17971
+ ];
17972
+ (0, $04ce41b46d359821$export$c24886139fddc386)([
17973
+ ...tempBoundaries,
17974
+ newBoundary
17975
+ ]);
17976
+ } else nextUtteranceBoundariesRef.current = [
17977
+ ...nextUtteranceBoundariesRef.current,
17978
+ newBoundary
17979
+ ];
17980
+ }
17981
+ };
17982
+ tempUtterance.onviseme = (event)=>{
17983
+ const newViseme = {
17984
+ word: event.name,
17985
+ startTime: event.elapsedTime,
17986
+ endTime: event.elapsedTime + event.duration,
17987
+ boundaryType: event.boundaryType
17988
+ };
17989
+ if (isMainUtterance) ;
17990
+ else nextUtteranceVisemesRef.current = [
17991
+ ...nextUtteranceVisemesRef.current,
17992
+ newViseme
17993
+ ];
17994
+ };
17995
+ return tempUtterance;
17996
+ };
17997
+ const processNextData = (data)=>{
17998
+ setNextUtteranceData(data?.byteLength ? {
17999
+ speechData: data,
18000
+ boundaries: nextUtteranceBoundariesRef.current,
18001
+ visemes: nextUtteranceVisemesRef.current
18002
+ } : null);
18003
+ // Reset boundary / viseme data
18004
+ resetNextUtteranceData(true);
18005
+ };
18006
+ const resetNextUtteranceData = (keepArrayBufferData)=>{
18007
+ !keepArrayBufferData && setNextUtteranceData(null);
18008
+ nextUtteranceBoundariesRef.current = [];
18009
+ nextUtteranceVisemesRef.current = [];
18010
+ };
17292
18011
  (0, $b3y7N$useEffect)(()=>{
17293
18012
  if (utterance) {
17294
18013
  if (utterance.text) {
17295
18014
  if (ponyfill && audioRef?.current) {
17296
- utterance.onerror = (event)=>{
17297
- handleError(event);
17298
- };
17299
- utterance.onsynthesiscompleted = ()=>{
17300
- const endBoundary = {
17301
- word: "",
17302
- startTime: 0,
17303
- endTime: 0,
17304
- boundaryType: "EndBoundary"
17305
- };
17306
- const tempBoundaries = boundaryRef?.current || [];
17307
- boundaryRef.current = [
17308
- ...tempBoundaries,
17309
- endBoundary
17310
- ];
17311
- (0, $04ce41b46d359821$export$c24886139fddc386)([
17312
- ...tempBoundaries,
17313
- endBoundary
17314
- ]);
17315
- };
17316
- utterance.onboundary = (event)=>{
17317
- if (event.boundaryType !== "Viseme") {
17318
- // Get the current word and its start time and end time.
17319
- const word = event.name;
17320
- const startTime = event.elapsedTime;
17321
- const endTime = event.elapsedTime + event.duration;
17322
- const boundaryType = event.boundaryType;
17323
- // Update the boundaryData state with the new data.
17324
- const tempBoundaries = boundaryRef?.current || [];
17325
- boundaryRef.current = [
17326
- ...tempBoundaries,
17327
- {
17328
- word: word,
17329
- startTime: startTime,
17330
- endTime: endTime,
17331
- boundaryType: boundaryType
17332
- }
17333
- ];
17334
- (0, $04ce41b46d359821$export$c24886139fddc386)([
17335
- ...tempBoundaries,
17336
- {
17337
- word: word,
17338
- startTime: startTime,
17339
- endTime: endTime,
17340
- boundaryType: boundaryType
17341
- }
17342
- ]);
17343
- }
17344
- };
17345
- utterance.onviseme = ()=>{
17346
- // console.log('Viseme : ', e)
17347
- };
17348
- // Play utterance whether by asking for a speech synthesis, or by retrieving data fro indexeddb
17349
- playUtterance();
18015
+ if (nextUtteranceData) {
18016
+ boundaryRef.current = nextUtteranceData.boundaries;
18017
+ (0, $04ce41b46d359821$export$c24886139fddc386)(nextUtteranceData.boundaries);
18018
+ processData(nextUtteranceData.speechData, true);
18019
+ } else // Play utterance whether by asking for a speech synthesis, or by retrieving data fro indexeddb
18020
+ playUtterance(attachEvents(utterance, true));
17350
18021
  } else stopCurrentPlaying();
17351
18022
  } else handleEmptyTextUtterance();
17352
18023
  } else stopCurrentPlaying();
@@ -17357,33 +18028,43 @@ const $ba6bf0e283157133$var$RetorikSpeech = ({ ponyfill: ponyfill, onEnd: onEnd,
17357
18028
  }, [
17358
18029
  utterance
17359
18030
  ]);
17360
- const playUtterance = async ()=>{
17361
- if (DBReady && enableSpeechCaching !== false && utterance) {
17362
- const dataFromIndexedDB = await $ba6bf0e283157133$var$DBManager.getSpeechData(`${locale}.${voice?.name}.${utterance.text.replace($ba6bf0e283157133$var$tagsRemoverRegex, "").substring(0, 50)}`);
18031
+ (0, $b3y7N$useEffect)(()=>{
18032
+ if (nextUtterance?.text && ponyfill) {
18033
+ const tempUtterance = attachEvents(nextUtterance);
18034
+ ponyfill.speechSynthesis.synthesizeAndGetArrayData(tempUtterance, processNextData);
18035
+ } else resetNextUtteranceData();
18036
+ }, [
18037
+ nextUtterance
18038
+ ]);
18039
+ const playUtterance = async (utt)=>{
18040
+ if (DBReady && enableSpeechCaching !== false && utt) {
18041
+ const dataFromIndexedDB = await $ba6bf0e283157133$var$DBManager.getSpeechData(`${locale}.${voice?.name}.${utt.text.replace($ba6bf0e283157133$var$tagsRemoverRegex, "").substring(0, 50)}`);
17363
18042
  if (dataFromIndexedDB) {
17364
18043
  boundaryRef.current = dataFromIndexedDB.boundaries;
17365
18044
  (0, $04ce41b46d359821$export$c24886139fddc386)(dataFromIndexedDB.boundaries);
17366
18045
  processData(dataFromIndexedDB.value, true);
17367
- } else ponyfill?.speechSynthesis.synthesizeAndGetArrayData(utterance, processData);
17368
- } else ponyfill?.speechSynthesis.synthesizeAndGetArrayData(utterance, processData);
18046
+ } else ponyfill?.speechSynthesis.synthesizeAndGetArrayData(utt, processData);
18047
+ } else ponyfill?.speechSynthesis.synthesizeAndGetArrayData(utt, processData);
17369
18048
  };
17370
18049
  const processData = (data, alreadyExistsInDB)=>{
17371
- const blob = new Blob([
17372
- data
17373
- ], {
17374
- type: "audio/mp3"
17375
- });
17376
- enableSpeechCaching !== false && !alreadyExistsInDB && DBReady && boundaryRef?.current && utterance && $ba6bf0e283157133$var$DBManager.addSpeechData({
17377
- id: `${locale}.${voice?.name}.${utterance.text.replace($ba6bf0e283157133$var$tagsRemoverRegex, "").substring(0, 50)}`,
17378
- value: data,
17379
- boundaries: boundaryRef.current
17380
- });
17381
- const url = URL.createObjectURL(blob);
17382
- if (audioRef?.current) {
17383
- setPlayingBlob(true);
17384
- audioRef.current.src = url;
17385
- audioRef.current.play().catch((e)=>console.warn(e));
17386
- }
18050
+ if (data?.byteLength) {
18051
+ const blob = new Blob([
18052
+ data
18053
+ ], {
18054
+ type: "audio/mp3"
18055
+ });
18056
+ enableSpeechCaching !== false && !alreadyExistsInDB && DBReady && boundaryRef?.current && utterance && $ba6bf0e283157133$var$DBManager.addSpeechData({
18057
+ id: `${locale}.${voice?.name}.${utterance.text.replace($ba6bf0e283157133$var$tagsRemoverRegex, "").substring(0, 50)}`,
18058
+ value: data,
18059
+ boundaries: boundaryRef.current
18060
+ });
18061
+ const url = URL.createObjectURL(blob);
18062
+ if (audioRef?.current) {
18063
+ setPlayingBlob(true);
18064
+ audioRef.current.src = url;
18065
+ audioRef.current.play().catch((e)=>console.warn(e));
18066
+ }
18067
+ } else handleEmptyTextUtterance();
17387
18068
  };
17388
18069
  const resetData = ()=>{
17389
18070
  boundaryRef.current = [];
@@ -17391,7 +18072,7 @@ const $ba6bf0e283157133$var$RetorikSpeech = ({ ponyfill: ponyfill, onEnd: onEnd,
17391
18072
  setPlayingBlob(false);
17392
18073
  };
17393
18074
  const handleStart = ()=>{
17394
- if (appAvailable || loaderClosed) onStart && onStart();
18075
+ if (appAvailable || loaderClosed) onStart?.();
17395
18076
  };
17396
18077
  const handleEnd = ()=>{
17397
18078
  if (appAvailable || loaderClosed) {
@@ -17446,7 +18127,8 @@ const $ba6bf0e283157133$var$RetorikSpeech = ({ ponyfill: ponyfill, onEnd: onEnd,
17446
18127
  preload: "auto",
17447
18128
  muted: appAvailable || loaderClosed ? muted : true
17448
18129
  }),
17449
- !(appAvailable || loaderClosed) && /*#__PURE__*/ (0, $b3y7N$jsx)((0, $b01026c055a6f4cc$export$2e2bcd8739ae039), {
18130
+ !isUsedOnBorne && /*#__PURE__*/ (0, $b3y7N$jsx)((0, $fde3bdcd46120869$export$2e2bcd8739ae039), {
18131
+ appAvailable: appAvailable,
17450
18132
  handleValidation: primeRetorikSpeech
17451
18133
  })
17452
18134
  ]
@@ -17533,6 +18215,9 @@ const $f1fe8abaedaf89dd$export$4bf371fc4fa74a28 = (voices, locale, customVoice,
17533
18215
 
17534
18216
  const $45f8218489149157$var$SynthesisManager = ({ isRetorikNews: isRetorikNews })=>{
17535
18217
  const cancel = (0, $04ce41b46d359821$export$f299240efcda25a2)((state)=>state.cancel);
18218
+ const streamingReplyToId = (0, $04ce41b46d359821$export$f299240efcda25a2)((state)=>state.streamingReplyToId);
18219
+ const streamingQueue = (0, $04ce41b46d359821$export$f299240efcda25a2)((state)=>state.streamingQueue);
18220
+ const cancelRef = (0, $b3y7N$useRef)(false);
17536
18221
  const currentPlaying = (0, $04ce41b46d359821$export$f299240efcda25a2)((state)=>state.currentPlaying);
17537
18222
  const currentReplyToId = (0, $04ce41b46d359821$export$f299240efcda25a2)((state)=>state.currentReplyToId);
17538
18223
  const endedActivities = (0, $04ce41b46d359821$export$f299240efcda25a2)((state)=>state.endedActivities);
@@ -17546,6 +18231,7 @@ const $45f8218489149157$var$SynthesisManager = ({ isRetorikNews: isRetorikNews }
17546
18231
  const lastBotActivity = (0, $9b100ac34d01a331$export$b56465394e2b1287)((state)=>state.lastBotMessageActivity);
17547
18232
  const toggleMicrophone = (0, $b7c552f6163a7a5c$export$2e2bcd8739ae039)();
17548
18233
  const [utterance, setUtterance] = (0, $b3y7N$useState)(null);
18234
+ const [nextUtterance, setNextUtterance] = (0, $b3y7N$useState)(null);
17549
18235
  const [utteranceEnded, setUtteranceEnded] = (0, $b3y7N$useState)(false);
17550
18236
  const queuedActivitiesRef = (0, $b3y7N$useRef)([]);
17551
18237
  const currentActivityRef = (0, $b3y7N$useRef)(null);
@@ -17555,6 +18241,7 @@ const $45f8218489149157$var$SynthesisManager = ({ isRetorikNews: isRetorikNews }
17555
18241
  const [ponyfill, setPonyfill] = (0, $b3y7N$useState)(undefined);
17556
18242
  const refreshTimerRef = (0, $b3y7N$useRef)(null);
17557
18243
  const [lastListTextPlayed, setLastListTextPlayed] = (0, $b3y7N$useState)("");
18244
+ const tempCurrentStreamingRef = (0, $b3y7N$useRef)(null);
17558
18245
  /**
17559
18246
  * Async function to retrieve a new token and assign it to the speechConfig inside ponyfill.speechSynthesis
17560
18247
  * @param region string
@@ -17709,6 +18396,7 @@ const $45f8218489149157$var$SynthesisManager = ({ isRetorikNews: isRetorikNews }
17709
18396
  queuedActivitiesRef.current = [];
17710
18397
  (0, $04ce41b46d359821$export$d0df6aec4e971f52)(false);
17711
18398
  setUtterance(null);
18399
+ setNextUtterance(null);
17712
18400
  !isRetorikNews && setIsNewsView(route === (0, $f5ca62954d1f1f5b$export$3565eb3d00ca5a74).News);
17713
18401
  }, [
17714
18402
  route
@@ -17719,7 +18407,7 @@ const $45f8218489149157$var$SynthesisManager = ({ isRetorikNews: isRetorikNews }
17719
18407
  * - no utterance is created while appAvailable isn't true
17720
18408
  * - if during the waiting time, some activities were queued, when appAvailable comes to true, let's begin creating the utterances and playing them
17721
18409
  */ (0, $b3y7N$useEffect)(()=>{
17722
- if (appAvailable && queuedActivitiesRef.current && queuedActivitiesRef.current.length > 0) {
18410
+ if (appAvailable && queuedActivitiesRef.current?.length) {
17723
18411
  const activity = queuedActivitiesRef.current[0];
17724
18412
  currentActivityRef.current = activity;
17725
18413
  const params = {
@@ -17743,8 +18431,11 @@ const $45f8218489149157$var$SynthesisManager = ({ isRetorikNews: isRetorikNews }
17743
18431
  * - if an utterance is being played, set it to null to stop playing and prevent data in queue from being played
17744
18432
  * - setting an utterance to null will trigger the handleUtteranceEnded method automatically
17745
18433
  */ (0, $b3y7N$useEffect)(()=>{
17746
- cancel && !utterance && (0, $04ce41b46d359821$export$d0df6aec4e971f52)(false);
17747
- cancel && utterance && setUtterance(null);
18434
+ cancelRef.current = cancel;
18435
+ if (cancel) {
18436
+ utterance ? setUtterance(null) : (0, $04ce41b46d359821$export$d0df6aec4e971f52)(false);
18437
+ setNextUtterance(null);
18438
+ }
17748
18439
  }, [
17749
18440
  cancel
17750
18441
  ]);
@@ -17758,67 +18449,73 @@ const $45f8218489149157$var$SynthesisManager = ({ isRetorikNews: isRetorikNews }
17758
18449
  * - if an utterance is being played, process the new one (do nothing / put it in the queue / stop the current one and play the new one)
17759
18450
  * - if an utterance has to be created, create it and set the utterance state
17760
18451
  */ (0, $b3y7N$useEffect)(()=>{
17761
- if (ponyfill && voice) {
17762
- if (lastBotActivity && lastBotActivity.id) {
17763
- let createNewUtterance = false;
17764
- if (!lastBotActivity.replyToId) {
17765
- if (isNewsView) ;
17766
- else if (currentPlaying || queuedActivitiesRef.current && queuedActivitiesRef.current.length > 0) queuedActivitiesRef.current = [
18452
+ if (ponyfill && voice && lastBotActivity?.id) {
18453
+ let createNewUtterance = false;
18454
+ if (!lastBotActivity.replyToId) {
18455
+ if (isNewsView) ;
18456
+ else if (currentPlaying || queuedActivitiesRef.current?.length) queuedActivitiesRef.current = [
18457
+ ...queuedActivitiesRef.current,
18458
+ lastBotActivity
18459
+ ];
18460
+ else if (endedActivities.length === 0 || endedActivities[endedActivities.length - 1] !== lastBotActivity.id) createNewUtterance = true;
18461
+ } else if (lastBotActivity.replyToId === streamingReplyToId) {
18462
+ if (lastBotActivity.value?.streamingId) {
18463
+ (0, $04ce41b46d359821$export$b03f86112d469252)(lastBotActivity);
18464
+ currentPlayingRef.current = lastBotActivity;
18465
+ } else queuedActivitiesRef.current = [
18466
+ ...queuedActivitiesRef.current,
18467
+ lastBotActivity
18468
+ ];
18469
+ } else if (!appAvailable) {
18470
+ if (!currentReplyToId) {
18471
+ (0, $04ce41b46d359821$export$96a5fb7d9bf39b8a)(lastBotActivity.replyToId);
18472
+ queuedActivitiesRef.current = [
18473
+ lastBotActivity
18474
+ ];
18475
+ } else if (currentReplyToId === lastBotActivity.replyToId) {
18476
+ let count = 0;
18477
+ if (queuedActivitiesRef.current?.length) queuedActivitiesRef.current.forEach((activity)=>{
18478
+ if (activity.id === lastBotActivity.id) count++;
18479
+ });
18480
+ if (count === 0) queuedActivitiesRef.current = [
17767
18481
  ...queuedActivitiesRef.current,
17768
18482
  lastBotActivity
17769
18483
  ];
17770
- else if (endedActivities.length === 0 || endedActivities[endedActivities.length - 1] !== lastBotActivity.id) createNewUtterance = true;
17771
- } else if (!appAvailable) {
17772
- if (!currentReplyToId) {
17773
- (0, $04ce41b46d359821$export$96a5fb7d9bf39b8a)(lastBotActivity.replyToId);
17774
- queuedActivitiesRef.current = [
17775
- lastBotActivity
17776
- ];
17777
- } else if (currentReplyToId === lastBotActivity.replyToId) {
17778
- let count = 0;
17779
- if (queuedActivitiesRef.current && queuedActivitiesRef.current.length > 0) queuedActivitiesRef.current.forEach((activity)=>{
17780
- if (activity.id === lastBotActivity.id) count++;
17781
- });
17782
- if (count === 0) queuedActivitiesRef.current = [
17783
- ...queuedActivitiesRef.current,
17784
- lastBotActivity
17785
- ];
17786
- } else {
17787
- (0, $04ce41b46d359821$export$96a5fb7d9bf39b8a)(lastBotActivity.replyToId);
17788
- queuedActivitiesRef.current = [
17789
- lastBotActivity
17790
- ];
17791
- }
17792
- } else if (currentActivityRef?.current) {
17793
- const returnCode = (0, $604c6f0e3b9355dd$export$2e2bcd8739ae039)(lastBotActivity, currentActivityRef.current, currentReplyToId, queuedActivitiesRef.current, endedActivities);
17794
- const queue = [
17795
- ...queuedActivitiesRef.current
18484
+ } else {
18485
+ (0, $04ce41b46d359821$export$96a5fb7d9bf39b8a)(lastBotActivity.replyToId);
18486
+ queuedActivitiesRef.current = [
18487
+ lastBotActivity
17796
18488
  ];
17797
- switch(returnCode){
17798
- case 0:
17799
- break;
17800
- case 1:
17801
- // Add the activity to the queue
17802
- queue.push(lastBotActivity);
17803
- queuedActivitiesRef.current = queue;
17804
- break;
17805
- case 2:
17806
- // Stop current activity and play the new one
17807
- queuedActivitiesRef.current = [];
17808
- createNewUtterance = true;
17809
- break;
17810
- }
17811
- } else createNewUtterance = !endedActivities.includes(lastBotActivity.id);
17812
- if (createNewUtterance) {
17813
- currentActivityRef.current = lastBotActivity;
17814
- (0, $04ce41b46d359821$export$96a5fb7d9bf39b8a)(lastBotActivity.replyToId || "customReplyToIdIfNotPresent");
17815
- const params = {
17816
- activity: lastBotActivity,
17817
- voice: getVoiceAfterCheckingActivityLocale(lastBotActivity.locale || locale),
17818
- locale: lastBotActivity.locale || locale
17819
- };
17820
- setUtterance(checkActivityAndCreateUtterance(params));
17821
18489
  }
18490
+ } else if (currentActivityRef?.current) {
18491
+ const returnCode = (0, $604c6f0e3b9355dd$export$2e2bcd8739ae039)(lastBotActivity, currentActivityRef.current, currentReplyToId, queuedActivitiesRef.current, endedActivities);
18492
+ const queue = [
18493
+ ...queuedActivitiesRef.current
18494
+ ];
18495
+ switch(returnCode){
18496
+ case 0:
18497
+ break;
18498
+ case 1:
18499
+ // Add the activity to the queue
18500
+ queue.push(lastBotActivity);
18501
+ queuedActivitiesRef.current = queue;
18502
+ break;
18503
+ case 2:
18504
+ // Stop current activity and play the new one
18505
+ queuedActivitiesRef.current = [];
18506
+ createNewUtterance = true;
18507
+ break;
18508
+ }
18509
+ } else createNewUtterance = !endedActivities.includes(lastBotActivity.id);
18510
+ if (createNewUtterance) {
18511
+ currentActivityRef.current = lastBotActivity;
18512
+ (0, $04ce41b46d359821$export$96a5fb7d9bf39b8a)(lastBotActivity.replyToId || "customReplyToIdIfNotPresent");
18513
+ const params = {
18514
+ activity: lastBotActivity,
18515
+ voice: getVoiceAfterCheckingActivityLocale(lastBotActivity.locale || locale),
18516
+ locale: lastBotActivity.locale || locale
18517
+ };
18518
+ setUtterance(checkActivityAndCreateUtterance(params));
17822
18519
  }
17823
18520
  }
17824
18521
  }, [
@@ -17826,6 +18523,24 @@ const $45f8218489149157$var$SynthesisManager = ({ isRetorikNews: isRetorikNews }
17826
18523
  ponyfill,
17827
18524
  voice
17828
18525
  ]);
18526
+ (0, $b3y7N$useEffect)(()=>{
18527
+ if (streamingReplyToId && streamingQueue.length) {
18528
+ const tempActivity = streamingQueue[0];
18529
+ const params = {
18530
+ activity: tempActivity,
18531
+ voice: getVoiceAfterCheckingActivityLocale(locale),
18532
+ locale: locale
18533
+ };
18534
+ (0, $04ce41b46d359821$export$eb50624bfd363865)();
18535
+ setUtterance(checkSayAsWordsAndCreateUtterance(params));
18536
+ (0, $04ce41b46d359821$export$b03f86112d469252)(undefined);
18537
+ currentPlayingRef.current = null;
18538
+ currentActivityRef.current = null;
18539
+ tempCurrentStreamingRef.current = tempActivity.text || null;
18540
+ }
18541
+ }, [
18542
+ streamingReplyToId
18543
+ ]);
17829
18544
  /**
17830
18545
  * On utteranceEnded state change :
17831
18546
  * - if the state is true, an utterance just ended, so the steps are :
@@ -17855,6 +18570,20 @@ const $45f8218489149157$var$SynthesisManager = ({ isRetorikNews: isRetorikNews }
17855
18570
  currentPlayingRef.current = currentActivityRef.current;
17856
18571
  }
17857
18572
  dispatchSpeechEvent(true);
18573
+ // Set next utterance to prepare synthesis data in order to improve fluidity
18574
+ if (streamingReplyToId && streamingQueue.length) {
18575
+ const tempActivity = streamingQueue[0];
18576
+ if (tempActivity.text) {
18577
+ const params = {
18578
+ activity: tempActivity,
18579
+ voice: getVoiceAfterCheckingActivityLocale(locale),
18580
+ locale: locale
18581
+ };
18582
+ const tempUtterance = checkSayAsWordsAndCreateUtterance(params);
18583
+ tempUtterance.text !== nextUtterance?.text ? setNextUtterance(tempUtterance) : setNextUtterance(null);
18584
+ } else setNextUtterance(null);
18585
+ } else setNextUtterance(null);
18586
+ (0, $04ce41b46d359821$export$d300d9470f5679ba)(tempCurrentStreamingRef?.current);
17858
18587
  };
17859
18588
  /**
17860
18589
  * On call :
@@ -17866,7 +18595,7 @@ const $45f8218489149157$var$SynthesisManager = ({ isRetorikNews: isRetorikNews }
17866
18595
  dispatchSpeechEvent(false);
17867
18596
  };
17868
18597
  const checkDictateState = ()=>{
17869
- !preventExpectedInputHint && mode === (0, $f5ca62954d1f1f5b$export$9484bbecc3c49a2e).vocal && toggleMicrophone();
18598
+ !preventExpectedInputHint && mode === (0, $f5ca62954d1f1f5b$export$9484bbecc3c49a2e).vocal && toggleMicrophone(true);
17870
18599
  };
17871
18600
  /**
17872
18601
  * On call :
@@ -17875,7 +18604,7 @@ const $45f8218489149157$var$SynthesisManager = ({ isRetorikNews: isRetorikNews }
17875
18604
  * - if it wasn't a cancel, deal with the queue
17876
18605
  * - if this was the last activity of the queue, check if the microphone has to be opened automatically (inputHint = expectingInput)
17877
18606
  */ const handleEnded = ()=>{
17878
- let nextUtterance = null;
18607
+ let futureUtterance = null;
17879
18608
  const ended = [
17880
18609
  ...endedActivities
17881
18610
  ];
@@ -17887,12 +18616,26 @@ const $45f8218489149157$var$SynthesisManager = ({ isRetorikNews: isRetorikNews }
17887
18616
  (0, $04ce41b46d359821$export$b03f86112d469252)(undefined);
17888
18617
  (0, $04ce41b46d359821$export$7cbdb517d05b0ba6)(ended);
17889
18618
  // Check if the audio ended because of a cancel call
17890
- if (cancel) {
18619
+ if (cancelRef.current) {
17891
18620
  queuedActivitiesRef.current = [];
18621
+ (0, $04ce41b46d359821$export$614a80601162ec38)(null);
18622
+ tempCurrentStreamingRef.current = null;
18623
+ (0, $04ce41b46d359821$export$87afd75c41a617d7)([]);
17892
18624
  (0, $04ce41b46d359821$export$d0df6aec4e971f52)(false);
18625
+ } else if (streamingQueue.length) {
18626
+ const tempActivity = streamingQueue[0];
18627
+ const params = {
18628
+ activity: tempActivity,
18629
+ voice: getVoiceAfterCheckingActivityLocale(locale),
18630
+ locale: locale
18631
+ };
18632
+ (0, $04ce41b46d359821$export$eb50624bfd363865)();
18633
+ futureUtterance = checkSayAsWordsAndCreateUtterance(params);
18634
+ tempCurrentStreamingRef.current = tempActivity.text || null;
17893
18635
  } else {
18636
+ (0, $04ce41b46d359821$export$614a80601162ec38)(null);
17894
18637
  // Launch next activity in the queue and remove it from the queue
17895
- if (queuedActivitiesRef.current && queuedActivitiesRef.current.length > 0) {
18638
+ if (queuedActivitiesRef.current?.length) {
17896
18639
  const activity = queuedActivitiesRef.current[0];
17897
18640
  currentActivityRef.current = activity;
17898
18641
  const params = {
@@ -17900,7 +18643,7 @@ const $45f8218489149157$var$SynthesisManager = ({ isRetorikNews: isRetorikNews }
17900
18643
  voice: getVoiceAfterCheckingActivityLocale(activity.locale || locale),
17901
18644
  locale: activity.locale || locale
17902
18645
  };
17903
- nextUtterance = checkActivityAndCreateUtterance(params);
18646
+ futureUtterance = checkActivityAndCreateUtterance(params);
17904
18647
  const queue = [
17905
18648
  ...queuedActivitiesRef.current
17906
18649
  ];
@@ -17909,12 +18652,13 @@ const $45f8218489149157$var$SynthesisManager = ({ isRetorikNews: isRetorikNews }
17909
18652
  } else if (currentPlayingRef?.current?.inputHint === "expectingInput") checkDictateState();
17910
18653
  }
17911
18654
  currentPlayingRef.current = null;
17912
- setUtterance(nextUtterance);
18655
+ setUtterance(futureUtterance);
17913
18656
  };
17914
18657
  return /*#__PURE__*/ (0, $b3y7N$jsx)((0, $ba6bf0e283157133$export$2e2bcd8739ae039), {
17915
18658
  ponyfill: ponyfill,
17916
18659
  appAvailable: appAvailable,
17917
18660
  utterance: utterance,
18661
+ nextUtterance: nextUtterance,
17918
18662
  onStart: handleUtteranceStart,
17919
18663
  onError: handleUtteranceEnd,
17920
18664
  onEnd: handleUtteranceEnd
@@ -18141,6 +18885,52 @@ var $efe892d829a9a26a$export$2e2bcd8739ae039 = $efe892d829a9a26a$var$SpeechManag
18141
18885
 
18142
18886
 
18143
18887
 
18888
+
18889
+ const $86772fb907b8c462$var$FocusManager = ()=>{
18890
+ const { currentDeviceType: currentDeviceType } = (0, $c7fecc7ec9b4c272$export$3abe3478af3cb63b)();
18891
+ const muted = (0, $04ce41b46d359821$export$f299240efcda25a2)((state)=>state.muted);
18892
+ const activeRecognitionState = (0, $04ce41b46d359821$export$f299240efcda25a2)((state)=>state.activeRecognitionState);
18893
+ const focusedRef = (0, $b3y7N$useRef)(true);
18894
+ const oldMutedRef = (0, $b3y7N$useRef)(muted);
18895
+ const recognitionStateRef = (0, $b3y7N$useRef)(activeRecognitionState);
18896
+ (0, $b3y7N$useEffect)(()=>{
18897
+ focusedRef.current && (oldMutedRef.current = muted);
18898
+ }, [
18899
+ muted
18900
+ ]);
18901
+ (0, $b3y7N$useEffect)(()=>{
18902
+ recognitionStateRef.current = activeRecognitionState;
18903
+ }, [
18904
+ activeRecognitionState
18905
+ ]);
18906
+ const handleVisibilityChange = ()=>{
18907
+ if (document.visibilityState === "visible") {
18908
+ focusedRef.current = true;
18909
+ oldMutedRef.current === false && (0, $04ce41b46d359821$export$a1680ba91cc9be33)(false);
18910
+ } else {
18911
+ focusedRef.current = false;
18912
+ (0, $04ce41b46d359821$export$d0df6aec4e971f52)(true);
18913
+ (0, $04ce41b46d359821$export$a1680ba91cc9be33)(true);
18914
+ recognitionStateRef.current === (0, $f5ca62954d1f1f5b$export$3f0071308968cd80).Listening && (0, $04ce41b46d359821$export$45913366c4ba414f)((0, $f5ca62954d1f1f5b$export$3f0071308968cd80).ForceClosing);
18915
+ }
18916
+ };
18917
+ (0, $b3y7N$useEffect)(()=>{
18918
+ currentDeviceType === (0, $f5ca62954d1f1f5b$export$ec1e04e4e5ef8233).mobile && document.addEventListener("visibilitychange", handleVisibilityChange);
18919
+ return ()=>{
18920
+ document.removeEventListener("visibilitychange", handleVisibilityChange);
18921
+ };
18922
+ }, [
18923
+ currentDeviceType
18924
+ ]);
18925
+ return /*#__PURE__*/ (0, $b3y7N$jsx)((0, $b3y7N$react).Fragment, {});
18926
+ };
18927
+ var $86772fb907b8c462$export$2e2bcd8739ae039 = $86772fb907b8c462$var$FocusManager;
18928
+
18929
+
18930
+
18931
+
18932
+
18933
+
18144
18934
  const $964fbb4bb9670565$export$ad7b40b81d5409c = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAO4AAADuCAYAAAA+7jsiAAAABHNCSVQICAgIfAhkiAAAF/VJREFUeF7tXQkUdVMVzixjGSLCrwwViZCIIqm0pEJRMrRSmSIqJZZVi0pL0aCkxJ+xiFpNf0UkKmT9izQYs8xT5nms77Pes+5/3fveHc6+b+/7vr3WXu+9+87ZZ59vv++de8841wskk0bglXDgNQNdBa8rQBeDLpLRBfH+SejjmdcH8f62gd6E12ugf4NePukKqXx7BOayL0IlZBBYAu8/CH0PlCRdyQgdEpl6PvTbA3IbFSWzk0BAxLVFnfhuAv0q9FXQxW2LK7XO1vlG6Fegp0L/NyE/VGwiBETcREBmzMyH9+tCfwJdDjpv+iJaWXxm0ALvitcLoY+1sqbME0FAxE0H+4ow9VnonulMdmJpFkr5BPS6TkpTIUkQEHHbw7geTBwPZQdTE+Ft6/XQOwYt4T/wegX0bui90Hug90HZci+a0WXxfk3oGlC+fwmUz81s8ZvItcj0EeifmmRWnm4REHGb4/12ZD0KymfXOkKCng3984Ak/6qTuULaGUjzRuhG0C2hK1fIk01yKz4cAD2lZj4l7xABEbc+2Kshy89rEpYkPRbKXl52EnUpSw2IvBNet61RMIeXPgS9pEYeJe0IARG3HtBsKd9aMcstSPcx6AVQ9up6kAXgxOuh34XyNruKXIpEm0IfrpJYabpBQMSthvO+SHYEdNzz49NIczT0kAFZPQ+7cILHPtAvVKgXe6IPHaSthphSmSIg4o6Gl51BF0FfPSYKD+F7jtV+GcofeSSZG87uAj0S+qIxjnNSx+ug/41UwT762mfivhABewLKVrCJvAOZOFQySh7Bl2xdv96kAId53g+f+Cw+jsA7IA3HqSUTQqDPxGXvLTtm3gv9RU18T0f6943Jcxy+5zOs59vhmtV+LvnheMcx6VHCDrdNoU81LUT5miPQZ+JyQv78A2i+j9ePV4CJk/k5hsrx0DLhRP5toDdXsBc5CR8TOCT0rhGV4C0zx5HvjFzRiL73mbicwMBJ/UO5Cm/4fMbb2yJZFRdnQ9lpUyY744uTIga6hc8k7qg7Fv5Bbgxl77OkIwT6TFyOQ+ZbTs7L5aT//I9se1xj6zJPCe60xUkNd3UUF2/FcHEEx6BfW+IYO+T43HuGN8f76k+ficve4A0KAsdnUq5j5SQKEvUDUK5/LZPv4AvO5e3js2yd3zV/K3tBuUywTD6FL9g7LTFGoM/E/RGw461tU2FvNGcbndbUQE/z8c+Qk0rKxrR3x3fsmZYYItBn4nKVDlvLJsLnNj7zctxS8nwElsQlLkooGzbiYgUuvJAYIdBn4nJNbNMOk7WQl73LknIEuFrpMih7lYvkw7g4UwDaINBn4hKxps+lvA3U+OT43xxnXbEvYf2SpJqoMR7DRin6TtxHgQrHZusKJ+Nz1pVkPAKjWl7+cXIzvKvHm1GKOgj0nbhciD5u+l4RXt/ExU/WAXLK07Ll5TNv0dpfririMzH7DSSJEOg7cbko/KUNsSJ594M2vd1uWGzobGV483aaC/uFZaLw9p24nJ7IrWWaCjuoNoRqLWo1BNnyEquix5MDcZ1zoCUJEOg7cblqZ/+WOPE5mYvPuReUZDwC7GUuw4r7cgnH8RiOTdF34nLj8Z+NRaFagjcjmTZSq4YVZ5p9qyAp54kvXM2EUo1CoO/E5Rxb7pCYQrhogcsEJdUQOBPJuIoqLyfjAmekSVog0Hfisn7szRy35cwoCP+NL9lqcw4uySuphgDngROv/OkN7KDizphcrSVpiEDfiUtYloZy47Ysebmahcr5yHyG/QuUt8FcAcMxR47h8pAtvqontOGPC9nYsUds83IDLsxoblY5p4G4jDLryW1VedoAp+mxJRgSUsS05QFvjXcsKOLTuNaXLX9sESywPi3E7RxYFTgHAg/gE3fUyArvZhaCNt0TbKohFnGnOvydVZ4nKvymoDSt320YAhG3IXDKVhsBPtfyUSUv3CpIE1xqwini1gRMyRsjwPXN7EnO/+YOxrUvNbY6pRlF3CkN/ISqXdbqcg9sndNbIygibg2wlLQ1AsvAwu0FVrbCtV+3tj5FBkTcKQq2k6ryAO2X53zhMy57nTU0VzFIIm5FoJQsGQJcrcVVW1khYXkwt84kqgiziFsRKCVLhgB3zOA0VC4BzMof8WGzZKX03JCI2/MAO60eT7zn6YZZYecUO6kkFRAQcSuApCTJEeBtMQ9ly4uWTlaEWsStCJSSJUfgEljM7w55Lq5tnrykHhpMQVza4Kl4Zefu9BA20ypxVRK177IPKsh9vbKiNc8Vo96UuCvAPg9+/jx0RsWylKw6Auxl/QP0UOjl0PurZw2Tkpv4cXO5vHA7V63VHRPGusRdE/ZmQnlKgKQ7BLj87RBo2RGh3XmStqTrC/74ueXNvmmL6Z+1OsQ9EdXXliOT+w2wFd4a+qvJuZC85GNgkYeEZeVifHhD8pJ6ZrAqcf+OenOHPsnkEeAwyucm70YSD94CK3wkyAp3JOE6XckIBKoQl3su8blD4gcBEjc/DurHu3qeFE1zfBlMcLshSQkC44hbtlMfzbHn83QoB9MfhHIPJ0l7BNg7zzNo+azH7XbyM4xYAn/s3M+Jt5XRhYsOuPggK9vhA397khIERhG3bKMvmuLZpzwDVWKLAM89+id0uYJi7sI1TmSILrNRgXVylTgKn9tuZB8dl5H+jyJu2S3yR2HxuF6j4q9y3CmRf6R54d3OEf7creXRV5A6/8zOHTc5i0pSgkAZcV+L9NwNMS/sBeRJ75JuEeDt8k3QfMt7W8G1bj1rXxrnA8zKmeHzLZ9zJTWJy4F/bimSFa6Z5P5AkskgwJUznBKYl1VwgWtco0rZvOVx/S9R65vE7zJwONCfX6mhM2OTQN7KCFuifKvbhx5mbtGa74RbDNfY6SkpQKCIuNzxv+g0du5Q8JBjFLeAb2dBud6zibDOyzuvY1EvP/sb2O8QWTh2mz+ak7tkcGaVpCJxiw7K4lAPFxJ43ry6bMf8OoFfC4l5Jq5XOQiOHZZz7mx8fptXhyv6xbnYbGGzwpVDl1bMP3XJilrcomcOEnYB58TlnQJ7KNlq1hXicAbU+9jhLvBxZq5y7ETMD6fUrf+k098DB16cc4In2P910o55Lb9PxPWKcUq/doWxE3pIXC7nWyJXr03w+cKU4PXJlogbK5p9JS43iVsyFwrthjHityniirgeEOAssPyh4VyAcJ4H5zz6IOJ6jEq5T31tce9ElXmOcVY4SnBOrPB0562I2x3WKUrqK3GLWlzuPVU04SQFjuFtiLixQthX4t6HMHAYMisaDtIzbix2jvC2r8TlxJ6Fc/VeHZ+v7k3kElekbYtLcPeDcnKGJB0CV8LU16D5Nc59JS43Q+c8gaxwM7miA8LSoRzYUlvi3oy6N5nwEBiyzlznZAvu85WVvhL3KVQyv70vW+C+bY6X7MfTlrhFvYHJnJtyQ4ej/gdOAXE5t7xoH2mtDhpBAAvicueCH0PZ4aDtbEb/+3BiPaf6cbolT7HLyrQQl3Xm5nDEgWtwqVx7zJMOJCUIpCQub3f4XKKjEuv/3BiHvaHcZ2oo00Tc+ohNeY6UxOX+uMdOOZ5tq8/VMMPN5kXctmj2OH8q4rI7n+t1Je0Q2AbZhyuURNx2WPY6dyri3giUVuo1Ut1ULrsWWsTtBvOQpaQi7rWo/aohEfDn9HCDcBHXX2zceCTiugnFc46IuP5i4s4jEdddSJ49pYCiFtdfbNx4JOK6CYVaXH+h8OuRiOsvNmpx/cXEnUcirruQ6FbZX0j8eSTi+ouJWlx/MXHnkYjrLiRqcf2FxJ9HIq6/mKjF9RcTdx6JuO5CohbXX0j8eSTi+ouJWlx/MXHnkYjrLiRqcf2FxJ9HIq6/mKjF9RcTdx6JuO5CohbXX0j8eSTi+ouJWlx/MXHnkYjrLiRqcf2FxJ9HIq6/mKjF9RcTdx6JuO5CohbXX0j8eSTi+ouJWlx/MXHnkYjrLiRqcf2FxJ9HIq6/mKjF9RcTdx6JuO5CohbXX0j8eSTi+ouJWlx/MXHnkYjrLiRqcf2FxJ9HIq6/mKjF9RcTdx6JuO5CohbXX0j8eSTi+ouJWlx/MXHnkYjrLiRqcf2FxJ9HIq6/mKjF9RcTdx6JuO5CohbXX0j8eSTi+ouJWlx/MXHnkYjrLiRqcf2FxJ9HIq6/mKjF9RcTdx6JuO5CohbXX0j8eSTi+ouJWlx/MXHnkYjrLiRqcf2FxJ9HIq6/mKjF9RcTdx6JuO5CohbXX0j8eSTi+ouJWlx/MXHnkYjrLiRqcf2FxJ9HIq6/mKjF9RcTdx6JuO5CohbXX0j8eSTi+ouJWlx/MXHnkYjrLiRqcf2FxJ9HIq6/mKjF9RcTdx6JuO5CohbXX0j8eSTi+otJ0xZ3C1RlH+h60GX9VUseDRB4Bq+3Q2+B/hp6DPTOuuiIuHURs09fl7iz4dLF0D3sXVMJRghcAbvvhN5c1b6IWxWp7tLVJe4lcG1d6DzduaiSjBA4C3a3gw5/A6XFiLhGEWhhti5x2eLeAd2yRZnK6geBG+DKKtCnRrkk4voJ2NCTusS9DBnXgX4cegB0GejC/qolj2ogcN2AvGpxa4A26aR1iXstHF510k6r/MoILIGUa0D3gm414k/2dHy3fZlVtbiV8e4sYV3i0rF5oU935qEKSoXA3DB0NLSsY3EDfMc+jOeJiJsqBOnsNCEueyRnpXNBljpGYEeUd3JBmdfg2moibsfRaFhcE+KytX0R9KGGZSrb5BFgy8vb57ysjQuX5y+qxZ18wPIeNCEubTwGZc/yhVASeeyQgr+qT71HDwCBRXMofAmfDxZx/f82mhJ3WDPOzKFKukWAQ3JvhrJHuKl8HRn3z2V+FJ8XEnGbQtpdvrbE7c5TlZRH4Je4sHULWF6IvI8U5J8f157MXtetcguUjbKmIO718I3/1JL0CCwCkyuWmD0X1zdvUSRnvz0BZW9zVth/cb+I2wLZDrK2IS6ny53ZgY/TXgSJtRv02BwQKYj7OGzmp69yUs0cCxHU4vr7CTYlLgf27/VXnV57tBxqd1OmhRRxex3u0ZVrQlz2Jv92ijGbZNV3QeEzBw6IuJOMxITLbkLc+eDzyEnpE65Tn4vnM++DIm6fQ1ytbnWJ+x+YfUU100plgACnmw57fNXiGgAcxWRd4g5XB0WpX9/8ZEfVcJ64iNu36Naoj4hbAywHSUVcB0Hw4IKI6yEK1X0Qcatj1euUIm6s8Iq4seJl5q2IawatiWER1wTWeEZF3FgxE3FjxcvMWxHXDFoTwyKuCazxjIq4sWIm4saKl5m3Iq4ZtCaGRVwTWOMZFXFjxUzEjRUvM29FXDNoTQyLuCawxjMq4saKmYgbK15m3oq4ZtCaGBZxTWCNZ1TEjRUzETdWvMy8FXHNoDUxLOKawBrPqIgbK2Yibqx4mXkr4ppBa2JYxDWBNZ5RETdWzETcWPEy81bENYPWxLCIawJrPKMibqyYibix4mXmrYhrBq2JYRHXBNZ4RkXcWDETcWPFy8xbEdcMWhPDIq4JrPGMirixYibixoqXmbcirhm0JoZFXBNY4xkVcWPFTMSNFS8zb0VcM2hNDIu4JrDGMyrixopZXeLujepdBT27oJo8F1fn48aK/3PeirixAleHuDugaqdBedYQDwvLi4gbK/ZzeCvixgpeHeIehKodBn0Gmj91nrUWcWPFXsQNHC8RN3DwUrquFjclmva2RFx7jEOUIOKGCNNzToq4seJl5q2IawatiWER1wTWeEZF3FgxE3FjxcvMWxHXDFoTwyKuCazxjIq4sWIm4saKl5m3Iq4ZtCaGRVwTWOMZFXFjxUzEjRUvM29FXDNoTQyLuCawxjMq4saKmYgbK15m3oq4ZtCaGBZxTWCNZ1TEjRUzETdWvMy8FXHNoDUxXIe4m8GDc6FPQBco8Earg0xC1I1REbcbnFOVUoe4LHMN6K3Qe0XcVCHwYUfE9RGHql7UJe4ou2pxq6LuMJ2I6zAoI1wScWPFy8xbEdcMWhPDIq4JrPGMirixYibixoqXmbcirhm0JoZFXBNY4xkVcWPFTMSNFS8zb0VcM2hNDIu4JrDGMyrixoqZiBsrXmbeirhm0JoYFnFNYI1nVMSNFTMRN1a8zLwVcc2gNTEs4prAGs+oiBsrZiJurHiZeSvimkFrYljENYE1nlERN1bMRNxY8TLzVsQ1g9bEsIhrAms8oyJurJiJuLHiZeatiGsGrYlhEdcE1nhGRdxYMRNxY8XLzFsR1wxaE8Mirgms8YyKuLFiJuLGipeZtyKuGbQmhkVcE1jjGRVxY8VMxI0VLzNvRVwzaE0Mi7gmsMYzKuLGipmIGyteZt6KuGbQmhgWcU1gjWdUxI0Vs9DEvRNYLxMLb5fevhpe/XPg2eF4PTDn5a74fELu2mX4vI7L2kyHU6GJ+xRitCD06emIlVkt94PlI2sSl+fQLG/mkQyPQ2A+JOAhXhQe6LX5uAwjvu/8CBL6cgH0TS2cnvasiwEAHgTFf3BK1RaXaReCPjrtAE6o/oug3AcjE5e+Hw/dDTp8TpsQluGKXWnwb/3yjOd1iLsX8n03XK374fC3UI1PRCcu/f8v9CLo+WoFxv4ySdT1oEV3KnWIy4JWhV47tkQlSInARjD254zBkLfKKQGRrXq3ykO82Op+BvqIADRF4MWw/n3odrlSwhCXjm5qCtF0Gn8G1Z4BvTlX/V3xOd+rXITQY7hIG5L0CLADqeg0eZaUgrjs6Br2cwy9Z//H8Dn62WtzFdTrJbh2R+46e4vpbFGvMSsiSYsA+wiKiFeVuGm9kbWqCJyKhDtWTVyQbmlc49BqXubNcy8FcVv4qaw1ERhHXAb9duj90OEQRc0ilLwBAuQRh+X2hM7RMta0dSLS75TLw0Z02bwdEbcmshNOXkbcW+DXNtBLJuyfim+HAIf0OB8iKxzb/0ZfiXsoKrYhdC1o01t3tlJ/g54B/Wk7/M1ylxGXwX7crFQZ7gKBWSjkHQUFrYZr1/SNuOujQr+DspcvpXidTFJEXPYgL5yy8rLVOQJHo0SOxeflPFx4S5E3kW+V2bI+BB3eWrBDh/N2Of2yiSyHTNmpg3/E582aGDLMU0RcFncSdGfDcmXaBoHFYfZPUN4pFskMXLyhb8Tl7ey2g0rtjtcfQNsOgXDe6RXQ1Qd2SVwS2IuUEZf+8Vb5Z1De6s+GPuzFafkxBwIr4BMf6w6BLgXND/0ME38Zbw4qwy5yi3s3KrUE9EroqxL+OIjJk1C26MdBP5rQdltTo4jb1rby+0HgHLiyxSh3ohKXA9LsTKIU9rq1jAFbK07cZ2fV61vaSpldxE2Jpk9bZ8Gt4Z1kqYdRicuWli0uZQ/o9xLHYEhc3nKum9h2G3O7IPPMNgaU1zUC+8O7o6p4WERcPjDfl8vMZ8f5oZ7W2w7JdSH82qRKZWuk4eQFPu+eBv1gjXzWSfnMc5h1IbLfOQLHoMQDoOxsrSRFxM0uDM4aIaEfqGS1m0R8DhguWt4Y77OrNNp4kB1P4yTyM9sYS5z357D37sQ2Za5bBEjOf0Evhx47eF97LXURcVkNGs+PDXKsabjusNuqFpfGHrm7Ml/dhPe/h7JjqYlwKIh/AMMxYQ56c/Dbk3Ba3UtLHOIifN7WExPejWhNtKfIJfaljLhfRDnsrs4Kybxo4vLbmvswDHB5FSdhpxSuKea4btM/gZS+DG1tiTe/KTG8D67zj1VktUDeoc0y4r4Gvv69wN8f4hp3uPAkfPbmov0VoVxdUVancT5zHJQT9H8JZU+1J+Ef043QotaWY9i85ZJMEQKjfuS8Dy8aHyVxSWBJNwiQtPxj4m4LefHWedYNIiplZOvE56VLSzDiYu6PQZtOLxT01RB4JZLx9njlguR8luXaackUIjDutvIUYFI2HMJby99COYbKvYD5XChphwCnv5Gkm0K5IPsNJeb4h8nOtKJF1+08UO4QCIwjLivBKYXDubshKjUFTr4NdTx7CuqpKpYgUIW4fMbi8y53EZRMFgH2Gu8APX2ybqj0SSNQhbj0kenYEfL+wftJ+z2N5XPdLY8oKVzmNY2ATHOdqxJ3iBH3vuHMorWnGbSO634PyuNeRJ+Geppy2jEMKi6LQF3iDvNykj8n93OrDY4t8sAvHsUgaYcAb4U50YU9xtwUgLsGeppy2a52yp0Mgf8DujwcdkiK8zwAAAAASUVORK5CYII=";
18145
18935
 
18146
18936
 
@@ -18239,14 +19029,16 @@ const $9ecfb2c3feeca9a7$var$SendTypingIndicator = ()=>{
18239
19029
  const listOpened = (0, $3426110875af99d0$export$77e4cc5334565f28)((state)=>state.listOpened);
18240
19030
  const retorikEvent = (0, $3426110875af99d0$export$77e4cc5334565f28)((state)=>state.retorikEvent);
18241
19031
  const userIsTyping = (0, $3426110875af99d0$export$77e4cc5334565f28)((state)=>state.userIsTyping);
19032
+ const userIsSwiping = (0, $3426110875af99d0$export$77e4cc5334565f28)((state)=>state.userIsSwiping);
18242
19033
  const dataRef = (0, $b3y7N$useRef)(false);
18243
19034
  (0, $b3y7N$useEffect)(()=>{
18244
- dataRef.current = !loaderClosed || lastRecognitionInterim !== "" || userIsTyping || speaking || currentSubView !== (0, $f5ca62954d1f1f5b$export$f05d0fed0593ead7).none || route === (0, $f5ca62954d1f1f5b$export$3565eb3d00ca5a74).News || retorikEvent === (0, $f5ca62954d1f1f5b$export$4f7cd669585dc69f).DetailViewOpen || listOpened;
19035
+ dataRef.current = !loaderClosed || lastRecognitionInterim !== "" || userIsTyping || userIsSwiping || speaking || currentSubView !== (0, $f5ca62954d1f1f5b$export$f05d0fed0593ead7).none || route === (0, $f5ca62954d1f1f5b$export$3565eb3d00ca5a74).News || retorikEvent === (0, $f5ca62954d1f1f5b$export$4f7cd669585dc69f).DetailViewOpen || listOpened;
18245
19036
  }, [
18246
19037
  appAvailable,
18247
19038
  loaderClosed,
18248
19039
  lastRecognitionInterim,
18249
19040
  userIsTyping,
19041
+ userIsSwiping,
18250
19042
  speaking,
18251
19043
  currentSubView,
18252
19044
  route,
@@ -18302,6 +19094,7 @@ const $7ca39a491751a711$var$RetorikContainer = ({ parent: parent, isConfigUpdate
18302
19094
  /*#__PURE__*/ (0, $b3y7N$jsx)((0, $efe892d829a9a26a$export$2e2bcd8739ae039), {
18303
19095
  isRetorikNews: parent === (0, $f5ca62954d1f1f5b$export$a31c5a03aaeee5f).news
18304
19096
  }),
19097
+ /*#__PURE__*/ (0, $b3y7N$jsx)((0, $86772fb907b8c462$export$2e2bcd8739ae039), {}),
18305
19098
  /*#__PURE__*/ (0, $b3y7N$jsx)((0, $f11f1612db196f03$export$2e2bcd8739ae039), {
18306
19099
  fullSize: parent !== (0, $f5ca62954d1f1f5b$export$a31c5a03aaeee5f).widget && props.config.fullSize !== false,
18307
19100
  width: props.width,
@@ -18404,7 +19197,9 @@ const $760b7137ab1b4bd7$var$processJson = (json, retorikProps, baseAddress)=>{
18404
19197
  pagination: undefined,
18405
19198
  remote: undefined,
18406
19199
  companyName: json.companyName,
19200
+ companyNameLocalized: json.companyNameLocalized,
18407
19201
  subCompanyMessage: json.subCompanyMessage,
19202
+ subCompanyMessageLocalized: json.subCompanyMessageLocalized,
18408
19203
  loaderInformationTexts: {
18409
19204
  text: {
18410
19205
  top: json.textModeHomeTitle,
@@ -18415,6 +19210,16 @@ const $760b7137ab1b4bd7$var$processJson = (json, retorikProps, baseAddress)=>{
18415
19210
  bottom: json.voiceModeHomeSubtitle
18416
19211
  }
18417
19212
  },
19213
+ loaderInformationTextsLocalized: {
19214
+ text: {
19215
+ top: json.textModeHomeTitleLocalized,
19216
+ bottom: json.textModeHomeSubtitleLocalized
19217
+ },
19218
+ vocal: {
19219
+ top: json.voiceModeHomeTitleLocalized,
19220
+ bottom: json.voiceModeHomeSubtitleLocalized
19221
+ }
19222
+ },
18418
19223
  hideRetorikLogo: json.hideRetorikLogo,
18419
19224
  baseMenu: retorikProps?.menuConfig?.baseMenu,
18420
19225
  customMenu: retorikProps?.menuConfig?.customMenu,
@@ -18680,6 +19485,66 @@ var $9c6965b05003bf9d$export$2e2bcd8739ae039 = $9c6965b05003bf9d$var$Loader;
18680
19485
 
18681
19486
 
18682
19487
 
19488
+
19489
+
19490
+
19491
+ const $fd8b465eaceabe41$export$284b58786299e6c5 = async ({ configurationData: configurationData, addressData: addressData })=>{
19492
+ if (configurationData) {
19493
+ if (typeof configurationData.userConsent === "boolean") return {
19494
+ displayGDPR: false,
19495
+ userConsent: configurationData.userConsent
19496
+ };
19497
+ else return {
19498
+ displayGDPR: true,
19499
+ data: configurationData
19500
+ };
19501
+ } else {
19502
+ const baseAddress = `${addressData.baseURI?.length ? (0, $99c9e8518c31254c$export$2e2bcd8739ae039)(addressData.baseURI) : (0, $29f3fbfb4bd47593$export$2e2bcd8739ae039)(addressData.prefix)}/${addressData.tenant ? addressData.tenant + "/" : ""}`;
19503
+ const fullAddress = `${baseAddress}api/gdpr/settings`;
19504
+ const response = await fetch(fullAddress).then((res)=>res.json()).catch((error)=>{
19505
+ console.warn(error);
19506
+ return undefined;
19507
+ });
19508
+ if (response) {
19509
+ // Format response data to get a GDPR-type object
19510
+ const responseToData = {
19511
+ title: {},
19512
+ message: {},
19513
+ link: {},
19514
+ linkURL: undefined,
19515
+ buttonAccept: {},
19516
+ buttonRefuse: {},
19517
+ messageAccepted: {},
19518
+ messageRefused: {}
19519
+ };
19520
+ for(const locale in response.localizationContainer){
19521
+ // Title
19522
+ response.localizationContainer[locale]?.ConsentTitle && (responseToData.title[locale] = response.localizationContainer[locale]?.ConsentTitle);
19523
+ // Message
19524
+ response.localizationContainer[locale]?.ConsentBody && (responseToData.message[locale] = response.localizationContainer[locale]?.ConsentBody);
19525
+ // Link
19526
+ response.localizationContainer[locale]?.PrivacyStatementTitle && (responseToData.link[locale] = response.localizationContainer[locale]?.PrivacyStatementTitle);
19527
+ // Message accepted
19528
+ response.localizationContainer[locale]?.ConsentAknowledgementAccepted && (responseToData.messageAccepted[locale] = response.localizationContainer[locale]?.ConsentAknowledgementAccepted);
19529
+ // Message refused
19530
+ response.localizationContainer[locale]?.ConsentAknowledgementRefused && (responseToData.messageRefused[locale] = response.localizationContainer[locale]?.ConsentAknowledgementRefused);
19531
+ }
19532
+ // LinkURl is the same for all languages
19533
+ responseToData.linkURL = response.privacyStatementUrl;
19534
+ return {
19535
+ displayGDPR: response.enableConsent,
19536
+ data: responseToData
19537
+ };
19538
+ }
19539
+ }
19540
+ return {
19541
+ displayGDPR: false,
19542
+ userConsent: false
19543
+ };
19544
+ };
19545
+
19546
+
19547
+
18683
19548
  const $303b7224b8f411ea$var$RetorikConfigHandler = (props)=>{
18684
19549
  const [mainConfig, setMainConfig] = (0, $b3y7N$useState)(undefined);
18685
19550
  const [isConfigUpdated, setIsConfigUpdated] = (0, $b3y7N$useState)(false);
@@ -18696,7 +19561,8 @@ const $303b7224b8f411ea$var$RetorikConfigHandler = (props)=>{
18696
19561
  ...configuration
18697
19562
  };
18698
19563
  if (!data) {
18699
- const tempBaseMenu = tempConfiguration.config?.baseMenu?.filter((menu)=>// @ts-ignore : error on menu.view that doesn't exist in type CustomMenu
19564
+ const views = tempConfiguration.config?.baseMenu || (0, $cd0e91e00b0900ed$export$9bbca248acc786d3);
19565
+ const tempBaseMenu = views.filter((menu)=>// @ts-ignore : error on menu.view that doesn't exist in type CustomMenu
18700
19566
  !menu.view || menu.view !== (0, $f5ca62954d1f1f5b$export$3b4d92ba873f009a).emergency);
18701
19567
  tempConfiguration.config && (tempConfiguration.config.baseMenu = tempBaseMenu);
18702
19568
  }
@@ -18709,8 +19575,7 @@ const $303b7224b8f411ea$var$RetorikConfigHandler = (props)=>{
18709
19575
  const getUpdatedConfig = async ()=>{
18710
19576
  const fetchedConfig = await (0, $760b7137ab1b4bd7$export$2e2bcd8739ae039)(props);
18711
19577
  if (fetchedConfig && fetchedConfig.config) {
18712
- const { config: { skipLoader: skipLoader = false, defaultMode: defaultMode, config: _config, viewsConfig: viewsConfig, chatbotData: chatbotData, chatbotDataWidget: chatbotDataWidget, agentData: agentData, ponyfillFactoryCredentials: ponyfillFactoryCredentials, addressData: addressData, userData: userData, customVoice: customVoice, colors: colors }, externalConfigEnabled: externalConfigEnabled } = fetchedConfig;
18713
- console.log(externalConfigEnabled);
19578
+ const { config: { skipLoader: skipLoader = false, defaultMode: defaultMode, config: _config, viewsConfig: viewsConfig, chatbotData: chatbotData, chatbotDataWidget: chatbotDataWidget, agentData: agentData, ponyfillFactoryCredentials: ponyfillFactoryCredentials, addressData: addressData, userData: userData, customVoice: customVoice, colors: colors } } = fetchedConfig;
18714
19579
  const fetchedMainConfig = {
18715
19580
  config: _config,
18716
19581
  viewsConfig: viewsConfig,
@@ -18732,7 +19597,7 @@ const $303b7224b8f411ea$var$RetorikConfigHandler = (props)=>{
18732
19597
  }
18733
19598
  };
18734
19599
  if (props.config !== undefined) {
18735
- console.log("Get config from manualConfig");
19600
+ console.log("Retorik Framework > Get config from manualConfig");
18736
19601
  // Check mandatory properties
18737
19602
  if (props.viewsConfig && props.chatbotData && props.agentData && props.ponyfillFactoryCredentials) {
18738
19603
  const copyConfig = {
@@ -18743,19 +19608,34 @@ const $303b7224b8f411ea$var$RetorikConfigHandler = (props)=>{
18743
19608
  checkEmergencyAndSetConfig(copyConfig);
18744
19609
  } else {
18745
19610
  // Warnings for missing data in props
18746
- console.warn("Mandatory configuration data missing : ");
19611
+ console.warn("Retorik Framework > Mandatory configuration data missing : ");
18747
19612
  !props.viewsConfig && console.warn(" * viewsConfig");
18748
19613
  !props.chatbotData && console.warn(" * chatbotData");
18749
19614
  !props.agentData && console.warn(" * agentData");
18750
19615
  !props.ponyfillFactoryCredentials && console.warn(" * ponyfillFactoryCredentials");
18751
19616
  }
18752
19617
  } else if (!isConfigUpdated) {
18753
- console.log("Get config from Retorik");
19618
+ console.log("Retorik Framework > Get config from Retorik Studio");
18754
19619
  getUpdatedConfig();
18755
19620
  }
18756
19621
  }, [
18757
19622
  props
18758
19623
  ]);
19624
+ /**
19625
+ * Set GDPR data from either manual configuration or fetch from Retorik Studio
19626
+ */ (0, $b3y7N$useEffect)(()=>{
19627
+ const checkGDPR = async ()=>{
19628
+ const data = await (0, $fd8b465eaceabe41$export$284b58786299e6c5)({
19629
+ configurationData: props.GDPR,
19630
+ addressData: props.addressData
19631
+ });
19632
+ // Set GDPR data in utilsStore
19633
+ data.data && (0, $3426110875af99d0$export$2d640df2114a2d77)(data.data);
19634
+ (0, $3426110875af99d0$export$ff26692bd8e0fbbd)(data.displayGDPR);
19635
+ typeof data.userConsent === "boolean" && (0, $3426110875af99d0$export$7a09e6b3c59f37ad)(data.userConsent);
19636
+ };
19637
+ props.addressData && checkGDPR();
19638
+ }, []);
18759
19639
  return mainConfig && configurationFetchingEnded ? /*#__PURE__*/ (0, $b3y7N$jsx)((0, $7ca39a491751a711$export$2e2bcd8739ae039), {
18760
19640
  parent: props.parent,
18761
19641
  config: mainConfig,
@@ -18827,9 +19707,10 @@ const $c86dc39bbf10892c$export$5bc78eab59412c50 = (buttonData)=>{
18827
19707
 
18828
19708
  const $ebe9f638246a1b0b$var$LayoutHandler = (props)=>{
18829
19709
  const translation = (0, $f902d4436881b887$export$6650dace022cfacc)((state)=>state.currentTranslations);
19710
+ const currentLayout = (0, $56b00880a398c953$export$bd22554f31e5f96f)((state)=>state.currentLayout);
18830
19711
  const displayChangeLayoutButton = (0, $56b00880a398c953$export$bd22554f31e5f96f)((state)=>state.changeLayoutButtonDisplay);
18831
19712
  const { open: open, loaded: loaded, widgetDisplayType: widgetDisplayType } = (0, $f9b55dee2122a017$export$d95eb9b67812311f)();
18832
- const [currentConfiguration, setCurrentConfiguration] = (0, $b3y7N$useState)(props.retorikProps.widgetConfig?.large);
19713
+ const [currentConfiguration, setCurrentConfiguration] = (0, $b3y7N$useState)(props.widgetConfig?.large);
18833
19714
  const [widgetButton, setWidgetButton] = (0, $b3y7N$useState)("");
18834
19715
  const [widgetBorder, setWidgetBorder] = (0, $b3y7N$useState)("");
18835
19716
  const [mobileWidth, setMobileWidth] = (0, $b3y7N$useState)(window.innerWidth < 600);
@@ -18838,7 +19719,7 @@ const $ebe9f638246a1b0b$var$LayoutHandler = (props)=>{
18838
19719
  setMobileWidth(window.innerWidth < 600);
18839
19720
  };
18840
19721
  (0, $b3y7N$useEffect)(()=>{
18841
- setWidgetButton((0, $c86dc39bbf10892c$export$5bc78eab59412c50)(props.retorikProps.widgetConfig?.button));
19722
+ setWidgetButton((0, $c86dc39bbf10892c$export$5bc78eab59412c50)(props.widgetConfig?.button));
18842
19723
  window.addEventListener("resize", handleResize);
18843
19724
  return ()=>window.removeEventListener("resize", handleResize);
18844
19725
  }, []);
@@ -18860,12 +19741,12 @@ const $ebe9f638246a1b0b$var$LayoutHandler = (props)=>{
18860
19741
  (0, $b3y7N$useEffect)(()=>{
18861
19742
  switch(widgetDisplayType){
18862
19743
  case "large":
18863
- setCurrentConfiguration(props.retorikProps.widgetConfig?.large);
18864
- setWidgetBorder((0, $c86dc39bbf10892c$export$d6ad062ea094ff6f)(props.retorikProps.widgetConfig?.large?.border));
19744
+ setCurrentConfiguration(props.widgetConfig?.large);
19745
+ setWidgetBorder((0, $c86dc39bbf10892c$export$d6ad062ea094ff6f)(props.widgetConfig?.large?.border));
18865
19746
  break;
18866
19747
  case "thumbnail":
18867
- setCurrentConfiguration(props.retorikProps.widgetConfig?.thumbnail || props.retorikProps.widgetConfig?.large);
18868
- setWidgetBorder((0, $c86dc39bbf10892c$export$d6ad062ea094ff6f)(props.retorikProps.widgetConfig?.thumbnail?.border || props.retorikProps.widgetConfig?.large?.border));
19748
+ setCurrentConfiguration(props.widgetConfig?.thumbnail || props.widgetConfig?.large);
19749
+ setWidgetBorder((0, $c86dc39bbf10892c$export$d6ad062ea094ff6f)(props.widgetConfig?.thumbnail?.border || props.widgetConfig?.large?.border));
18869
19750
  break;
18870
19751
  default:
18871
19752
  break;
@@ -18875,90 +19756,94 @@ const $ebe9f638246a1b0b$var$LayoutHandler = (props)=>{
18875
19756
  ]);
18876
19757
  const extendButtonHandler = ()=>{
18877
19758
  // if different display type available
18878
- if (props.retorikProps.widgetConfig?.large && props.retorikProps.widgetConfig?.thumbnail) (0, $f9b55dee2122a017$export$f0e9d14ede4c01bd)();
19759
+ if (props.widgetConfig?.large && props.widgetConfig?.thumbnail) (0, $f9b55dee2122a017$export$f0e9d14ede4c01bd)();
18879
19760
  else {
18880
19761
  (0, $56b00880a398c953$export$29ec02ff899d2b53)(true);
18881
19762
  (0, $56b00880a398c953$export$e8437af1f2483b8e)((0, $f5ca62954d1f1f5b$export$a31c5a03aaeee5f).agent);
18882
19763
  }
18883
19764
  };
18884
- return props.currentLayout === (0, $f5ca62954d1f1f5b$export$a31c5a03aaeee5f).widget ? /*#__PURE__*/ (0, $b3y7N$jsxs)((0, $b3y7N$Fragment), {
19765
+ return /*#__PURE__*/ (0, $b3y7N$jsxs)((0, $b3y7N$Fragment), {
18885
19766
  children: [
18886
- props.retorikProps.widgetConfig?.button?.display !== false && /*#__PURE__*/ (0, $b3y7N$jsxs)("button", {
19767
+ props.widgetConfig?.button?.display !== false && /*#__PURE__*/ (0, $b3y7N$jsxs)("button", {
18887
19768
  className: `rf-fixed rf-px-2 rf-flex rf-flex-row rf-items-center ${widgetButton}`,
18888
19769
  style: {
18889
- color: props.retorikProps.widgetConfig?.button?.text?.color || (0, $71132ad06245c2e7$export$4aebf65ed07cf17b).rgb,
18890
- backgroundColor: props.retorikProps.widgetConfig?.button?.background?.color || "transparent",
18891
- borderWidth: props.retorikProps.widgetConfig?.button?.border?.thickness !== undefined ? `${props.retorikProps.widgetConfig?.button?.border?.thickness}px` : "1px",
18892
- borderColor: props.retorikProps.widgetConfig?.button?.border?.color || (0, $71132ad06245c2e7$export$4aebf65ed07cf17b).rgb,
18893
- top: props.retorikProps.widgetConfig?.button?.position?.top,
18894
- bottom: props.retorikProps.widgetConfig?.button?.position?.bottom ? props.retorikProps.widgetConfig?.button?.position?.bottom : props.retorikProps.widgetConfig?.button?.position?.top || props.retorikProps.widgetConfig?.button?.position?.left || props.retorikProps.widgetConfig?.button?.position?.right ? undefined : "1rem",
18895
- left: props.retorikProps.widgetConfig?.button?.position?.left,
18896
- right: props.retorikProps.widgetConfig?.button?.position?.right ? props.retorikProps.widgetConfig?.button?.position?.right : props.retorikProps.widgetConfig?.button?.position?.top || props.retorikProps.widgetConfig?.button?.position?.bottom || props.retorikProps.widgetConfig?.button?.position?.left ? undefined : "1rem"
19770
+ color: props.widgetConfig?.button?.text?.color || (0, $71132ad06245c2e7$export$4aebf65ed07cf17b).rgb,
19771
+ backgroundColor: props.widgetConfig?.button?.background?.color || "transparent",
19772
+ borderWidth: props.widgetConfig?.button?.border?.thickness !== undefined ? `${props.widgetConfig?.button?.border?.thickness}px` : "1px",
19773
+ borderColor: props.widgetConfig?.button?.border?.color || (0, $71132ad06245c2e7$export$4aebf65ed07cf17b).rgb,
19774
+ top: props.widgetConfig?.button?.position?.top,
19775
+ bottom: props.widgetConfig?.button?.position?.bottom ? props.widgetConfig?.button?.position?.bottom : props.widgetConfig?.button?.position?.top || props.widgetConfig?.button?.position?.left || props.widgetConfig?.button?.position?.right ? undefined : "1rem",
19776
+ left: props.widgetConfig?.button?.position?.left,
19777
+ right: props.widgetConfig?.button?.position?.right ? props.widgetConfig?.button?.position?.right : props.widgetConfig?.button?.position?.top || props.widgetConfig?.button?.position?.bottom || props.widgetConfig?.button?.position?.left ? undefined : "1rem"
18897
19778
  },
18898
19779
  onClick: (0, $f9b55dee2122a017$export$77c0ba4d0d97cee5),
18899
19780
  id: "retorik-widget-button",
18900
19781
  children: [
18901
- props.retorikProps.widgetConfig?.button?.image?.url && props.retorikProps.widgetConfig?.button?.image?.position !== "right" && /*#__PURE__*/ (0, $b3y7N$jsx)("img", {
18902
- className: `${props.retorikProps.widgetConfig?.button?.image.marginY === false ? "" : "rf-my-1"}`,
18903
- src: `${props.retorikProps.widgetConfig.button.image.url}`,
19782
+ props.widgetConfig?.button?.image?.url && props.widgetConfig?.button?.image?.position !== "right" && /*#__PURE__*/ (0, $b3y7N$jsx)("img", {
19783
+ className: `${props.widgetConfig?.button?.image.marginY === false ? "" : "rf-my-1"}`,
19784
+ src: `${props.widgetConfig.button.image.url}`,
18904
19785
  alt: "Retorik widget",
18905
19786
  style: {
18906
- height: props.retorikProps.widgetConfig?.button?.image.height || "2rem"
19787
+ height: props.widgetConfig?.button?.image.height || "2rem"
18907
19788
  }
18908
19789
  }),
18909
19790
  /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
18910
19791
  className: "rf-py-2 rf-ml-1",
18911
- children: props.retorikProps.widgetConfig?.button?.text?.content || translation.common.needhelp
19792
+ children: props.widgetConfig?.button?.text?.content || translation.common.needhelp
18912
19793
  }),
18913
- props.retorikProps.widgetConfig?.button?.image?.url && props.retorikProps.widgetConfig?.button?.image?.position === "right" && /*#__PURE__*/ (0, $b3y7N$jsx)("img", {
18914
- className: `${props.retorikProps.widgetConfig?.button?.image.marginY === false ? "" : "rf-my-1"}`,
18915
- src: `${props.retorikProps.widgetConfig.button.image.url}`,
19794
+ props.widgetConfig?.button?.image?.url && props.widgetConfig?.button?.image?.position === "right" && /*#__PURE__*/ (0, $b3y7N$jsx)("img", {
19795
+ className: `${props.widgetConfig?.button?.image.marginY === false ? "" : "rf-my-1"}`,
19796
+ src: `${props.widgetConfig.button.image.url}`,
18916
19797
  alt: "Retorik widget",
18917
19798
  style: {
18918
- height: props.retorikProps.widgetConfig?.button?.image.height || "2rem"
19799
+ height: props.widgetConfig?.button?.image.height || "2rem"
18919
19800
  }
18920
19801
  })
18921
19802
  ]
18922
19803
  }),
18923
19804
  loaded && /*#__PURE__*/ (0, $b3y7N$jsxs)("div", {
18924
- className: "rf-fixed rf-pt-8 rf-height-fill-available rf-transition-all rf-overflow-hidden rf-max-w-[100vw]",
18925
- style: {
19805
+ className: `${currentLayout === (0, $f5ca62954d1f1f5b$export$a31c5a03aaeee5f).widget ? "rf-fixed rf-pt-8 rf-height-fill-available rf-transition-all rf-overflow-hidden rf-max-w-[100vw]" : ""}`,
19806
+ style: currentLayout === (0, $f5ca62954d1f1f5b$export$a31c5a03aaeee5f).widget ? {
18926
19807
  ...frameStyle,
18927
19808
  width: open ? mobileWidth ? "100%" : currentConfiguration?.width || "400px" : "0px",
18928
19809
  height: currentConfiguration?.height || (mobileWidth ? "100%" : "630px")
18929
- },
19810
+ } : {},
18930
19811
  "data-testid": "widget-wrapper",
18931
19812
  children: [
18932
- displayChangeLayoutButton && !mobileWidth && props.currentLayout === (0, $f5ca62954d1f1f5b$export$a31c5a03aaeee5f).widget && /*#__PURE__*/ (0, $b3y7N$jsx)("button", {
18933
- onClick: extendButtonHandler,
18934
- "aria-label": "Extend",
18935
- className: "rf-absolute rf-z-exitwidget rf-flex rf-right-8 rf-top-0 rf-p-1 rf-bg-truewhite rf-border rf-border-trueblack rf-rounded-lg",
18936
- children: /*#__PURE__*/ (0, $b3y7N$jsx)((0, $14288c7aa1eb92fb$export$2e2bcd8739ae039), {
18937
- className: "rf-h-4 rf-w-4",
18938
- color: "#000000",
18939
- extended: false
18940
- })
18941
- }),
18942
- /*#__PURE__*/ (0, $b3y7N$jsx)("button", {
18943
- onClick: (0, $f9b55dee2122a017$export$77c0ba4d0d97cee5),
18944
- "aria-label": "Close",
18945
- className: "rf-absolute rf-z-exitwidget rf-flex rf-right-0 rf-top-0 rf-p-1 rf-bg-truewhite rf-border rf-border-trueblack rf-rounded-lg",
18946
- children: /*#__PURE__*/ (0, $b3y7N$jsx)((0, $e5bcb526d242a3b8$export$2e2bcd8739ae039), {
18947
- className: "rf-h-4 rf-w-4",
18948
- color: "#000000"
18949
- })
19813
+ currentLayout === (0, $f5ca62954d1f1f5b$export$a31c5a03aaeee5f).widget && /*#__PURE__*/ (0, $b3y7N$jsxs)((0, $b3y7N$react).Fragment, {
19814
+ children: [
19815
+ displayChangeLayoutButton && !mobileWidth && /*#__PURE__*/ (0, $b3y7N$jsx)("button", {
19816
+ onClick: extendButtonHandler,
19817
+ "aria-label": "Extend",
19818
+ className: "rf-absolute rf-z-exitwidget rf-flex rf-right-8 rf-top-0 rf-p-1 rf-bg-truewhite rf-border rf-border-trueblack rf-rounded-lg",
19819
+ children: /*#__PURE__*/ (0, $b3y7N$jsx)((0, $14288c7aa1eb92fb$export$2e2bcd8739ae039), {
19820
+ className: "rf-h-4 rf-w-4",
19821
+ color: "#000000",
19822
+ extended: false
19823
+ })
19824
+ }),
19825
+ /*#__PURE__*/ (0, $b3y7N$jsx)("button", {
19826
+ onClick: (0, $f9b55dee2122a017$export$77c0ba4d0d97cee5),
19827
+ "aria-label": "Close",
19828
+ className: "rf-absolute rf-z-exitwidget rf-flex rf-right-0 rf-top-0 rf-p-1 rf-bg-truewhite rf-border rf-border-trueblack rf-rounded-lg",
19829
+ children: /*#__PURE__*/ (0, $b3y7N$jsx)((0, $e5bcb526d242a3b8$export$2e2bcd8739ae039), {
19830
+ className: "rf-h-4 rf-w-4",
19831
+ color: "#000000"
19832
+ })
19833
+ })
19834
+ ]
18950
19835
  }),
18951
19836
  /*#__PURE__*/ (0, $b3y7N$jsx)("div", {
18952
- className: `rf-relative rf-h-full rf-w-full rf-overflow-hidden ${!mobileWidth && widgetBorder}`,
18953
- style: {
19837
+ className: `${currentLayout === (0, $f5ca62954d1f1f5b$export$a31c5a03aaeee5f).widget ? `rf-relative rf-h-full rf-w-full rf-overflow-hidden ${!mobileWidth && widgetBorder}` : ""}`,
19838
+ style: currentLayout === (0, $f5ca62954d1f1f5b$export$a31c5a03aaeee5f).widget ? {
18954
19839
  borderColor: frameStyle.borderColor
18955
- },
19840
+ } : {},
18956
19841
  children: props.children
18957
19842
  })
18958
19843
  ]
18959
19844
  })
18960
19845
  ]
18961
- }) : props.children;
19846
+ });
18962
19847
  };
18963
19848
  var $ebe9f638246a1b0b$export$2e2bcd8739ae039 = $ebe9f638246a1b0b$var$LayoutHandler;
18964
19849
 
@@ -18977,28 +19862,17 @@ const $b187a833f9ec9f9e$var$RetorikWidget = (props)=>{
18977
19862
  // Ne mettre ici que de la logique spécifique au widget
18978
19863
  // Ce qui est commun avec RetorikAgent ou autres doit aller dans RetorikComposer ou ContextProvider
18979
19864
  // -------------------------
18980
- const currentLayout = (0, $56b00880a398c953$export$bd22554f31e5f96f)((state)=>state.currentLayout);
18981
19865
  (0, $b3y7N$useEffect)(()=>{
18982
19866
  (0, $56b00880a398c953$export$e8437af1f2483b8e)((0, $f5ca62954d1f1f5b$export$a31c5a03aaeee5f).widget);
18983
19867
  }, []);
18984
- const [mobileWidth, setMobileWidth] = (0, $b3y7N$useState)(window.innerWidth < 600);
18985
- const handleResize = ()=>{
18986
- setMobileWidth(window.innerWidth < 600);
18987
- };
18988
- (0, $b3y7N$useEffect)(()=>{
18989
- window.addEventListener("resize", handleResize);
18990
- return ()=>window.removeEventListener("resize", handleResize);
18991
- }, []);
18992
19868
  return /*#__PURE__*/ (0, $b3y7N$jsx)((0, $71329996a1817ff3$export$2e2bcd8739ae039), {
18993
19869
  children: /*#__PURE__*/ (0, $b3y7N$jsx)((0, $ebe9f638246a1b0b$export$2e2bcd8739ae039), {
18994
- currentLayout: currentLayout,
18995
- retorikProps: props,
19870
+ ...props,
18996
19871
  children: /*#__PURE__*/ (0, $b3y7N$jsx)((0, $303b7224b8f411ea$export$2e2bcd8739ae039), {
18997
- parent: currentLayout,
18998
19872
  ...props,
18999
19873
  width: "full",
19000
19874
  height: "full",
19001
- mobile: mobileWidth
19875
+ parent: (0, $f5ca62954d1f1f5b$export$a31c5a03aaeee5f).widget
19002
19876
  })
19003
19877
  })
19004
19878
  });