@davi-ai/retorik-framework 3.2.0 → 3.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/AttachmentDetail.1e06c2a5.js +1757 -0
  2. package/dist/AttachmentDetail.1e06c2a5.js.map +1 -0
  3. package/dist/AttachmentDetail.c6c297df.js +1732 -0
  4. package/dist/AttachmentDetail.c6c297df.js.map +1 -0
  5. package/dist/CustomView.080c8028.js +143 -0
  6. package/dist/CustomView.080c8028.js.map +1 -0
  7. package/dist/CustomView.90d2a13d.js +134 -0
  8. package/dist/CustomView.90d2a13d.js.map +1 -0
  9. package/dist/Emergency.423214ad.js +301 -0
  10. package/dist/Emergency.423214ad.js.map +1 -0
  11. package/dist/Emergency.a21f837c.js +292 -0
  12. package/dist/Emergency.a21f837c.js.map +1 -0
  13. package/dist/FullScreenImage.1fe27198.js +70 -0
  14. package/dist/FullScreenImage.1fe27198.js.map +1 -0
  15. package/dist/FullScreenImage.9a9b978e.js +83 -0
  16. package/dist/FullScreenImage.9a9b978e.js.map +1 -0
  17. package/dist/HistoryList.50ff0fd9.js +242 -0
  18. package/dist/HistoryList.50ff0fd9.js.map +1 -0
  19. package/dist/HistoryList.5fd6aa12.js +228 -0
  20. package/dist/HistoryList.5fd6aa12.js.map +1 -0
  21. package/dist/LanguageChoice.1579b654.js +125 -0
  22. package/dist/LanguageChoice.1579b654.js.map +1 -0
  23. package/dist/LanguageChoice.61e36c1d.js +116 -0
  24. package/dist/LanguageChoice.61e36c1d.js.map +1 -0
  25. package/dist/LittleWeatherContainer.07937cf3.js +57 -0
  26. package/dist/LittleWeatherContainer.07937cf3.js.map +1 -0
  27. package/dist/LittleWeatherContainer.d27a6b8a.js +44 -0
  28. package/dist/LittleWeatherContainer.d27a6b8a.js.map +1 -0
  29. package/dist/NewsContainer.67f04b19.js +730 -0
  30. package/dist/NewsContainer.67f04b19.js.map +1 -0
  31. package/dist/NewsContainer.932174e9.js +755 -0
  32. package/dist/NewsContainer.932174e9.js.map +1 -0
  33. package/dist/SpiritEngineWrapper.1d8db53d.js +82 -0
  34. package/dist/SpiritEngineWrapper.1d8db53d.js.map +1 -0
  35. package/dist/SpiritEngineWrapper.27e9c120.js +96 -0
  36. package/dist/SpiritEngineWrapper.27e9c120.js.map +1 -0
  37. package/dist/ThreeJsWrapper.09c689b8.js +141 -0
  38. package/dist/ThreeJsWrapper.09c689b8.js.map +1 -0
  39. package/dist/ThreeJsWrapper.7918143f.js +128 -0
  40. package/dist/ThreeJsWrapper.7918143f.js.map +1 -0
  41. package/dist/Weather.661c2cac.js +282 -0
  42. package/dist/Weather.661c2cac.js.map +1 -0
  43. package/dist/Weather.fb22fba3.js +268 -0
  44. package/dist/Weather.fb22fba3.js.map +1 -0
  45. package/dist/index.d.ts +69 -50
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +23055 -23224
  48. package/dist/index.js.map +1 -1
  49. package/dist/index.modern.js +22278 -22376
  50. package/dist/index.modern.js.map +1 -1
  51. package/package.json +4 -36
@@ -0,0 +1,228 @@
1
+ import {jsx as $ktVFM$jsx, jsxs as $ktVFM$jsxs} from "react/jsx-runtime";
2
+ import $ktVFM$react, {useRef as $ktVFM$useRef, useEffect as $ktVFM$useEffect} from "react";
3
+
4
+
5
+ function $parcel$defineInteropFlag(a) {
6
+ Object.defineProperty(a, '__esModule', {value: true, configurable: true});
7
+ }
8
+
9
+ function $parcel$export(e, n, v, s) {
10
+ Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
11
+ }
12
+
13
+ var $parcel$global = globalThis;
14
+ var parcelRequire = $parcel$global["parcelRequirea39d"];
15
+ var parcelRegister = parcelRequire.register;
16
+ parcelRegister("2IZpO", function(module, exports) {
17
+
18
+ $parcel$defineInteropFlag(module.exports);
19
+
20
+ $parcel$export(module.exports, "default", () => $7e0481471d50d053$export$2e2bcd8739ae039);
21
+
22
+
23
+
24
+ var $1Qww3 = parcelRequire("1Qww3");
25
+
26
+ var $2fuDN = parcelRequire("2fuDN");
27
+
28
+ var $j67YK = parcelRequire("j67YK");
29
+
30
+ var $aNpqK = parcelRequire("aNpqK");
31
+
32
+ var $dhRwo = parcelRequire("dhRwo");
33
+
34
+ var $gQ55S = parcelRequire("gQ55S");
35
+
36
+ var $jeYOr = parcelRequire("jeYOr");
37
+
38
+ var $4ucVo = parcelRequire("4ucVo");
39
+
40
+ var $8KJP1 = parcelRequire("8KJP1");
41
+ const $7e0481471d50d053$var$HistoryList = ()=>{
42
+ const translation = (0, $2fuDN.useLocaleStore)((state)=>state.currentTranslations);
43
+ const isWidget = (0, $1Qww3.useViewStore)((state)=>state.isWidget);
44
+ const isBorne = (0, $1Qww3.useViewStore)((state)=>state.isBorne);
45
+ const setCurrentSubView = (0, $j67YK.useUtilsStore)((state)=>state.actions.setCurrentSubView);
46
+ const sendEvent = (0, $aNpqK.useDirectlineStore)((state)=>state.actions.sendEvent);
47
+ const activities = (0, $dhRwo.default)();
48
+ const scrollRef = (0, $ktVFM$useRef)(null);
49
+ const divRef = (0, $ktVFM$useRef)(null);
50
+ /**
51
+ * On call :
52
+ * - scroll to the scrollRef HTML element at the bottom of the view
53
+ */ const scrollToRef = ()=>{
54
+ if (scrollRef && scrollRef.current !== null) scrollRef.current.scrollIntoView({
55
+ behavior: 'smooth',
56
+ block: 'nearest'
57
+ });
58
+ };
59
+ /**
60
+ * On component mount :
61
+ * - call scrollToRef method
62
+ */ (0, $ktVFM$useEffect)(()=>{
63
+ setTimeout(()=>{
64
+ scrollToRef();
65
+ }, 200);
66
+ }, []);
67
+ (0, $ktVFM$useEffect)(()=>{
68
+ divRef?.current && isWidget && (0, $8KJP1.default)(null, divRef);
69
+ }, [
70
+ divRef?.current
71
+ ]);
72
+ const handleClose = ()=>{
73
+ setCurrentSubView((0, $4ucVo.CurrentSubView).none);
74
+ sendEvent('Davi.CloseWindow', null);
75
+ sendEvent('Davi.CloseWindowHistory', null);
76
+ };
77
+ return /*#__PURE__*/ (0, $ktVFM$jsx)((0, $gQ55S.SubMenuClosing), {
78
+ handleClose: handleClose,
79
+ backIsConversation: true,
80
+ title: translation.history.title,
81
+ children: /*#__PURE__*/ (0, $ktVFM$jsxs)("div", {
82
+ ref: divRef,
83
+ className: `rf-pb-4 rf-overflow-y-scroll ${isBorne ? 'rf-scrollbar-thin' : 'rf-scrollbar-hidden'}`,
84
+ children: [
85
+ activities.map((activity, key)=>{
86
+ return /*#__PURE__*/ (0, $ktVFM$jsx)((0, $jeYOr.default), {
87
+ activity: activity
88
+ }, key);
89
+ }),
90
+ /*#__PURE__*/ (0, $ktVFM$jsx)("div", {
91
+ ref: scrollRef
92
+ })
93
+ ]
94
+ })
95
+ });
96
+ };
97
+ var $7e0481471d50d053$export$2e2bcd8739ae039 = $7e0481471d50d053$var$HistoryList;
98
+
99
+ });
100
+ parcelRegister("dhRwo", function(module, exports) {
101
+
102
+ $parcel$export(module.exports, "default", () => $a4a3509b5adcc0fb$export$2e2bcd8739ae039);
103
+
104
+ var $e5dDB = parcelRequire("e5dDB");
105
+
106
+ var $9GPj7 = parcelRequire("9GPj7");
107
+ function $a4a3509b5adcc0fb$export$2e2bcd8739ae039() {
108
+ const activities = (0, $9GPj7.useActivityStore)((state)=>state.messageActivities);
109
+ // processedId contains the ids of the activities already processed (because useActivities gives duplicate activities with different state depending on if it's been spoken or not )
110
+ const processedId = [];
111
+ const history = [];
112
+ activities.forEach((activity)=>{
113
+ if (activity.id && !processedId.includes(activity.id)) {
114
+ processedId.push(activity.id);
115
+ // Check if this is a question or an answer (questions from the user don't have a replyToId field)
116
+ if (activity.replyToId) {
117
+ const question = history.find((historyItem)=>historyItem.question.id === activity.replyToId);
118
+ if (question) question.answers.push(activity);
119
+ else {
120
+ const newQuestion = (0, $e5dDB.createNewQuestionForTimestamp)(activity);
121
+ history.push({
122
+ question: newQuestion,
123
+ answers: [
124
+ activity
125
+ ]
126
+ });
127
+ }
128
+ } else if (activity.label === 'Davi.BringupMessage' && activity.text) {
129
+ const newQuestion = (0, $e5dDB.createNewQuestionForTimestamp)(activity);
130
+ history.push({
131
+ question: newQuestion,
132
+ answers: [
133
+ activity
134
+ ]
135
+ });
136
+ } else history.push({
137
+ question: activity,
138
+ answers: []
139
+ });
140
+ }
141
+ });
142
+ return history;
143
+ }
144
+
145
+ });
146
+
147
+ parcelRegister("jeYOr", function(module, exports) {
148
+
149
+ $parcel$export(module.exports, "default", () => $ad9755f823edbd92$export$2e2bcd8739ae039);
150
+
151
+
152
+
153
+ var $3VLZE = parcelRequire("3VLZE");
154
+ const $ad9755f823edbd92$var$HistoryItem = ({ activity: activity })=>{
155
+ return /*#__PURE__*/ (0, $ktVFM$jsxs)("div", {
156
+ className: "rf-mb-4 rf-flex rf-flex-col rf-justify-start rf-items-start rf-gap-4 rf-text-size-auto",
157
+ children: [
158
+ activity?.question && activity.question.type === 'message' && /*#__PURE__*/ (0, $ktVFM$jsx)((0, $3VLZE.default), {
159
+ activity: activity.question,
160
+ isQuestion: true
161
+ }),
162
+ activity.answers.map((answer, j)=>{
163
+ return answer.type === 'message' ? /*#__PURE__*/ (0, $ktVFM$jsx)((0, $3VLZE.default), {
164
+ activity: answer,
165
+ isQuestion: false
166
+ }, j) : /*#__PURE__*/ (0, $ktVFM$jsx)((0, $ktVFM$react).Fragment, {});
167
+ })
168
+ ]
169
+ });
170
+ };
171
+ var $ad9755f823edbd92$export$2e2bcd8739ae039 = $ad9755f823edbd92$var$HistoryItem;
172
+
173
+ });
174
+ parcelRegister("3VLZE", function(module, exports) {
175
+
176
+ $parcel$export(module.exports, "default", () => $c7eb1586efc51c4d$export$2e2bcd8739ae039);
177
+
178
+
179
+
180
+ var $2fuDN = parcelRequire("2fuDN");
181
+
182
+ var $1Qww3 = parcelRequire("1Qww3");
183
+
184
+ var $dLlm9 = parcelRequire("dLlm9");
185
+
186
+ var $1LYTj = parcelRequire("1LYTj");
187
+ const $c7eb1586efc51c4d$var$HistoryQA = ({ activity: activity, isQuestion: isQuestion })=>{
188
+ const locale = (0, $2fuDN.useLocaleStore)((state)=>state.locale);
189
+ const isMobile = (0, $1Qww3.useViewStore)((state)=>state.isMobile);
190
+ const time = activity.localTimestamp ? new Date(activity.localTimestamp) : activity.timestamp ? new Date(activity.timestamp) : new Date();
191
+ return activity.text || !!activity.attachments?.length ? /*#__PURE__*/ (0, $ktVFM$jsxs)("div", {
192
+ className: `${isMobile ? 'rf-w-full' : 'rf-max-w-full'} rf-flex rf-flex-col rf-gap-1`,
193
+ children: [
194
+ /*#__PURE__*/ (0, $ktVFM$jsx)("div", {
195
+ className: "rf-text-[#9A9A9A]",
196
+ children: time.toLocaleString(locale, {
197
+ hour: 'numeric',
198
+ minute: 'numeric'
199
+ })
200
+ }),
201
+ /*#__PURE__*/ (0, $ktVFM$jsxs)("div", {
202
+ className: `${isQuestion ? 'rf-text-secondary' : 'rf-text-textModePanelConversationBot'}`,
203
+ children: [
204
+ activity.htmlText ? /*#__PURE__*/ (0, $ktVFM$jsx)("div", {
205
+ dangerouslySetInnerHTML: {
206
+ __html: activity.htmlText
207
+ }
208
+ }) : activity.text ? (0, $dLlm9.getTextWithoutSpeechMarkdown)(activity.text) : '',
209
+ !!activity.attachments?.length && !(activity.attachmentLayout && activity.attachmentLayout.toLowerCase() === 'davilist') && /*#__PURE__*/ (0, $ktVFM$jsx)("div", {
210
+ className: `rf-w-full rf-min-h-16 rf-overflow-x-hidden rf-overflow-y-auto ${activity.text && 'rf-pt-4'}`,
211
+ children: /*#__PURE__*/ (0, $ktVFM$jsx)((0, $1LYTj.default), {
212
+ activity: activity,
213
+ history: true
214
+ })
215
+ })
216
+ ]
217
+ })
218
+ ]
219
+ }) : /*#__PURE__*/ (0, $ktVFM$jsx)((0, $ktVFM$react).Fragment, {});
220
+ };
221
+ var $c7eb1586efc51c4d$export$2e2bcd8739ae039 = $c7eb1586efc51c4d$var$HistoryQA;
222
+
223
+ });
224
+
225
+
226
+
227
+
228
+ //# sourceMappingURL=HistoryList.5fd6aa12.js.map
@@ -0,0 +1 @@
1
+ {"mappings":"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","sources":["src/components/History/HistoryList.tsx","src/hooks/useMessageActivities.ts","src/components/History/HistoryItem.tsx","src/components/History/HistoryQA.tsx"],"sourcesContent":["import React, { useEffect, useRef } from 'react'\r\nimport { useViewStore } from '../Contexts/ViewContext'\r\nimport { useLocaleStore } from '../Contexts/LocaleContext'\r\nimport { useUtilsStore } from '../Contexts/UtilsContext'\r\nimport { useDirectlineStore } from '../Contexts/DirectlineContext'\r\nimport useMessageActivities from '../../hooks/useMessageActivities'\r\nimport { SubMenuClosing as Template } from '../Templates'\r\nimport HistoryItem from './HistoryItem'\r\nimport { CurrentSubView } from '../../models/enums'\r\nimport preventEvents from '../../utils/preventEvents'\r\n\r\nconst HistoryList = (): JSX.Element => {\r\n const translation = useLocaleStore((state) => state.currentTranslations)\r\n const isWidget = useViewStore((state) => state.isWidget)\r\n const isBorne = useViewStore((state) => state.isBorne)\r\n const setCurrentSubView = useUtilsStore((state) => state.actions.setCurrentSubView)\r\n const sendEvent = useDirectlineStore((state) => state.actions.sendEvent)\r\n\r\n const activities = useMessageActivities()\r\n const scrollRef = useRef<HTMLDivElement>(null)\r\n const divRef = useRef<HTMLDivElement>(null)\r\n\r\n /**\r\n * On call :\r\n * - scroll to the scrollRef HTML element at the bottom of the view\r\n */\r\n const scrollToRef = (): void => {\r\n if (scrollRef && scrollRef.current !== null) {\r\n scrollRef.current.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'nearest'\r\n })\r\n }\r\n }\r\n\r\n /**\r\n * On component mount :\r\n * - call scrollToRef method\r\n */\r\n useEffect(() => {\r\n setTimeout(() => {\r\n scrollToRef()\r\n }, 200)\r\n }, [])\r\n\r\n useEffect(() => {\r\n divRef?.current && isWidget && preventEvents(null, divRef)\r\n }, [divRef?.current])\r\n\r\n const handleClose = (): void => {\r\n setCurrentSubView(CurrentSubView.none)\r\n sendEvent('Davi.CloseWindow', null)\r\n sendEvent('Davi.CloseWindowHistory', null)\r\n }\r\n\r\n return (\r\n <Template handleClose={handleClose} backIsConversation={true} title={translation.history.title}>\r\n <div ref={divRef} className={`rf-pb-4 rf-overflow-y-scroll ${isBorne ? 'rf-scrollbar-thin' : 'rf-scrollbar-hidden'}`}>\r\n {/* History items */}\r\n {activities.map((activity, key) => {\r\n return <HistoryItem key={key} activity={activity} />\r\n })}\r\n <div ref={scrollRef} />\r\n </div>\r\n </Template>\r\n )\r\n}\r\n\r\nexport default HistoryList\r\n","import type { HistoryActivity, RetorikActivity } from '../models/activityTypes'\r\nimport { createNewQuestionForTimestamp } from '../utils/activityUtils'\r\nimport { useActivityStore } from '../components/Contexts/ActivityContext'\r\n\r\nexport default function useMessageActivities(): Array<HistoryActivity> {\r\n const activities = useActivityStore((state) => state.messageActivities)\r\n // processedId contains the ids of the activities already processed (because useActivities gives duplicate activities with different state depending on if it's been spoken or not )\r\n const processedId: Array<string> = []\r\n const history: HistoryActivity[] = []\r\n\r\n activities.forEach((activity) => {\r\n if (activity.id && !processedId.includes(activity.id)) {\r\n processedId.push(activity.id)\r\n // Check if this is a question or an answer (questions from the user don't have a replyToId field)\r\n if (activity.replyToId) {\r\n const question: HistoryActivity | undefined = history.find(\r\n (historyItem) => historyItem.question.id === activity.replyToId\r\n )\r\n if (question) {\r\n question.answers.push(activity)\r\n } else {\r\n const newQuestion: RetorikActivity =\r\n createNewQuestionForTimestamp(activity)\r\n\r\n history.push({\r\n question: newQuestion,\r\n answers: [activity]\r\n })\r\n }\r\n } else {\r\n if (\r\n (activity as RetorikActivity).label === 'Davi.BringupMessage' &&\r\n (activity as RetorikActivity).text\r\n ) {\r\n const newQuestion: RetorikActivity =\r\n createNewQuestionForTimestamp(activity)\r\n history.push({\r\n question: newQuestion,\r\n answers: [activity]\r\n })\r\n } else {\r\n history.push({\r\n question: activity,\r\n answers: []\r\n })\r\n }\r\n }\r\n }\r\n })\r\n\r\n return history\r\n}\r\n","import React from 'react'\r\nimport type { HistoryActivity } from '../../models/activityTypes'\r\nimport HistoryQA from './HistoryQA'\r\n\r\ninterface HistoryItemProps {\r\n activity: HistoryActivity\r\n}\r\n\r\nconst HistoryItem = ({ activity }: HistoryItemProps): JSX.Element => {\r\n return (\r\n <div className='rf-mb-4 rf-flex rf-flex-col rf-justify-start rf-items-start rf-gap-4 rf-text-size-auto'>\r\n {/* Question */}\r\n {activity?.question && activity.question.type === 'message' && (\r\n <HistoryQA activity={activity.question} isQuestion={true} />\r\n )}\r\n\r\n {/* Answers */}\r\n {activity.answers.map((answer, j) => {\r\n return answer.type === 'message' ? (\r\n <HistoryQA key={j} activity={answer} isQuestion={false} />\r\n ) : (\r\n <React.Fragment />\r\n )\r\n })}\r\n </div>\r\n )\r\n}\r\n\r\nexport default HistoryItem\r\n","import React from 'react'\r\nimport { useLocaleStore } from '../Contexts/LocaleContext'\r\nimport { useViewStore } from '../Contexts/ViewContext'\r\nimport type { RetorikActivity } from '../../models/activityTypes'\r\nimport { getTextWithoutSpeechMarkdown } from '../../utils/speechMarkdownUtils'\r\nimport Attachments from '../Attachments/Attachments'\r\n\r\ninterface HistoryQAProps {\r\n activity: RetorikActivity\r\n isQuestion: boolean\r\n}\r\n\r\nconst HistoryQA = ({ activity, isQuestion }: HistoryQAProps): JSX.Element => {\r\n const locale = useLocaleStore((state) => state.locale)\r\n const isMobile = useViewStore((state) => state.isMobile)\r\n const time = activity.localTimestamp\r\n ? new Date(activity.localTimestamp)\r\n : activity.timestamp\r\n ? new Date(activity.timestamp)\r\n : new Date()\r\n\r\n return activity.text || !!activity.attachments?.length ? (\r\n <div\r\n className={`${\r\n isMobile ? 'rf-w-full' : 'rf-max-w-full'\r\n } rf-flex rf-flex-col rf-gap-1`}\r\n >\r\n {/* Time */}\r\n <div className='rf-text-[#9A9A9A]'>\r\n {time.toLocaleString(locale, {\r\n hour: 'numeric',\r\n minute: 'numeric'\r\n })}\r\n </div>\r\n\r\n {/* Question or Answer */}\r\n <div\r\n className={`${\r\n isQuestion\r\n ? 'rf-text-secondary'\r\n : 'rf-text-textModePanelConversationBot'\r\n }`}\r\n >\r\n {activity.htmlText ? (\r\n <div\r\n dangerouslySetInnerHTML={{\r\n __html: activity.htmlText\r\n }}\r\n />\r\n ) : activity.text ? (\r\n getTextWithoutSpeechMarkdown(activity.text)\r\n ) : (\r\n ''\r\n )}\r\n {/* Display attachments if there are some and the display mode wasn't a list */}\r\n {!!activity.attachments?.length &&\r\n !(\r\n activity.attachmentLayout &&\r\n activity.attachmentLayout.toLowerCase() === 'davilist'\r\n ) && (\r\n <div\r\n className={`rf-w-full rf-min-h-16 rf-overflow-x-hidden rf-overflow-y-auto ${\r\n activity.text && 'rf-pt-4'\r\n }`}\r\n >\r\n <Attachments activity={activity} history={true} />\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n ) : (\r\n <React.Fragment />\r\n )\r\n}\r\n\r\nexport default HistoryQA\r\n"],"names":[],"version":3,"file":"HistoryList.5fd6aa12.js.map"}
@@ -0,0 +1,125 @@
1
+ var $381Go$reactjsxruntime = require("react/jsx-runtime");
2
+ var $381Go$react = require("react");
3
+
4
+
5
+ function $parcel$interopDefault(a) {
6
+ return a && a.__esModule ? a.default : a;
7
+ }
8
+
9
+ function $parcel$defineInteropFlag(a) {
10
+ Object.defineProperty(a, '__esModule', {value: true, configurable: true});
11
+ }
12
+
13
+ function $parcel$export(e, n, v, s) {
14
+ Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
15
+ }
16
+
17
+ var $parcel$global =
18
+ typeof globalThis !== 'undefined'
19
+ ? globalThis
20
+ : typeof self !== 'undefined'
21
+ ? self
22
+ : typeof window !== 'undefined'
23
+ ? window
24
+ : typeof global !== 'undefined'
25
+ ? global
26
+ : {};
27
+ var parcelRequire = $parcel$global["parcelRequirea39d"];
28
+ var parcelRegister = parcelRequire.register;
29
+ parcelRegister("cMcsq", function(module, exports) {
30
+
31
+ $parcel$defineInteropFlag(module.exports);
32
+
33
+ $parcel$export(module.exports, "default", () => $6bd994e5ef61a032$export$2e2bcd8739ae039);
34
+
35
+
36
+
37
+ var $6Q0mk = parcelRequire("6Q0mk");
38
+
39
+ var $7eio0 = parcelRequire("7eio0");
40
+
41
+ var $6EkQS = parcelRequire("6EkQS");
42
+
43
+ var $6QoTL = parcelRequire("6QoTL");
44
+
45
+ var $exo5b = parcelRequire("exo5b");
46
+
47
+ var $7WHA7 = parcelRequire("7WHA7");
48
+
49
+ var $9JtA7 = parcelRequire("9JtA7");
50
+
51
+ var $a3uH3 = parcelRequire("a3uH3");
52
+
53
+ var $fpnh0 = parcelRequire("fpnh0");
54
+ const $6bd994e5ef61a032$var$LanguageChoice = ()=>{
55
+ const translation = (0, $6Q0mk.useLocaleStore)((state)=>state.currentTranslations);
56
+ const locale = (0, $6Q0mk.useLocaleStore)((state)=>state.locale);
57
+ const supported = (0, $6Q0mk.useLocaleStore)((state)=>state.supported);
58
+ const skipWelcome = (0, $6EkQS.useRetorikStore)((state)=>state.configuration.skipWelcome);
59
+ const setCurrentSubView = (0, $7eio0.useUtilsStore)((state)=>state.actions.setCurrentSubView);
60
+ const setLocale = (0, $6Q0mk.useLocaleStore)((state)=>state.actions.setLocale);
61
+ const sendEvent = (0, $6QoTL.useDirectlineStore)((state)=>state.actions.sendEvent);
62
+ const [currentLanguage, setCurrentLanguage] = (0, $381Go$react.useState)(locale);
63
+ const handleClose = (changed)=>{
64
+ setCurrentSubView((0, $7WHA7.CurrentSubView).none);
65
+ // Only send events when language has not been changed, either way it will collide with the TriggerWelcome event
66
+ if (!changed) {
67
+ sendEvent('Davi.CloseWindow', null);
68
+ sendEvent('Davi.CloseWindowLanguages', null);
69
+ }
70
+ };
71
+ const handleChange = (language)=>{
72
+ setCurrentLanguage(language);
73
+ };
74
+ /**
75
+ * Change current locale with the one selected if they are different.
76
+ * Send a 'TriggerWelcome' event to get the welcome message in the new language.
77
+ * @param language string
78
+ */ const handleSelect = (language)=>{
79
+ const changed = language !== locale;
80
+ if (changed) {
81
+ setLocale(language);
82
+ !skipWelcome && setTimeout(()=>{
83
+ sendEvent('TriggerWelcome', undefined);
84
+ }, 150);
85
+ }
86
+ handleClose(changed);
87
+ };
88
+ return /*#__PURE__*/ (0, $381Go$reactjsxruntime.jsxs)((0, $a3uH3.SubMenuClosing), {
89
+ handleClose: ()=>handleClose(false),
90
+ children: [
91
+ /*#__PURE__*/ (0, $381Go$reactjsxruntime.jsx)("div", {
92
+ className: "large:rf-mt-[20vh] large-tactile:rf-mt-0 rf-title-bold-size-auto rf-font-bold",
93
+ children: (0, $9JtA7.capitalizeFirstLetter)(translation.language.change, locale)
94
+ }),
95
+ /*#__PURE__*/ (0, $381Go$reactjsxruntime.jsx)("div", {
96
+ className: "rf-text-lightgray rf-pt-1 rf-pb-2",
97
+ children: (0, $9JtA7.capitalizeFirstLetter)(translation.language.select, locale)
98
+ }),
99
+ supported.map((language, key)=>{
100
+ return /*#__PURE__*/ (0, $381Go$reactjsxruntime.jsx)("div", {
101
+ className: `rf-w-full rf-py-4 rf-border-t rf-border-t-menuBorder ${key === 0 && 'large:rf-border-t-0'}`,
102
+ children: /*#__PURE__*/ (0, $381Go$reactjsxruntime.jsx)((0, $fpnh0.Radio), {
103
+ title: (0, (/*@__PURE__*/$parcel$interopDefault($exo5b)))[language],
104
+ checked: language === currentLanguage,
105
+ handleChange: ()=>handleChange(language)
106
+ })
107
+ }, key);
108
+ }),
109
+ /*#__PURE__*/ (0, $381Go$reactjsxruntime.jsx)("div", {
110
+ className: "rf-w-full rf-mt-8 rf-flex rf-justify-center",
111
+ children: /*#__PURE__*/ (0, $381Go$reactjsxruntime.jsx)("button", {
112
+ className: "rf-px-8 rf-py-3 rf-text-secondary rf-font-bold rf-border-2 rf-border-secondary rf-rounded-lg",
113
+ onClick: ()=>handleSelect(currentLanguage),
114
+ children: (0, $9JtA7.capitalizeFirstLetter)(translation.common.validate, locale)
115
+ })
116
+ })
117
+ ]
118
+ });
119
+ };
120
+ var $6bd994e5ef61a032$export$2e2bcd8739ae039 = $6bd994e5ef61a032$var$LanguageChoice;
121
+
122
+ });
123
+
124
+
125
+ //# sourceMappingURL=LanguageChoice.1579b654.js.map
@@ -0,0 +1 @@
1
+ {"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,MAAM,uCAAiB;IACrB,MAAM,cAAc,CAAA,GAAA,qBAAa,EAAE,CAAC,QAAU,MAAM,mBAAmB;IACvE,MAAM,SAAS,CAAA,GAAA,qBAAa,EAAE,CAAC,QAAU,MAAM,MAAM;IACrD,MAAM,YAAY,CAAA,GAAA,qBAAa,EAAE,CAAC,QAAU,MAAM,SAAS;IAC3D,MAAM,cAAc,CAAA,GAAA,sBAAc,EAAE,CAAC,QAAU,MAAM,aAAa,CAAC,WAAW;IAC9E,MAAM,oBAAoB,CAAA,GAAA,oBAAY,EAAE,CAAC,QAAU,MAAM,OAAO,CAAC,iBAAiB;IAClF,MAAM,YAAY,CAAA,GAAA,qBAAa,EAAE,CAAC,QAAU,MAAM,OAAO,CAAC,SAAS;IACnE,MAAM,YAAY,CAAA,GAAA,yBAAiB,EAAE,CAAC,QAAU,MAAM,OAAO,CAAC,SAAS;IAEvE,MAAM,CAAC,iBAAiB,mBAAmB,GAAG,CAAA,GAAA,qBAAO,EAAU;IAE/D,MAAM,cAAc,CAAC;QACnB,kBAAkB,CAAA,GAAA,qBAAa,EAAE,IAAI;QAErC,gHAAgH;QAChH,IAAI,CAAC,SAAS;YACZ,UAAU,oBAAoB;YAC9B,UAAU,6BAA6B;QACzC;IACF;IAEA,MAAM,eAAe,CAAC;QACpB,mBAAmB;IACrB;IAEA;;;;GAIC,GACD,MAAM,eAAe,CAAC;QACpB,MAAM,UAAU,aAAa;QAC7B,IAAI,SAAS;YACX,UAAU;YACV,CAAC,eACC,WAAW;gBACT,UAAU,kBAAkB;YAC9B,GAAG;QACP;QAEA,YAAY;IACd;IAEA,qBACE,iCAAC,CAAA,GAAA,qBAAO;QAAE,aAAa,IAAM,YAAY;;0BAEvC,gCAAC;gBAAI,WAAU;0BAAiF,CAAA,GAAA,4BAAoB,EAAE,YAAY,QAAQ,CAAC,MAAM,EAAE;;0BAGnJ,gCAAC;gBAAI,WAAU;0BAAqC,CAAA,GAAA,4BAAoB,EAAE,YAAY,QAAQ,CAAC,MAAM,EAAE;;YAGtG,UAAU,GAAG,CAAC,CAAC,UAAU;gBACxB,qBACE,gCAAC;oBAAc,WAAW,CAAC,qDAAqD,EAAE,QAAQ,KAAK,uBAAuB;8BACpH,cAAA,gCAAC,CAAA,GAAA,YAAI;wBAAE,OAAO,CAAA,GAAA,6CAAqB,CAAC,CAAC,SAAS;wBAAE,SAAS,aAAa;wBAAiB,cAAc,IAAY,aAAa;;mBADtH;YAId;0BAGA,gCAAC;gBAAI,WAAU;0BACb,cAAA,gCAAC;oBAAO,WAAU;oBAA+F,SAAS,IAAY,aAAa;8BAChJ,CAAA,GAAA,4BAAoB,EAAE,YAAY,MAAM,CAAC,QAAQ,EAAE;;;;;AAK9D;IAEA,2CAAe","sources":["src/components/Language/LanguageChoice.tsx"],"sourcesContent":["import React, { useState } from 'react'\r\nimport { useLocaleStore } from '../Contexts/LocaleContext'\r\nimport { useUtilsStore } from '../Contexts/UtilsContext'\r\nimport { useRetorikStore } from '../Contexts/RetorikContext'\r\nimport { useDirectlineStore } from '../Contexts/DirectlineContext'\r\n\r\nimport languageInMotherTongue from '../../translations/languageCodeToMotherTongue.json'\r\nimport { CurrentSubView } from '../../models/enums'\r\nimport { capitalizeFirstLetter } from '../../utils/capitalizeFirstLetter'\r\n\r\nimport { SubMenuClosing as Template } from '../Templates'\r\nimport { Radio } from '../Utils'\r\n\r\nconst LanguageChoice = (): JSX.Element => {\r\n const translation = useLocaleStore((state) => state.currentTranslations)\r\n const locale = useLocaleStore((state) => state.locale)\r\n const supported = useLocaleStore((state) => state.supported)\r\n const skipWelcome = useRetorikStore((state) => state.configuration.skipWelcome)\r\n const setCurrentSubView = useUtilsStore((state) => state.actions.setCurrentSubView)\r\n const setLocale = useLocaleStore((state) => state.actions.setLocale)\r\n const sendEvent = useDirectlineStore((state) => state.actions.sendEvent)\r\n\r\n const [currentLanguage, setCurrentLanguage] = useState<string>(locale)\r\n\r\n const handleClose = (changed?: boolean): void => {\r\n setCurrentSubView(CurrentSubView.none)\r\n\r\n // Only send events when language has not been changed, either way it will collide with the TriggerWelcome event\r\n if (!changed) {\r\n sendEvent('Davi.CloseWindow', null)\r\n sendEvent('Davi.CloseWindowLanguages', null)\r\n }\r\n }\r\n\r\n const handleChange = (language: string): void => {\r\n setCurrentLanguage(language)\r\n }\r\n\r\n /**\r\n * Change current locale with the one selected if they are different.\r\n * Send a 'TriggerWelcome' event to get the welcome message in the new language.\r\n * @param language string\r\n */\r\n const handleSelect = (language: string): void => {\r\n const changed = language !== locale\r\n if (changed) {\r\n setLocale(language)\r\n !skipWelcome &&\r\n setTimeout(() => {\r\n sendEvent('TriggerWelcome', undefined)\r\n }, 150)\r\n }\r\n\r\n handleClose(changed)\r\n }\r\n\r\n return (\r\n <Template handleClose={() => handleClose(false)}>\r\n {/* Title */}\r\n <div className='large:rf-mt-[20vh] large-tactile:rf-mt-0 rf-title-bold-size-auto rf-font-bold'>{capitalizeFirstLetter(translation.language.change, locale)}</div>\r\n\r\n {/* Subtitle */}\r\n <div className='rf-text-lightgray rf-pt-1 rf-pb-2'>{capitalizeFirstLetter(translation.language.select, locale)}</div>\r\n\r\n {/* Languages */}\r\n {supported.map((language, key) => {\r\n return (\r\n <div key={key} className={`rf-w-full rf-py-4 rf-border-t rf-border-t-menuBorder ${key === 0 && 'large:rf-border-t-0'}`}>\r\n <Radio title={languageInMotherTongue[language]} checked={language === currentLanguage} handleChange={(): void => handleChange(language)} />\r\n </div>\r\n )\r\n })}\r\n\r\n {/* Validation button */}\r\n <div className='rf-w-full rf-mt-8 rf-flex rf-justify-center'>\r\n <button className='rf-px-8 rf-py-3 rf-text-secondary rf-font-bold rf-border-2 rf-border-secondary rf-rounded-lg' onClick={(): void => handleSelect(currentLanguage)}>\r\n {capitalizeFirstLetter(translation.common.validate, locale)}\r\n </button>\r\n </div>\r\n </Template>\r\n )\r\n}\r\n\r\nexport default LanguageChoice\r\n"],"names":[],"version":3,"file":"LanguageChoice.1579b654.js.map","sourceRoot":"../"}
@@ -0,0 +1,116 @@
1
+ import {jsxs as $9NOUt$jsxs, jsx as $9NOUt$jsx} from "react/jsx-runtime";
2
+ import {useState as $9NOUt$useState} from "react";
3
+
4
+
5
+ function $parcel$interopDefault(a) {
6
+ return a && a.__esModule ? a.default : a;
7
+ }
8
+
9
+ function $parcel$defineInteropFlag(a) {
10
+ Object.defineProperty(a, '__esModule', {value: true, configurable: true});
11
+ }
12
+
13
+ function $parcel$export(e, n, v, s) {
14
+ Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
15
+ }
16
+
17
+ var $parcel$global = globalThis;
18
+ var parcelRequire = $parcel$global["parcelRequirea39d"];
19
+ var parcelRegister = parcelRequire.register;
20
+ parcelRegister("4HBCW", function(module, exports) {
21
+
22
+ $parcel$defineInteropFlag(module.exports);
23
+
24
+ $parcel$export(module.exports, "default", () => $4545a6dcb65287bd$export$2e2bcd8739ae039);
25
+
26
+
27
+
28
+ var $2fuDN = parcelRequire("2fuDN");
29
+
30
+ var $j67YK = parcelRequire("j67YK");
31
+
32
+ var $1x02c = parcelRequire("1x02c");
33
+
34
+ var $aNpqK = parcelRequire("aNpqK");
35
+
36
+ var $8dUAa = parcelRequire("8dUAa");
37
+
38
+ var $4ucVo = parcelRequire("4ucVo");
39
+
40
+ var $7pypd = parcelRequire("7pypd");
41
+
42
+ var $gQ55S = parcelRequire("gQ55S");
43
+
44
+ var $9lsRd = parcelRequire("9lsRd");
45
+ const $4545a6dcb65287bd$var$LanguageChoice = ()=>{
46
+ const translation = (0, $2fuDN.useLocaleStore)((state)=>state.currentTranslations);
47
+ const locale = (0, $2fuDN.useLocaleStore)((state)=>state.locale);
48
+ const supported = (0, $2fuDN.useLocaleStore)((state)=>state.supported);
49
+ const skipWelcome = (0, $1x02c.useRetorikStore)((state)=>state.configuration.skipWelcome);
50
+ const setCurrentSubView = (0, $j67YK.useUtilsStore)((state)=>state.actions.setCurrentSubView);
51
+ const setLocale = (0, $2fuDN.useLocaleStore)((state)=>state.actions.setLocale);
52
+ const sendEvent = (0, $aNpqK.useDirectlineStore)((state)=>state.actions.sendEvent);
53
+ const [currentLanguage, setCurrentLanguage] = (0, $9NOUt$useState)(locale);
54
+ const handleClose = (changed)=>{
55
+ setCurrentSubView((0, $4ucVo.CurrentSubView).none);
56
+ // Only send events when language has not been changed, either way it will collide with the TriggerWelcome event
57
+ if (!changed) {
58
+ sendEvent('Davi.CloseWindow', null);
59
+ sendEvent('Davi.CloseWindowLanguages', null);
60
+ }
61
+ };
62
+ const handleChange = (language)=>{
63
+ setCurrentLanguage(language);
64
+ };
65
+ /**
66
+ * Change current locale with the one selected if they are different.
67
+ * Send a 'TriggerWelcome' event to get the welcome message in the new language.
68
+ * @param language string
69
+ */ const handleSelect = (language)=>{
70
+ const changed = language !== locale;
71
+ if (changed) {
72
+ setLocale(language);
73
+ !skipWelcome && setTimeout(()=>{
74
+ sendEvent('TriggerWelcome', undefined);
75
+ }, 150);
76
+ }
77
+ handleClose(changed);
78
+ };
79
+ return /*#__PURE__*/ (0, $9NOUt$jsxs)((0, $gQ55S.SubMenuClosing), {
80
+ handleClose: ()=>handleClose(false),
81
+ children: [
82
+ /*#__PURE__*/ (0, $9NOUt$jsx)("div", {
83
+ className: "large:rf-mt-[20vh] large-tactile:rf-mt-0 rf-title-bold-size-auto rf-font-bold",
84
+ children: (0, $7pypd.capitalizeFirstLetter)(translation.language.change, locale)
85
+ }),
86
+ /*#__PURE__*/ (0, $9NOUt$jsx)("div", {
87
+ className: "rf-text-lightgray rf-pt-1 rf-pb-2",
88
+ children: (0, $7pypd.capitalizeFirstLetter)(translation.language.select, locale)
89
+ }),
90
+ supported.map((language, key)=>{
91
+ return /*#__PURE__*/ (0, $9NOUt$jsx)("div", {
92
+ className: `rf-w-full rf-py-4 rf-border-t rf-border-t-menuBorder ${key === 0 && 'large:rf-border-t-0'}`,
93
+ children: /*#__PURE__*/ (0, $9NOUt$jsx)((0, $9lsRd.Radio), {
94
+ title: (0, (/*@__PURE__*/$parcel$interopDefault($8dUAa)))[language],
95
+ checked: language === currentLanguage,
96
+ handleChange: ()=>handleChange(language)
97
+ })
98
+ }, key);
99
+ }),
100
+ /*#__PURE__*/ (0, $9NOUt$jsx)("div", {
101
+ className: "rf-w-full rf-mt-8 rf-flex rf-justify-center",
102
+ children: /*#__PURE__*/ (0, $9NOUt$jsx)("button", {
103
+ className: "rf-px-8 rf-py-3 rf-text-secondary rf-font-bold rf-border-2 rf-border-secondary rf-rounded-lg",
104
+ onClick: ()=>handleSelect(currentLanguage),
105
+ children: (0, $7pypd.capitalizeFirstLetter)(translation.common.validate, locale)
106
+ })
107
+ })
108
+ ]
109
+ });
110
+ };
111
+ var $4545a6dcb65287bd$export$2e2bcd8739ae039 = $4545a6dcb65287bd$var$LanguageChoice;
112
+
113
+ });
114
+
115
+
116
+ //# sourceMappingURL=LanguageChoice.61e36c1d.js.map
@@ -0,0 +1 @@
1
+ {"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,MAAM,uCAAiB;IACrB,MAAM,cAAc,CAAA,GAAA,qBAAa,EAAE,CAAC,QAAU,MAAM,mBAAmB;IACvE,MAAM,SAAS,CAAA,GAAA,qBAAa,EAAE,CAAC,QAAU,MAAM,MAAM;IACrD,MAAM,YAAY,CAAA,GAAA,qBAAa,EAAE,CAAC,QAAU,MAAM,SAAS;IAC3D,MAAM,cAAc,CAAA,GAAA,sBAAc,EAAE,CAAC,QAAU,MAAM,aAAa,CAAC,WAAW;IAC9E,MAAM,oBAAoB,CAAA,GAAA,oBAAY,EAAE,CAAC,QAAU,MAAM,OAAO,CAAC,iBAAiB;IAClF,MAAM,YAAY,CAAA,GAAA,qBAAa,EAAE,CAAC,QAAU,MAAM,OAAO,CAAC,SAAS;IACnE,MAAM,YAAY,CAAA,GAAA,yBAAiB,EAAE,CAAC,QAAU,MAAM,OAAO,CAAC,SAAS;IAEvE,MAAM,CAAC,iBAAiB,mBAAmB,GAAG,CAAA,GAAA,eAAO,EAAU;IAE/D,MAAM,cAAc,CAAC;QACnB,kBAAkB,CAAA,GAAA,qBAAa,EAAE,IAAI;QAErC,gHAAgH;QAChH,IAAI,CAAC,SAAS;YACZ,UAAU,oBAAoB;YAC9B,UAAU,6BAA6B;QACzC;IACF;IAEA,MAAM,eAAe,CAAC;QACpB,mBAAmB;IACrB;IAEA;;;;GAIC,GACD,MAAM,eAAe,CAAC;QACpB,MAAM,UAAU,aAAa;QAC7B,IAAI,SAAS;YACX,UAAU;YACV,CAAC,eACC,WAAW;gBACT,UAAU,kBAAkB;YAC9B,GAAG;QACP;QAEA,YAAY;IACd;IAEA,qBACE,iBAAC,CAAA,GAAA,qBAAO;QAAE,aAAa,IAAM,YAAY;;0BAEvC,gBAAC;gBAAI,WAAU;0BAAiF,CAAA,GAAA,4BAAoB,EAAE,YAAY,QAAQ,CAAC,MAAM,EAAE;;0BAGnJ,gBAAC;gBAAI,WAAU;0BAAqC,CAAA,GAAA,4BAAoB,EAAE,YAAY,QAAQ,CAAC,MAAM,EAAE;;YAGtG,UAAU,GAAG,CAAC,CAAC,UAAU;gBACxB,qBACE,gBAAC;oBAAc,WAAW,CAAC,qDAAqD,EAAE,QAAQ,KAAK,uBAAuB;8BACpH,cAAA,gBAAC,CAAA,GAAA,YAAI;wBAAE,OAAO,CAAA,GAAA,6CAAqB,CAAC,CAAC,SAAS;wBAAE,SAAS,aAAa;wBAAiB,cAAc,IAAY,aAAa;;mBADtH;YAId;0BAGA,gBAAC;gBAAI,WAAU;0BACb,cAAA,gBAAC;oBAAO,WAAU;oBAA+F,SAAS,IAAY,aAAa;8BAChJ,CAAA,GAAA,4BAAoB,EAAE,YAAY,MAAM,CAAC,QAAQ,EAAE;;;;;AAK9D;IAEA,2CAAe","sources":["src/components/Language/LanguageChoice.tsx"],"sourcesContent":["import React, { useState } from 'react'\r\nimport { useLocaleStore } from '../Contexts/LocaleContext'\r\nimport { useUtilsStore } from '../Contexts/UtilsContext'\r\nimport { useRetorikStore } from '../Contexts/RetorikContext'\r\nimport { useDirectlineStore } from '../Contexts/DirectlineContext'\r\n\r\nimport languageInMotherTongue from '../../translations/languageCodeToMotherTongue.json'\r\nimport { CurrentSubView } from '../../models/enums'\r\nimport { capitalizeFirstLetter } from '../../utils/capitalizeFirstLetter'\r\n\r\nimport { SubMenuClosing as Template } from '../Templates'\r\nimport { Radio } from '../Utils'\r\n\r\nconst LanguageChoice = (): JSX.Element => {\r\n const translation = useLocaleStore((state) => state.currentTranslations)\r\n const locale = useLocaleStore((state) => state.locale)\r\n const supported = useLocaleStore((state) => state.supported)\r\n const skipWelcome = useRetorikStore((state) => state.configuration.skipWelcome)\r\n const setCurrentSubView = useUtilsStore((state) => state.actions.setCurrentSubView)\r\n const setLocale = useLocaleStore((state) => state.actions.setLocale)\r\n const sendEvent = useDirectlineStore((state) => state.actions.sendEvent)\r\n\r\n const [currentLanguage, setCurrentLanguage] = useState<string>(locale)\r\n\r\n const handleClose = (changed?: boolean): void => {\r\n setCurrentSubView(CurrentSubView.none)\r\n\r\n // Only send events when language has not been changed, either way it will collide with the TriggerWelcome event\r\n if (!changed) {\r\n sendEvent('Davi.CloseWindow', null)\r\n sendEvent('Davi.CloseWindowLanguages', null)\r\n }\r\n }\r\n\r\n const handleChange = (language: string): void => {\r\n setCurrentLanguage(language)\r\n }\r\n\r\n /**\r\n * Change current locale with the one selected if they are different.\r\n * Send a 'TriggerWelcome' event to get the welcome message in the new language.\r\n * @param language string\r\n */\r\n const handleSelect = (language: string): void => {\r\n const changed = language !== locale\r\n if (changed) {\r\n setLocale(language)\r\n !skipWelcome &&\r\n setTimeout(() => {\r\n sendEvent('TriggerWelcome', undefined)\r\n }, 150)\r\n }\r\n\r\n handleClose(changed)\r\n }\r\n\r\n return (\r\n <Template handleClose={() => handleClose(false)}>\r\n {/* Title */}\r\n <div className='large:rf-mt-[20vh] large-tactile:rf-mt-0 rf-title-bold-size-auto rf-font-bold'>{capitalizeFirstLetter(translation.language.change, locale)}</div>\r\n\r\n {/* Subtitle */}\r\n <div className='rf-text-lightgray rf-pt-1 rf-pb-2'>{capitalizeFirstLetter(translation.language.select, locale)}</div>\r\n\r\n {/* Languages */}\r\n {supported.map((language, key) => {\r\n return (\r\n <div key={key} className={`rf-w-full rf-py-4 rf-border-t rf-border-t-menuBorder ${key === 0 && 'large:rf-border-t-0'}`}>\r\n <Radio title={languageInMotherTongue[language]} checked={language === currentLanguage} handleChange={(): void => handleChange(language)} />\r\n </div>\r\n )\r\n })}\r\n\r\n {/* Validation button */}\r\n <div className='rf-w-full rf-mt-8 rf-flex rf-justify-center'>\r\n <button className='rf-px-8 rf-py-3 rf-text-secondary rf-font-bold rf-border-2 rf-border-secondary rf-rounded-lg' onClick={(): void => handleSelect(currentLanguage)}>\r\n {capitalizeFirstLetter(translation.common.validate, locale)}\r\n </button>\r\n </div>\r\n </Template>\r\n )\r\n}\r\n\r\nexport default LanguageChoice\r\n"],"names":[],"version":3,"file":"LanguageChoice.61e36c1d.js.map"}
@@ -0,0 +1,57 @@
1
+ var $2zHso$reactjsxruntime = require("react/jsx-runtime");
2
+ var $2zHso$react = require("react");
3
+ var $2zHso$daviairetorikweather = require("@davi-ai/retorik-weather");
4
+
5
+
6
+ function $parcel$interopDefault(a) {
7
+ return a && a.__esModule ? a.default : a;
8
+ }
9
+
10
+ function $parcel$defineInteropFlag(a) {
11
+ Object.defineProperty(a, '__esModule', {value: true, configurable: true});
12
+ }
13
+
14
+ function $parcel$export(e, n, v, s) {
15
+ Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
16
+ }
17
+
18
+ var $parcel$global =
19
+ typeof globalThis !== 'undefined'
20
+ ? globalThis
21
+ : typeof self !== 'undefined'
22
+ ? self
23
+ : typeof window !== 'undefined'
24
+ ? window
25
+ : typeof global !== 'undefined'
26
+ ? global
27
+ : {};
28
+ var parcelRequire = $parcel$global["parcelRequirea39d"];
29
+ var parcelRegister = parcelRequire.register;
30
+ parcelRegister("abStA", function(module, exports) {
31
+
32
+ $parcel$defineInteropFlag(module.exports);
33
+
34
+ $parcel$export(module.exports, "default", () => $720db0c2597b8087$export$2e2bcd8739ae039);
35
+
36
+
37
+
38
+
39
+ var $6EkQS = parcelRequire("6EkQS");
40
+ const $720db0c2597b8087$var$LittleWeatherContainer = ()=>{
41
+ const position = (0, $6EkQS.useRetorikStore)((state)=>state.configuration.position);
42
+ return (position === null || position === void 0 ? void 0 : position.latitude) && position.longitude ? /*#__PURE__*/ (0, $2zHso$reactjsxruntime.jsx)("div", {
43
+ className: "rf-absolute rf-top-8 rf-right-12",
44
+ children: /*#__PURE__*/ (0, $2zHso$reactjsxruntime.jsx)((0, $2zHso$daviairetorikweather.LittleWeather), {
45
+ position: {
46
+ latitude: position === null || position === void 0 ? void 0 : position.latitude,
47
+ longitude: position.longitude
48
+ }
49
+ })
50
+ }) : /*#__PURE__*/ (0, $2zHso$reactjsxruntime.jsx)((0, ($parcel$interopDefault($2zHso$react))).Fragment, {});
51
+ };
52
+ var $720db0c2597b8087$export$2e2bcd8739ae039 = $720db0c2597b8087$var$LittleWeatherContainer;
53
+
54
+ });
55
+
56
+
57
+ //# sourceMappingURL=LittleWeatherContainer.07937cf3.js.map
@@ -0,0 +1 @@
1
+ {"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,MAAM,+CAAyB;IAC7B,MAAM,WAAW,CAAA,GAAA,sBAAc,EAAE,CAAC,QAAU,MAAM,aAAa,CAAC,QAAQ;IAExE,OAAO,CAAA,qBAAA,+BAAA,SAAU,QAAQ,KAAI,SAAS,SAAS,iBAC7C,gCAAC;QAAI,WAAU;kBACb,cAAA,gCAAC,CAAA,GAAA,yCAAY;YACX,UAAU;gBACR,QAAQ,EAAE,qBAAA,+BAAA,SAAU,QAAQ;gBAC5B,WAAW,SAAS,SAAS;YAC/B;;uBAIJ,gCAAC,CAAA,GAAA,sCAAI,EAAE,QAAQ;AAEnB;IAEA,2CAAe","sources":["src/components/Weather/LittleWeatherContainer.tsx"],"sourcesContent":["import React from 'react'\r\n// @ts-ignore\r\nimport { LittleWeather } from '@davi-ai/retorik-weather'\r\nimport { useRetorikStore } from '../Contexts/RetorikContext'\r\n\r\nconst LittleWeatherContainer = (): JSX.Element => {\r\n const position = useRetorikStore((state) => state.configuration.position)\r\n\r\n return position?.latitude && position.longitude ? (\r\n <div className='rf-absolute rf-top-8 rf-right-12'>\r\n <LittleWeather\r\n position={{\r\n latitude: position?.latitude,\r\n longitude: position.longitude\r\n }}\r\n />\r\n </div>\r\n ) : (\r\n <React.Fragment />\r\n )\r\n}\r\n\r\nexport default LittleWeatherContainer\r\n"],"names":[],"version":3,"file":"LittleWeatherContainer.07937cf3.js.map","sourceRoot":"../"}
@@ -0,0 +1,44 @@
1
+ import {jsx as $e3Bg1$jsx} from "react/jsx-runtime";
2
+ import $e3Bg1$react from "react";
3
+ import {LittleWeather as $e3Bg1$LittleWeather} from "@davi-ai/retorik-weather";
4
+
5
+
6
+ function $parcel$defineInteropFlag(a) {
7
+ Object.defineProperty(a, '__esModule', {value: true, configurable: true});
8
+ }
9
+
10
+ function $parcel$export(e, n, v, s) {
11
+ Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
12
+ }
13
+
14
+ var $parcel$global = globalThis;
15
+ var parcelRequire = $parcel$global["parcelRequirea39d"];
16
+ var parcelRegister = parcelRequire.register;
17
+ parcelRegister("fHvs2", function(module, exports) {
18
+
19
+ $parcel$defineInteropFlag(module.exports);
20
+
21
+ $parcel$export(module.exports, "default", () => $6d2ce7f2333e28f1$export$2e2bcd8739ae039);
22
+
23
+
24
+
25
+
26
+ var $1x02c = parcelRequire("1x02c");
27
+ const $6d2ce7f2333e28f1$var$LittleWeatherContainer = ()=>{
28
+ const position = (0, $1x02c.useRetorikStore)((state)=>state.configuration.position);
29
+ return position?.latitude && position.longitude ? /*#__PURE__*/ (0, $e3Bg1$jsx)("div", {
30
+ className: "rf-absolute rf-top-8 rf-right-12",
31
+ children: /*#__PURE__*/ (0, $e3Bg1$jsx)((0, $e3Bg1$LittleWeather), {
32
+ position: {
33
+ latitude: position?.latitude,
34
+ longitude: position.longitude
35
+ }
36
+ })
37
+ }) : /*#__PURE__*/ (0, $e3Bg1$jsx)((0, $e3Bg1$react).Fragment, {});
38
+ };
39
+ var $6d2ce7f2333e28f1$export$2e2bcd8739ae039 = $6d2ce7f2333e28f1$var$LittleWeatherContainer;
40
+
41
+ });
42
+
43
+
44
+ //# sourceMappingURL=LittleWeatherContainer.d27a6b8a.js.map
@@ -0,0 +1 @@
1
+ {"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,MAAM,+CAAyB;IAC7B,MAAM,WAAW,CAAA,GAAA,sBAAc,EAAE,CAAC,QAAU,MAAM,aAAa,CAAC,QAAQ;IAExE,OAAO,UAAU,YAAY,SAAS,SAAS,iBAC7C,gBAAC;QAAI,WAAU;kBACb,cAAA,gBAAC,CAAA,GAAA,oBAAY;YACX,UAAU;gBACR,UAAU,UAAU;gBACpB,WAAW,SAAS,SAAS;YAC/B;;uBAIJ,gBAAC,CAAA,GAAA,YAAI,EAAE,QAAQ;AAEnB;IAEA,2CAAe","sources":["src/components/Weather/LittleWeatherContainer.tsx"],"sourcesContent":["import React from 'react'\r\n// @ts-ignore\r\nimport { LittleWeather } from '@davi-ai/retorik-weather'\r\nimport { useRetorikStore } from '../Contexts/RetorikContext'\r\n\r\nconst LittleWeatherContainer = (): JSX.Element => {\r\n const position = useRetorikStore((state) => state.configuration.position)\r\n\r\n return position?.latitude && position.longitude ? (\r\n <div className='rf-absolute rf-top-8 rf-right-12'>\r\n <LittleWeather\r\n position={{\r\n latitude: position?.latitude,\r\n longitude: position.longitude\r\n }}\r\n />\r\n </div>\r\n ) : (\r\n <React.Fragment />\r\n )\r\n}\r\n\r\nexport default LittleWeatherContainer\r\n"],"names":[],"version":3,"file":"LittleWeatherContainer.d27a6b8a.js.map"}