@magmamath/students-features 0.1.1 → 0.1.2-fix-spanish-translation2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commonjs/features/chatbot/components/ChatControls/ChatControls.js +21 -5
- package/dist/commonjs/features/chatbot/components/ChatControls/ChatControls.js.map +1 -1
- package/dist/commonjs/features/chatbot/model/api.js +26 -1
- package/dist/commonjs/features/chatbot/model/api.js.map +1 -1
- package/dist/module/features/chatbot/components/ChatControls/ChatControls.js +22 -6
- package/dist/module/features/chatbot/components/ChatControls/ChatControls.js.map +1 -1
- package/dist/module/features/chatbot/model/api.js +26 -1
- package/dist/module/features/chatbot/model/api.js.map +1 -1
- package/dist/typescript/commonjs/features/chatbot/components/ChatControls/ChatControls.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/chatbot/model/api.d.ts +3 -0
- package/dist/typescript/commonjs/features/chatbot/model/api.d.ts.map +1 -1
- package/dist/typescript/module/features/chatbot/components/ChatControls/ChatControls.d.ts.map +1 -1
- package/dist/typescript/module/features/chatbot/model/api.d.ts +3 -0
- package/dist/typescript/module/features/chatbot/model/api.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/features/chatbot/components/ChatControls/ChatControls.tsx +27 -4
- package/src/features/chatbot/model/api.ts +55 -18
|
@@ -42,12 +42,24 @@ const ChatControls = ({
|
|
|
42
42
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeUi.Button, {
|
|
43
43
|
onPress: onPressClose,
|
|
44
44
|
style: {
|
|
45
|
-
|
|
46
|
-
button: {
|
|
47
|
-
backgroundColor: '#FFF'
|
|
48
|
-
}
|
|
45
|
+
button: styles.buttonClose
|
|
49
46
|
},
|
|
47
|
+
variant: _reactNativeUi.ButtonVariant.PRIMARY,
|
|
48
|
+
size: _reactNativeUi.ButtonSize.LARGE,
|
|
49
|
+
colorScheme: _reactNativeUi.ButtonColor.GRAY,
|
|
50
50
|
raiseLevel: 5,
|
|
51
|
+
customColorScheme: {
|
|
52
|
+
[_reactNativeUi.ButtonStates.DEFAULT]: {
|
|
53
|
+
backgroundColor: '#FFF',
|
|
54
|
+
borderColor: _reactNativeUi.COLORS.NEUTRAL_5,
|
|
55
|
+
raiseColor: _reactNativeUi.COLORS.NEUTRAL_5
|
|
56
|
+
},
|
|
57
|
+
[_reactNativeUi.ButtonStates.PRESSED]: {
|
|
58
|
+
backgroundColor: _reactNativeUi.COLORS.NEUTRAL_4,
|
|
59
|
+
borderColor: _reactNativeUi.COLORS.NEUTRAL_5,
|
|
60
|
+
raiseColor: _reactNativeUi.COLORS.NEUTRAL_5
|
|
61
|
+
}
|
|
62
|
+
},
|
|
51
63
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_CloseIcon.CloseIcon, {})
|
|
52
64
|
})]
|
|
53
65
|
});
|
|
@@ -73,7 +85,11 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
73
85
|
},
|
|
74
86
|
buttonClose: {
|
|
75
87
|
width: 50,
|
|
76
|
-
height: 50
|
|
88
|
+
height: 50,
|
|
89
|
+
borderRadius: 50,
|
|
90
|
+
paddingHorizontal: 0,
|
|
91
|
+
borderWidth: 1.5,
|
|
92
|
+
borderColor: _reactNativeUi.COLORS.NEUTRAL_5
|
|
77
93
|
},
|
|
78
94
|
buttonTranslate: {
|
|
79
95
|
alignItems: 'center',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeUi","_effectorReact","_ChatbotIcon","_GlobeIcon","_CloseIcon","_jsxRuntime","e","__esModule","default","ChatControls","model","onPressTranslate","onPressChatIcon","onPressClose","isTranslationEnabled","ButtonWrapper","isOpen","useUnit","$isOpen","isTranslated","translation","$isTranslated","isTranslationPending","translateBatchFx","pending","isHelpRequestPending","sendHelpRequestFx","backgroundColor","fillColor","jsxs","View","style","styles","container","children","jsx","Pressable","onPress","disabled","buttonTranslate","ActivityIndicator","GlobeIcon","color","Button","buttonClose","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeUi","_effectorReact","_ChatbotIcon","_GlobeIcon","_CloseIcon","_jsxRuntime","e","__esModule","default","ChatControls","model","onPressTranslate","onPressChatIcon","onPressClose","isTranslationEnabled","ButtonWrapper","isOpen","useUnit","$isOpen","isTranslated","translation","$isTranslated","isTranslationPending","translateBatchFx","pending","isHelpRequestPending","sendHelpRequestFx","backgroundColor","fillColor","jsxs","View","style","styles","container","children","jsx","Pressable","onPress","disabled","buttonTranslate","ActivityIndicator","GlobeIcon","color","Button","button","buttonClose","variant","ButtonVariant","PRIMARY","size","ButtonSize","LARGE","colorScheme","ButtonColor","GRAY","raiseLevel","customColorScheme","ButtonStates","DEFAULT","borderColor","COLORS","NEUTRAL_5","raiseColor","PRESSED","NEUTRAL_4","CloseIcon","ChatbotIcon","exports","StyleSheet","create","alignItems","justifyContent","flexDirection","height","gap","width","borderRadius","paddingHorizontal","borderWidth","shadowColor","shadowOffset","shadowOpacity","shadowRadius","elevation"],"sourceRoot":"../../../../../../src","sources":["features/chatbot/components/ChatControls/ChatControls.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -7,10 +7,35 @@ exports.ChatbotAPI = void 0;
|
|
|
7
7
|
var _effector = require("effector");
|
|
8
8
|
var _index = require("../../../lib/effector/index.js");
|
|
9
9
|
class ChatbotAPI {
|
|
10
|
+
KATEX_REPLACEMENTS = {
|
|
11
|
+
'\\$': '__KATEX_DOLLAR_SYMBOL__'
|
|
12
|
+
};
|
|
13
|
+
KATEX_REPLACEMENTS_TEST = {
|
|
14
|
+
__KATEX_DOLLAR_SYMBOL__: '$'
|
|
15
|
+
};
|
|
16
|
+
replaceKatexSyntax(texts, reverse = false) {
|
|
17
|
+
const replacements = reverse ? Object.entries(this.KATEX_REPLACEMENTS_TEST) : Object.entries(this.KATEX_REPLACEMENTS);
|
|
18
|
+
return texts.map(text => replacements.reduce((newText, [pattern, placeholder]) => newText.replace(new RegExp(pattern, 'g'), placeholder), text));
|
|
19
|
+
}
|
|
10
20
|
constructor(api) {
|
|
11
21
|
this.postMessageFx = (0, _index.createControllerEffect)(api.postMessage);
|
|
12
22
|
this.getAlternativesFx = (0, _effector.createEffect)(api.getAlternatives);
|
|
13
|
-
this.translateTextFx = (0, _effector.createEffect)(
|
|
23
|
+
this.translateTextFx = (0, _effector.createEffect)(async payload => {
|
|
24
|
+
const response = await api.postTranslateText({
|
|
25
|
+
...payload,
|
|
26
|
+
text: this.replaceKatexSyntax(payload.text)
|
|
27
|
+
});
|
|
28
|
+
return {
|
|
29
|
+
...response,
|
|
30
|
+
data: {
|
|
31
|
+
...response.data,
|
|
32
|
+
translations: response.data.translations.map(translation => ({
|
|
33
|
+
...translation,
|
|
34
|
+
translatedText: this.replaceKatexSyntax([translation.translatedText], true)[0]
|
|
35
|
+
}))
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
});
|
|
14
39
|
this.textToSpeechTextFx = (0, _effector.createEffect)(api.postTextToSpeech);
|
|
15
40
|
}
|
|
16
41
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_effector","require","_index","ChatbotAPI","constructor","api","postMessageFx","createControllerEffect","postMessage","getAlternativesFx","createEffect","getAlternatives","translateTextFx","postTranslateText","textToSpeechTextFx","postTextToSpeech","exports"],"sourceRoot":"../../../../../src","sources":["features/chatbot/model/api.ts"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AAaO,MAAME,UAAU,CAAC;
|
|
1
|
+
{"version":3,"names":["_effector","require","_index","ChatbotAPI","KATEX_REPLACEMENTS","KATEX_REPLACEMENTS_TEST","__KATEX_DOLLAR_SYMBOL__","replaceKatexSyntax","texts","reverse","replacements","Object","entries","map","text","reduce","newText","pattern","placeholder","replace","RegExp","constructor","api","postMessageFx","createControllerEffect","postMessage","getAlternativesFx","createEffect","getAlternatives","translateTextFx","payload","response","postTranslateText","data","translations","translation","translatedText","textToSpeechTextFx","postTextToSpeech","exports"],"sourceRoot":"../../../../../src","sources":["features/chatbot/model/api.ts"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAD,OAAA;AAaO,MAAME,UAAU,CAAC;EAMdC,kBAAkB,GAAG;IAC3B,KAAK,EAAE;EACT,CAAC;EAEOC,uBAAuB,GAAG;IAChCC,uBAAuB,EAAE;EAC3B,CAAC;EAEOC,kBAAkBA,CAACC,KAAe,EAAEC,OAAO,GAAG,KAAK,EAAE;IAC3D,MAAMC,YAAY,GAAGD,OAAO,GACxBE,MAAM,CAACC,OAAO,CAAC,IAAI,CAACP,uBAAuB,CAAC,GAC5CM,MAAM,CAACC,OAAO,CAAC,IAAI,CAACR,kBAAkB,CAAC;IAE3C,OAAOI,KAAK,CAACK,GAAG,CAACC,IAAI,IACnBJ,YAAY,CAACK,MAAM,CACjB,CAACC,OAAO,EAAE,CAACC,OAAO,EAAEC,WAAW,CAAC,KAAKF,OAAO,CAACG,OAAO,CAAC,IAAIC,MAAM,CAACH,OAAO,EAAE,GAAG,CAAC,EAAEC,WAAW,CAAC,EAC3FJ,IACF,CACF,CAAC;EACH;EAEAO,WAAWA,CAACC,GAA6B,EAAE;IACzC,IAAI,CAACC,aAAa,GAAG,IAAAC,6BAAsB,EAACF,GAAG,CAACG,WAAW,CAAC;IAC5D,IAAI,CAACC,iBAAiB,GAAG,IAAAC,sBAAY,EAACL,GAAG,CAACM,eAAe,CAAC;IAC1D,IAAI,CAACC,eAAe,GAAG,IAAAF,sBAAY,EAAC,MAAOG,OAA+B,IAAK;MAC7E,MAAMC,QAAQ,GAAG,MAAMT,GAAG,CAACU,iBAAiB,CAAC;QAC3C,GAAGF,OAAO;QACVhB,IAAI,EAAE,IAAI,CAACP,kBAAkB,CAACuB,OAAO,CAAChB,IAAI;MAC5C,CAAC,CAAC;MAEF,OAAO;QACL,GAAGiB,QAAQ;QACXE,IAAI,EAAE;UACJ,GAAGF,QAAQ,CAACE,IAAI;UAChBC,YAAY,EAAEH,QAAQ,CAACE,IAAI,CAACC,YAAY,CAACrB,GAAG,CAACsB,WAAW,KAAK;YAC3D,GAAGA,WAAW;YACdC,cAAc,EAAE,IAAI,CAAC7B,kBAAkB,CAAC,CAAC4B,WAAW,CAACC,cAAc,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;UAC/E,CAAC,CAAC;QACJ;MACF,CAAC;IACH,CAAC,CAAC;IACF,IAAI,CAACC,kBAAkB,GAAG,IAAAV,sBAAY,EAACL,GAAG,CAACgB,gBAAgB,CAAC;EAC9D;AACF;AAACC,OAAA,CAAApC,UAAA,GAAAA,UAAA","ignoreList":[]}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import React from 'react';
|
|
4
4
|
import { ActivityIndicator, Pressable, StyleSheet, View } from 'react-native';
|
|
5
|
-
import { Button } from '@magmamath/react-native-ui';
|
|
5
|
+
import { Button, ButtonColor, ButtonSize, ButtonStates, ButtonVariant, COLORS } from '@magmamath/react-native-ui';
|
|
6
6
|
import { useUnit } from 'effector-react';
|
|
7
7
|
import { ChatbotIcon } from "../../../../shared/icons/ChatbotIcon.js";
|
|
8
8
|
import { GlobeIcon } from "../../../../shared/icons/GlobeIcon.js";
|
|
@@ -37,12 +37,24 @@ export const ChatControls = ({
|
|
|
37
37
|
}), /*#__PURE__*/_jsx(Button, {
|
|
38
38
|
onPress: onPressClose,
|
|
39
39
|
style: {
|
|
40
|
-
|
|
41
|
-
button: {
|
|
42
|
-
backgroundColor: '#FFF'
|
|
43
|
-
}
|
|
40
|
+
button: styles.buttonClose
|
|
44
41
|
},
|
|
42
|
+
variant: ButtonVariant.PRIMARY,
|
|
43
|
+
size: ButtonSize.LARGE,
|
|
44
|
+
colorScheme: ButtonColor.GRAY,
|
|
45
45
|
raiseLevel: 5,
|
|
46
|
+
customColorScheme: {
|
|
47
|
+
[ButtonStates.DEFAULT]: {
|
|
48
|
+
backgroundColor: '#FFF',
|
|
49
|
+
borderColor: COLORS.NEUTRAL_5,
|
|
50
|
+
raiseColor: COLORS.NEUTRAL_5
|
|
51
|
+
},
|
|
52
|
+
[ButtonStates.PRESSED]: {
|
|
53
|
+
backgroundColor: COLORS.NEUTRAL_4,
|
|
54
|
+
borderColor: COLORS.NEUTRAL_5,
|
|
55
|
+
raiseColor: COLORS.NEUTRAL_5
|
|
56
|
+
}
|
|
57
|
+
},
|
|
46
58
|
children: /*#__PURE__*/_jsx(CloseIcon, {})
|
|
47
59
|
})]
|
|
48
60
|
});
|
|
@@ -67,7 +79,11 @@ const styles = StyleSheet.create({
|
|
|
67
79
|
},
|
|
68
80
|
buttonClose: {
|
|
69
81
|
width: 50,
|
|
70
|
-
height: 50
|
|
82
|
+
height: 50,
|
|
83
|
+
borderRadius: 50,
|
|
84
|
+
paddingHorizontal: 0,
|
|
85
|
+
borderWidth: 1.5,
|
|
86
|
+
borderColor: COLORS.NEUTRAL_5
|
|
71
87
|
},
|
|
72
88
|
buttonTranslate: {
|
|
73
89
|
alignItems: 'center',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","ActivityIndicator","Pressable","StyleSheet","View","Button","useUnit","ChatbotIcon","GlobeIcon","CloseIcon","jsx","_jsx","jsxs","_jsxs","ChatControls","model","onPressTranslate","onPressChatIcon","onPressClose","isTranslationEnabled","ButtonWrapper","isOpen","$isOpen","isTranslated","translation","$isTranslated","isTranslationPending","translateBatchFx","pending","isHelpRequestPending","sendHelpRequestFx","backgroundColor","fillColor","style","styles","container","children","onPress","disabled","buttonTranslate","color","buttonClose","
|
|
1
|
+
{"version":3,"names":["React","ActivityIndicator","Pressable","StyleSheet","View","Button","ButtonColor","ButtonSize","ButtonStates","ButtonVariant","COLORS","useUnit","ChatbotIcon","GlobeIcon","CloseIcon","jsx","_jsx","jsxs","_jsxs","ChatControls","model","onPressTranslate","onPressChatIcon","onPressClose","isTranslationEnabled","ButtonWrapper","isOpen","$isOpen","isTranslated","translation","$isTranslated","isTranslationPending","translateBatchFx","pending","isHelpRequestPending","sendHelpRequestFx","backgroundColor","fillColor","style","styles","container","children","onPress","disabled","buttonTranslate","color","button","buttonClose","variant","PRIMARY","size","LARGE","colorScheme","GRAY","raiseLevel","customColorScheme","DEFAULT","borderColor","NEUTRAL_5","raiseColor","PRESSED","NEUTRAL_4","create","alignItems","justifyContent","flexDirection","height","gap","width","borderRadius","paddingHorizontal","borderWidth","shadowColor","shadowOffset","shadowOpacity","shadowRadius","elevation"],"sourceRoot":"../../../../../../src","sources":["features/chatbot/components/ChatControls/ChatControls.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,10 +3,35 @@
|
|
|
3
3
|
import { createEffect } from 'effector';
|
|
4
4
|
import { createControllerEffect } from "../../../lib/effector/index.js";
|
|
5
5
|
export class ChatbotAPI {
|
|
6
|
+
KATEX_REPLACEMENTS = {
|
|
7
|
+
'\\$': '__KATEX_DOLLAR_SYMBOL__'
|
|
8
|
+
};
|
|
9
|
+
KATEX_REPLACEMENTS_TEST = {
|
|
10
|
+
__KATEX_DOLLAR_SYMBOL__: '$'
|
|
11
|
+
};
|
|
12
|
+
replaceKatexSyntax(texts, reverse = false) {
|
|
13
|
+
const replacements = reverse ? Object.entries(this.KATEX_REPLACEMENTS_TEST) : Object.entries(this.KATEX_REPLACEMENTS);
|
|
14
|
+
return texts.map(text => replacements.reduce((newText, [pattern, placeholder]) => newText.replace(new RegExp(pattern, 'g'), placeholder), text));
|
|
15
|
+
}
|
|
6
16
|
constructor(api) {
|
|
7
17
|
this.postMessageFx = createControllerEffect(api.postMessage);
|
|
8
18
|
this.getAlternativesFx = createEffect(api.getAlternatives);
|
|
9
|
-
this.translateTextFx = createEffect(
|
|
19
|
+
this.translateTextFx = createEffect(async payload => {
|
|
20
|
+
const response = await api.postTranslateText({
|
|
21
|
+
...payload,
|
|
22
|
+
text: this.replaceKatexSyntax(payload.text)
|
|
23
|
+
});
|
|
24
|
+
return {
|
|
25
|
+
...response,
|
|
26
|
+
data: {
|
|
27
|
+
...response.data,
|
|
28
|
+
translations: response.data.translations.map(translation => ({
|
|
29
|
+
...translation,
|
|
30
|
+
translatedText: this.replaceKatexSyntax([translation.translatedText], true)[0]
|
|
31
|
+
}))
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
});
|
|
10
35
|
this.textToSpeechTextFx = createEffect(api.postTextToSpeech);
|
|
11
36
|
}
|
|
12
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createEffect","createControllerEffect","ChatbotAPI","constructor","api","postMessageFx","postMessage","getAlternativesFx","getAlternatives","translateTextFx","postTranslateText","textToSpeechTextFx","postTextToSpeech"],"sourceRoot":"../../../../../src","sources":["features/chatbot/model/api.ts"],"mappings":";;AAAA,SAASA,YAAY,QAAgB,UAAU;AAE/C,SAASC,sBAAsB,QAAQ,gCAAuB;AAa9D,OAAO,MAAMC,UAAU,CAAC;
|
|
1
|
+
{"version":3,"names":["createEffect","createControllerEffect","ChatbotAPI","KATEX_REPLACEMENTS","KATEX_REPLACEMENTS_TEST","__KATEX_DOLLAR_SYMBOL__","replaceKatexSyntax","texts","reverse","replacements","Object","entries","map","text","reduce","newText","pattern","placeholder","replace","RegExp","constructor","api","postMessageFx","postMessage","getAlternativesFx","getAlternatives","translateTextFx","payload","response","postTranslateText","data","translations","translation","translatedText","textToSpeechTextFx","postTextToSpeech"],"sourceRoot":"../../../../../src","sources":["features/chatbot/model/api.ts"],"mappings":";;AAAA,SAASA,YAAY,QAAgB,UAAU;AAE/C,SAASC,sBAAsB,QAAQ,gCAAuB;AAa9D,OAAO,MAAMC,UAAU,CAAC;EAMdC,kBAAkB,GAAG;IAC3B,KAAK,EAAE;EACT,CAAC;EAEOC,uBAAuB,GAAG;IAChCC,uBAAuB,EAAE;EAC3B,CAAC;EAEOC,kBAAkBA,CAACC,KAAe,EAAEC,OAAO,GAAG,KAAK,EAAE;IAC3D,MAAMC,YAAY,GAAGD,OAAO,GACxBE,MAAM,CAACC,OAAO,CAAC,IAAI,CAACP,uBAAuB,CAAC,GAC5CM,MAAM,CAACC,OAAO,CAAC,IAAI,CAACR,kBAAkB,CAAC;IAE3C,OAAOI,KAAK,CAACK,GAAG,CAACC,IAAI,IACnBJ,YAAY,CAACK,MAAM,CACjB,CAACC,OAAO,EAAE,CAACC,OAAO,EAAEC,WAAW,CAAC,KAAKF,OAAO,CAACG,OAAO,CAAC,IAAIC,MAAM,CAACH,OAAO,EAAE,GAAG,CAAC,EAAEC,WAAW,CAAC,EAC3FJ,IACF,CACF,CAAC;EACH;EAEAO,WAAWA,CAACC,GAA6B,EAAE;IACzC,IAAI,CAACC,aAAa,GAAGrB,sBAAsB,CAACoB,GAAG,CAACE,WAAW,CAAC;IAC5D,IAAI,CAACC,iBAAiB,GAAGxB,YAAY,CAACqB,GAAG,CAACI,eAAe,CAAC;IAC1D,IAAI,CAACC,eAAe,GAAG1B,YAAY,CAAC,MAAO2B,OAA+B,IAAK;MAC7E,MAAMC,QAAQ,GAAG,MAAMP,GAAG,CAACQ,iBAAiB,CAAC;QAC3C,GAAGF,OAAO;QACVd,IAAI,EAAE,IAAI,CAACP,kBAAkB,CAACqB,OAAO,CAACd,IAAI;MAC5C,CAAC,CAAC;MAEF,OAAO;QACL,GAAGe,QAAQ;QACXE,IAAI,EAAE;UACJ,GAAGF,QAAQ,CAACE,IAAI;UAChBC,YAAY,EAAEH,QAAQ,CAACE,IAAI,CAACC,YAAY,CAACnB,GAAG,CAACoB,WAAW,KAAK;YAC3D,GAAGA,WAAW;YACdC,cAAc,EAAE,IAAI,CAAC3B,kBAAkB,CAAC,CAAC0B,WAAW,CAACC,cAAc,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;UAC/E,CAAC,CAAC;QACJ;MACF,CAAC;IACH,CAAC,CAAC;IACF,IAAI,CAACC,kBAAkB,GAAGlC,YAAY,CAACqB,GAAG,CAACc,gBAAgB,CAAC;EAC9D;AACF","ignoreList":[]}
|
package/dist/typescript/commonjs/features/chatbot/components/ChatControls/ChatControls.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatControls.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/chatbot/components/ChatControls/ChatControls.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"ChatControls.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/chatbot/components/ChatControls/ChatControls.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAA;AAWxD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAKhD,KAAK,iBAAiB,GAAG;IACvB,KAAK,EAAE,YAAY,CAAA;IACnB,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,eAAe,EAAE,MAAM,IAAI,CAAA;IAC3B,YAAY,EAAE,MAAM,IAAI,CAAA;IACxB,oBAAoB,EAAE,OAAO,CAAA;IAC7B,aAAa,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAA;CAChD,CAAA;AAED,eAAO,MAAM,YAAY,qGAOtB,iBAAiB,sBA2DnB,CAAA"}
|
|
@@ -7,6 +7,9 @@ export declare class ChatbotAPI {
|
|
|
7
7
|
getAlternativesFx: Effect<void, GetAlternativesResponse>;
|
|
8
8
|
translateTextFx: Effect<GoogleTranslatePayload, GoogleTranslateResponse>;
|
|
9
9
|
textToSpeechTextFx: Effect<GoogleText2SpeechPayload, GoogleText2SpeechResponse>;
|
|
10
|
+
private KATEX_REPLACEMENTS;
|
|
11
|
+
private KATEX_REPLACEMENTS_TEST;
|
|
12
|
+
private replaceKatexSyntax;
|
|
10
13
|
constructor(api: ChatbotModelProps['api']);
|
|
11
14
|
}
|
|
12
15
|
//# sourceMappingURL=api.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../../../../src/features/chatbot/model/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,MAAM,EAAE,MAAM,UAAU,CAAA;AAG/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAA;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../../../../src/features/chatbot/model/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,MAAM,EAAE,MAAM,UAAU,CAAA;AAG/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAA;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,EACxB,yBAAyB,EAC1B,MAAM,oBAAoB,CAAA;AAE3B,qBAAa,UAAU;IACrB,aAAa,EAAE,gBAAgB,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,CAAA;IACxE,iBAAiB,EAAE,MAAM,CAAC,IAAI,EAAE,uBAAuB,CAAC,CAAA;IACxD,eAAe,EAAE,MAAM,CAAC,sBAAsB,EAAE,uBAAuB,CAAC,CAAA;IACxE,kBAAkB,EAAE,MAAM,CAAC,wBAAwB,EAAE,yBAAyB,CAAC,CAAA;IAE/E,OAAO,CAAC,kBAAkB,CAEhB;IAEV,OAAO,CAAC,uBAAuB,CAErB;IAEV,OAAO,CAAC,kBAAkB;gBAad,GAAG,EAAE,iBAAiB,CAAC,KAAK,CAAC;CAsB1C"}
|
package/dist/typescript/module/features/chatbot/components/ChatControls/ChatControls.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatControls.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/chatbot/components/ChatControls/ChatControls.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"ChatControls.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/chatbot/components/ChatControls/ChatControls.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAA;AAWxD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAKhD,KAAK,iBAAiB,GAAG;IACvB,KAAK,EAAE,YAAY,CAAA;IACnB,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,eAAe,EAAE,MAAM,IAAI,CAAA;IAC3B,YAAY,EAAE,MAAM,IAAI,CAAA;IACxB,oBAAoB,EAAE,OAAO,CAAA;IAC7B,aAAa,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAA;CAChD,CAAA;AAED,eAAO,MAAM,YAAY,qGAOtB,iBAAiB,sBA2DnB,CAAA"}
|
|
@@ -7,6 +7,9 @@ export declare class ChatbotAPI {
|
|
|
7
7
|
getAlternativesFx: Effect<void, GetAlternativesResponse>;
|
|
8
8
|
translateTextFx: Effect<GoogleTranslatePayload, GoogleTranslateResponse>;
|
|
9
9
|
textToSpeechTextFx: Effect<GoogleText2SpeechPayload, GoogleText2SpeechResponse>;
|
|
10
|
+
private KATEX_REPLACEMENTS;
|
|
11
|
+
private KATEX_REPLACEMENTS_TEST;
|
|
12
|
+
private replaceKatexSyntax;
|
|
10
13
|
constructor(api: ChatbotModelProps['api']);
|
|
11
14
|
}
|
|
12
15
|
//# sourceMappingURL=api.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../../../../src/features/chatbot/model/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,MAAM,EAAE,MAAM,UAAU,CAAA;AAG/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAA;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../../../../src/features/chatbot/model/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,MAAM,EAAE,MAAM,UAAU,CAAA;AAG/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAA;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,EACxB,yBAAyB,EAC1B,MAAM,oBAAoB,CAAA;AAE3B,qBAAa,UAAU;IACrB,aAAa,EAAE,gBAAgB,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,CAAA;IACxE,iBAAiB,EAAE,MAAM,CAAC,IAAI,EAAE,uBAAuB,CAAC,CAAA;IACxD,eAAe,EAAE,MAAM,CAAC,sBAAsB,EAAE,uBAAuB,CAAC,CAAA;IACxE,kBAAkB,EAAE,MAAM,CAAC,wBAAwB,EAAE,yBAAyB,CAAC,CAAA;IAE/E,OAAO,CAAC,kBAAkB,CAEhB;IAEV,OAAO,CAAC,uBAAuB,CAErB;IAEV,OAAO,CAAC,kBAAkB;gBAad,GAAG,EAAE,iBAAiB,CAAC,KAAK,CAAC;CAsB1C"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@magmamath/students-features",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2-fix-spanish-translation2",
|
|
4
4
|
"description": "Magmamath features library",
|
|
5
5
|
"source": "src/index.ts",
|
|
6
6
|
"main": "dist/commonjs/index.js",
|
|
@@ -17,17 +17,17 @@
|
|
|
17
17
|
"release": "release-it"
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@magmamath/react-native-ui": "0.1.15",
|
|
21
20
|
"effector": "^23.2.3",
|
|
22
21
|
"effector-react": "^23.2.1"
|
|
23
22
|
},
|
|
24
23
|
"peerDependencies": {
|
|
25
24
|
"react": "*",
|
|
26
25
|
"react-native": "*",
|
|
27
|
-
"react-native-svg": "^15.10.0"
|
|
26
|
+
"react-native-svg": "^15.10.0",
|
|
27
|
+
"@magmamath/react-native-ui": "*"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
|
-
"@magmamath/react-native-ui": "0.
|
|
30
|
+
"@magmamath/react-native-ui": "0.3.0",
|
|
31
31
|
"@react-native/eslint-config": "^0.73.1",
|
|
32
32
|
"@release-it/conventional-changelog": "^9.0.2",
|
|
33
33
|
"@types/jest": "^29.5.5",
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
import React from 'react'
|
|
2
2
|
import { ComponentType, PropsWithChildren } from 'react'
|
|
3
3
|
import { ActivityIndicator, Pressable, StyleSheet, View } from 'react-native'
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
Button,
|
|
6
|
+
ButtonColor,
|
|
7
|
+
ButtonSize,
|
|
8
|
+
ButtonStates,
|
|
9
|
+
ButtonVariant,
|
|
10
|
+
COLORS,
|
|
11
|
+
} from '@magmamath/react-native-ui'
|
|
5
12
|
import { useUnit } from 'effector-react'
|
|
6
13
|
import { ChatbotModel } from '../../model/model'
|
|
7
14
|
import { ChatbotIcon } from '../../../../shared/icons/ChatbotIcon'
|
|
@@ -49,12 +56,24 @@ export const ChatControls = ({
|
|
|
49
56
|
<Button
|
|
50
57
|
onPress={onPressClose}
|
|
51
58
|
style={{
|
|
52
|
-
|
|
53
|
-
|
|
59
|
+
button: styles.buttonClose,
|
|
60
|
+
}}
|
|
61
|
+
variant={ButtonVariant.PRIMARY}
|
|
62
|
+
size={ButtonSize.LARGE}
|
|
63
|
+
colorScheme={ButtonColor.GRAY}
|
|
64
|
+
raiseLevel={5}
|
|
65
|
+
customColorScheme={{
|
|
66
|
+
[ButtonStates.DEFAULT]: {
|
|
54
67
|
backgroundColor: '#FFF',
|
|
68
|
+
borderColor: COLORS.NEUTRAL_5,
|
|
69
|
+
raiseColor: COLORS.NEUTRAL_5,
|
|
70
|
+
},
|
|
71
|
+
[ButtonStates.PRESSED]: {
|
|
72
|
+
backgroundColor: COLORS.NEUTRAL_4,
|
|
73
|
+
borderColor: COLORS.NEUTRAL_5,
|
|
74
|
+
raiseColor: COLORS.NEUTRAL_5,
|
|
55
75
|
},
|
|
56
76
|
}}
|
|
57
|
-
raiseLevel={5}
|
|
58
77
|
>
|
|
59
78
|
<CloseIcon />
|
|
60
79
|
</Button>
|
|
@@ -84,6 +103,10 @@ const styles = StyleSheet.create({
|
|
|
84
103
|
buttonClose: {
|
|
85
104
|
width: 50,
|
|
86
105
|
height: 50,
|
|
106
|
+
borderRadius: 50,
|
|
107
|
+
paddingHorizontal: 0,
|
|
108
|
+
borderWidth: 1.5,
|
|
109
|
+
borderColor: COLORS.NEUTRAL_5,
|
|
87
110
|
},
|
|
88
111
|
buttonTranslate: {
|
|
89
112
|
alignItems: 'center',
|
|
@@ -4,25 +4,62 @@ import { createControllerEffect } from '../../../lib/effector'
|
|
|
4
4
|
import { ControlledEffect } from '../../../lib/effector/createControllerEffect'
|
|
5
5
|
import { ChatbotModelProps } from '../types/model.types'
|
|
6
6
|
import {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
7
|
+
GetAlternativesResponse,
|
|
8
|
+
PostMessagePayload,
|
|
9
|
+
PostMessageResponse,
|
|
10
|
+
GoogleTranslatePayload,
|
|
11
|
+
GoogleTranslateResponse,
|
|
12
|
+
GoogleText2SpeechPayload,
|
|
13
|
+
GoogleText2SpeechResponse,
|
|
14
14
|
} from '../types/api.types'
|
|
15
15
|
|
|
16
16
|
export class ChatbotAPI {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
17
|
+
postMessageFx: ControlledEffect<PostMessagePayload, PostMessageResponse>
|
|
18
|
+
getAlternativesFx: Effect<void, GetAlternativesResponse>
|
|
19
|
+
translateTextFx: Effect<GoogleTranslatePayload, GoogleTranslateResponse>
|
|
20
|
+
textToSpeechTextFx: Effect<GoogleText2SpeechPayload, GoogleText2SpeechResponse>
|
|
21
|
+
|
|
22
|
+
private KATEX_REPLACEMENTS = {
|
|
23
|
+
'\\$': '__KATEX_DOLLAR_SYMBOL__',
|
|
24
|
+
} as const
|
|
25
|
+
|
|
26
|
+
private KATEX_REPLACEMENTS_TEST = {
|
|
27
|
+
__KATEX_DOLLAR_SYMBOL__: '$',
|
|
28
|
+
} as const
|
|
29
|
+
|
|
30
|
+
private replaceKatexSyntax(texts: string[], reverse = false) {
|
|
31
|
+
const replacements = reverse
|
|
32
|
+
? Object.entries(this.KATEX_REPLACEMENTS_TEST)
|
|
33
|
+
: Object.entries(this.KATEX_REPLACEMENTS)
|
|
34
|
+
|
|
35
|
+
return texts.map(text =>
|
|
36
|
+
replacements.reduce(
|
|
37
|
+
(newText, [pattern, placeholder]) => newText.replace(new RegExp(pattern, 'g'), placeholder),
|
|
38
|
+
text,
|
|
39
|
+
),
|
|
40
|
+
)
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
constructor(api: ChatbotModelProps['api']) {
|
|
44
|
+
this.postMessageFx = createControllerEffect(api.postMessage)
|
|
45
|
+
this.getAlternativesFx = createEffect(api.getAlternatives)
|
|
46
|
+
this.translateTextFx = createEffect(async (payload: GoogleTranslatePayload) => {
|
|
47
|
+
const response = await api.postTranslateText({
|
|
48
|
+
...payload,
|
|
49
|
+
text: this.replaceKatexSyntax(payload.text),
|
|
50
|
+
})
|
|
51
|
+
|
|
52
|
+
return {
|
|
53
|
+
...response,
|
|
54
|
+
data: {
|
|
55
|
+
...response.data,
|
|
56
|
+
translations: response.data.translations.map(translation => ({
|
|
57
|
+
...translation,
|
|
58
|
+
translatedText: this.replaceKatexSyntax([translation.translatedText], true)[0],
|
|
59
|
+
})),
|
|
60
|
+
},
|
|
61
|
+
}
|
|
62
|
+
})
|
|
63
|
+
this.textToSpeechTextFx = createEffect(api.postTextToSpeech)
|
|
64
|
+
}
|
|
28
65
|
}
|