react-native-chatbot-ai 0.1.0 → 0.1.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 (144) hide show
  1. package/lib/module/assets/svgIcon/IconChatArrow.js +0 -1
  2. package/lib/module/assets/svgIcon/IconChatArrow.js.map +1 -1
  3. package/lib/module/assets/svgIcon/IconPdf.js +27 -0
  4. package/lib/module/assets/svgIcon/IconPdf.js.map +1 -0
  5. package/lib/module/assets/svgIcon/IconThinkingStep.js +0 -1
  6. package/lib/module/assets/svgIcon/IconThinkingStep.js.map +1 -1
  7. package/lib/module/components/chat/ChatEmpty.js +6 -1
  8. package/lib/module/components/chat/ChatEmpty.js.map +1 -1
  9. package/lib/module/components/chat/ChatMessageList.js +33 -6
  10. package/lib/module/components/chat/ChatMessageList.js.map +1 -1
  11. package/lib/module/components/chat/footer/index.js +328 -0
  12. package/lib/module/components/chat/footer/index.js.map +1 -0
  13. package/lib/module/components/chat/footer/item/UploadFileItem.js +163 -0
  14. package/lib/module/components/chat/footer/item/UploadFileItem.js.map +1 -0
  15. package/lib/module/components/chat/footer/item/UploadImageItem.js +94 -0
  16. package/lib/module/components/chat/footer/item/UploadImageItem.js.map +1 -0
  17. package/lib/module/components/chat/index.js +1 -1
  18. package/lib/module/components/chat/index.js.map +1 -1
  19. package/lib/module/components/chat/item/ChatAIAnswerMessageItem.js +114 -32
  20. package/lib/module/components/chat/item/ChatAIAnswerMessageItem.js.map +1 -1
  21. package/lib/module/components/chat/item/ChatAIThinkingMessageItem.js +18 -7
  22. package/lib/module/components/chat/item/ChatAIThinkingMessageItem.js.map +1 -1
  23. package/lib/module/components/chat/item/ChatUserMessageItem.js +122 -15
  24. package/lib/module/components/chat/item/ChatUserMessageItem.js.map +1 -1
  25. package/lib/module/components/portal/Toast.js +193 -0
  26. package/lib/module/components/portal/Toast.js.map +1 -0
  27. package/lib/module/components/portal/index.js +15 -0
  28. package/lib/module/components/portal/index.js.map +1 -0
  29. package/lib/module/constants/events.js +2 -1
  30. package/lib/module/constants/events.js.map +1 -1
  31. package/lib/module/constants/index.js +9 -0
  32. package/lib/module/constants/index.js.map +1 -0
  33. package/lib/module/context/ChatContext.js +8 -5
  34. package/lib/module/context/ChatContext.js.map +1 -1
  35. package/lib/module/hooks/message/useMessage.js +0 -1
  36. package/lib/module/hooks/message/useMessage.js.map +1 -1
  37. package/lib/module/hooks/message/useSendMessage.js +3 -3
  38. package/lib/module/hooks/message/useSendMessage.js.map +1 -1
  39. package/lib/module/hooks/upload/useFileUpload.js +94 -0
  40. package/lib/module/hooks/upload/useFileUpload.js.map +1 -0
  41. package/lib/module/hooks/upload/useImageUpload.js +92 -0
  42. package/lib/module/hooks/upload/useImageUpload.js.map +1 -0
  43. package/lib/module/hooks/useAndroidBackHandler.js +20 -0
  44. package/lib/module/hooks/useAndroidBackHandler.js.map +1 -0
  45. package/lib/module/services/endpoints.js +3 -0
  46. package/lib/module/services/endpoints.js.map +1 -1
  47. package/lib/module/types/index.js +1 -0
  48. package/lib/module/types/index.js.map +1 -1
  49. package/lib/module/types/ui.js +4 -0
  50. package/lib/module/types/ui.js.map +1 -0
  51. package/lib/module/utils/common.js +31 -0
  52. package/lib/module/utils/common.js.map +1 -0
  53. package/lib/module/utils/device.js +137 -0
  54. package/lib/module/utils/device.js.map +1 -0
  55. package/lib/module/utils/ui.js +28 -0
  56. package/lib/module/utils/ui.js.map +1 -0
  57. package/lib/typescript/src/assets/icons/index.d.ts.map +1 -1
  58. package/lib/typescript/src/assets/svgIcon/IconChatArrow.d.ts.map +1 -1
  59. package/lib/typescript/src/assets/svgIcon/IconPdf.d.ts +7 -0
  60. package/lib/typescript/src/assets/svgIcon/IconPdf.d.ts.map +1 -0
  61. package/lib/typescript/src/assets/svgIcon/IconThinkingStep.d.ts.map +1 -1
  62. package/lib/typescript/src/components/chat/ChatEmpty.d.ts.map +1 -1
  63. package/lib/typescript/src/components/chat/ChatMessageList.d.ts.map +1 -1
  64. package/lib/typescript/src/components/chat/footer/index.d.ts +16 -0
  65. package/lib/typescript/src/components/chat/footer/index.d.ts.map +1 -0
  66. package/lib/typescript/src/components/chat/footer/item/UploadFileItem.d.ts +9 -0
  67. package/lib/typescript/src/components/chat/footer/item/UploadFileItem.d.ts.map +1 -0
  68. package/lib/typescript/src/components/chat/footer/item/UploadImageItem.d.ts +9 -0
  69. package/lib/typescript/src/components/chat/footer/item/UploadImageItem.d.ts.map +1 -0
  70. package/lib/typescript/src/components/chat/item/ChatAIAnswerMessageItem.d.ts +9 -0
  71. package/lib/typescript/src/components/chat/item/ChatAIAnswerMessageItem.d.ts.map +1 -1
  72. package/lib/typescript/src/components/chat/item/ChatAIThinkingMessageItem.d.ts.map +1 -1
  73. package/lib/typescript/src/components/chat/item/ChatUserMessageItem.d.ts.map +1 -1
  74. package/lib/typescript/src/components/portal/Toast.d.ts +4 -0
  75. package/lib/typescript/src/components/portal/Toast.d.ts.map +1 -0
  76. package/lib/typescript/src/components/portal/index.d.ts +3 -0
  77. package/lib/typescript/src/components/portal/index.d.ts.map +1 -0
  78. package/lib/typescript/src/constants/events.d.ts +1 -0
  79. package/lib/typescript/src/constants/events.d.ts.map +1 -1
  80. package/lib/typescript/src/constants/index.d.ts +6 -0
  81. package/lib/typescript/src/constants/index.d.ts.map +1 -0
  82. package/lib/typescript/src/context/ChatContext.d.ts.map +1 -1
  83. package/lib/typescript/src/hooks/message/useMessage.d.ts.map +1 -1
  84. package/lib/typescript/src/hooks/message/useSendMessage.d.ts +2 -1
  85. package/lib/typescript/src/hooks/message/useSendMessage.d.ts.map +1 -1
  86. package/lib/typescript/src/hooks/upload/useFileUpload.d.ts +15 -0
  87. package/lib/typescript/src/hooks/upload/useFileUpload.d.ts.map +1 -0
  88. package/lib/typescript/src/hooks/upload/useImageUpload.d.ts +15 -0
  89. package/lib/typescript/src/hooks/upload/useImageUpload.d.ts.map +1 -0
  90. package/lib/typescript/src/hooks/useAndroidBackHandler.d.ts +4 -0
  91. package/lib/typescript/src/hooks/useAndroidBackHandler.d.ts.map +1 -0
  92. package/lib/typescript/src/services/endpoints.d.ts +3 -0
  93. package/lib/typescript/src/services/endpoints.d.ts.map +1 -1
  94. package/lib/typescript/src/types/chat.d.ts +6 -0
  95. package/lib/typescript/src/types/chat.d.ts.map +1 -1
  96. package/lib/typescript/src/types/dto.d.ts +10 -1
  97. package/lib/typescript/src/types/dto.d.ts.map +1 -1
  98. package/lib/typescript/src/types/index.d.ts +1 -0
  99. package/lib/typescript/src/types/index.d.ts.map +1 -1
  100. package/lib/typescript/src/types/ui.d.ts +7 -0
  101. package/lib/typescript/src/types/ui.d.ts.map +1 -0
  102. package/lib/typescript/src/utils/common.d.ts +10 -0
  103. package/lib/typescript/src/utils/common.d.ts.map +1 -0
  104. package/lib/typescript/src/utils/device.d.ts +11 -0
  105. package/lib/typescript/src/utils/device.d.ts.map +1 -0
  106. package/lib/typescript/src/utils/ui.d.ts +12 -0
  107. package/lib/typescript/src/utils/ui.d.ts.map +1 -0
  108. package/package.json +11 -6
  109. package/src/assets/icons/index.ts +1 -1
  110. package/src/assets/svgIcon/IconChatArrow.tsx +1 -7
  111. package/src/assets/svgIcon/IconPdf.tsx +26 -0
  112. package/src/assets/svgIcon/IconThinkingStep.tsx +1 -7
  113. package/src/components/chat/ChatEmpty.tsx +5 -2
  114. package/src/components/chat/ChatMessageList.tsx +39 -5
  115. package/src/components/chat/footer/index.tsx +410 -0
  116. package/src/components/chat/footer/item/UploadFileItem.tsx +181 -0
  117. package/src/components/chat/footer/item/UploadImageItem.tsx +91 -0
  118. package/src/components/chat/index.tsx +1 -1
  119. package/src/components/chat/item/ChatAIAnswerMessageItem.tsx +152 -54
  120. package/src/components/chat/item/ChatAIThinkingMessageItem.tsx +37 -31
  121. package/src/components/chat/item/ChatUserMessageItem.tsx +145 -13
  122. package/src/components/portal/Toast.tsx +315 -0
  123. package/src/components/portal/index.tsx +13 -0
  124. package/src/constants/events.ts +1 -0
  125. package/src/constants/index.ts +9 -0
  126. package/src/context/ChatContext.tsx +6 -2
  127. package/src/hooks/message/useMessage.ts +0 -1
  128. package/src/hooks/message/useSendMessage.ts +4 -4
  129. package/src/hooks/upload/useFileUpload.ts +126 -0
  130. package/src/hooks/upload/useImageUpload.ts +123 -0
  131. package/src/hooks/useAndroidBackHandler.ts +29 -0
  132. package/src/services/endpoints.ts +3 -0
  133. package/src/types/chat.ts +2 -0
  134. package/src/types/dto.ts +16 -1
  135. package/src/types/index.ts +1 -0
  136. package/src/types/ui.ts +12 -0
  137. package/src/utils/common.ts +40 -0
  138. package/src/utils/device.ts +170 -0
  139. package/src/utils/ui.tsx +32 -0
  140. package/lib/module/components/chat/ChatFooter.js +0 -91
  141. package/lib/module/components/chat/ChatFooter.js.map +0 -1
  142. package/lib/typescript/src/components/chat/ChatFooter.d.ts +0 -3
  143. package/lib/typescript/src/components/chat/ChatFooter.d.ts.map +0 -1
  144. package/src/components/chat/ChatFooter.tsx +0 -99
@@ -14,7 +14,6 @@ export const IconChatArrow = props => {
14
14
  height: height,
15
15
  viewBox: "0 0 6 18",
16
16
  fill: "none",
17
- ...props,
18
17
  children: /*#__PURE__*/_jsx(Path, {
19
18
  d: "M4.024 0H0v18c.545-4.5 2.546-9.873 4.956-12.5C6.332 4 6.65 0 4.024 0z",
20
19
  fill: fill,
@@ -1 +1 @@
1
- {"version":3,"names":["Svg","Path","jsx","_jsx","IconChatArrow","props","width","height","fill","opacity","viewBox","children","d","fillOpacity"],"sourceRoot":"../../../../src","sources":["assets/svgIcon/IconChatArrow.tsx"],"mappings":";;AAAA,OAAOA,GAAG,IAAIC,IAAI,QAAQ,kBAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAS7C,OAAO,MAAMC,aAAa,GAAIC,KAAY,IAAK;EAC7C,MAAM;IAAEC,KAAK,GAAG,CAAC;IAAEC,MAAM,GAAG,EAAE;IAAEC,IAAI,GAAG,MAAM;IAAEC,OAAO,GAAG;EAAI,CAAC,GAAGJ,KAAK,IAAI,CAAC,CAAC;EAC5E,oBACEF,IAAA,CAACH,GAAG;IACFM,KAAK,EAAEA,KAAM;IACbC,MAAM,EAAEA,MAAO;IACfG,OAAO,EAAC,UAAU;IAClBF,IAAI,EAAC,MAAM;IAAA,GACPH,KAAK;IAAAM,QAAA,eAETR,IAAA,CAACF,IAAI;MACHW,CAAC,EAAC,uEAAuE;MACzEJ,IAAI,EAAEA,IAAK;MACXK,WAAW,EAAEJ;IAAQ,CACtB;EAAC,CACC,CAAC;AAEV,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Svg","Path","jsx","_jsx","IconChatArrow","props","width","height","fill","opacity","viewBox","children","d","fillOpacity"],"sourceRoot":"../../../../src","sources":["assets/svgIcon/IconChatArrow.tsx"],"mappings":";;AAAA,OAAOA,GAAG,IAAIC,IAAI,QAAQ,kBAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAS7C,OAAO,MAAMC,aAAa,GAAIC,KAAY,IAAK;EAC7C,MAAM;IAAEC,KAAK,GAAG,CAAC;IAAEC,MAAM,GAAG,EAAE;IAAEC,IAAI,GAAG,MAAM;IAAEC,OAAO,GAAG;EAAI,CAAC,GAAGJ,KAAK,IAAI,CAAC,CAAC;EAC5E,oBACEF,IAAA,CAACH,GAAG;IAACM,KAAK,EAAEA,KAAM;IAACC,MAAM,EAAEA,MAAO;IAACG,OAAO,EAAC,UAAU;IAACF,IAAI,EAAC,MAAM;IAAAG,QAAA,eAC/DR,IAAA,CAACF,IAAI;MACHW,CAAC,EAAC,uEAAuE;MACzEJ,IAAI,EAAEA,IAAK;MACXK,WAAW,EAAEJ;IAAQ,CACtB;EAAC,CACC,CAAC;AAEV,CAAC","ignoreList":[]}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ import Svg, { Path } from 'react-native-svg';
4
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
+ export const IconPdf = props => {
6
+ const {
7
+ width = 20,
8
+ height = 20
9
+ } = props || {};
10
+ return /*#__PURE__*/_jsxs(Svg, {
11
+ width: width,
12
+ height: height,
13
+ viewBox: "0 0 20 20",
14
+ fill: "none",
15
+ children: [/*#__PURE__*/_jsx(Path, {
16
+ d: "M2.5 0h10.62l5.63 5.608V18.75c0 .69-.56 1.25-1.25 1.25h-15c-.69 0-1.25-.56-1.25-1.25V1.25C1.25.56 1.81 0 2.5 0z",
17
+ fill: "#E2574C"
18
+ }), /*#__PURE__*/_jsx(Path, {
19
+ d: "M18.732 5.625h-4.357c-.69 0-1.25-.56-1.25-1.25V.013l5.607 5.612z",
20
+ fill: "#B53629"
21
+ }), /*#__PURE__*/_jsx(Path, {
22
+ d: "M12.314 9.642c.012-.19.09-.392.234-.607.147-.218.336-.386.566-.505.23-.12.45-.181.664-.185h1.513c.296-.004.476.123.542.38v.168c-.066.257-.246.384-.542.38h-1.267a.498.498 0 00-.32.15.448.448 0 00-.148.327v.618h1.625c.295-.004.475.123.541.381v.179c-.066.258-.246.385-.541.38h-1.624v1.548a.468.468 0 01-.148.334.512.512 0 01-.32.142h-.314a.506.506 0 01-.314-.143.468.468 0 01-.147-.333V9.642zM10.516 9.75a.448.448 0 00-.148-.328.499.499 0 00-.32-.149h-.344c-.143-.004-.221.048-.234.155v2.821c.013.107.09.159.234.155h.345a.512.512 0 00.32-.143.468.468 0 00.147-.333V9.75zM8.24 9.047c.004-.21.107-.38.308-.512.2-.134.447-.198.738-.19h.941c.258.004.502.065.732.184.23.12.416.288.56.506.147.215.227.417.24.607v2.393c-.013.19-.093.395-.24.613-.144.214-.33.38-.56.5-.23.119-.474.18-.732.184h-.941c-.291.008-.538-.053-.738-.184-.201-.135-.304-.308-.308-.518V9.047zM4.627 13.332a.506.506 0 01-.313-.143.468.468 0 01-.148-.333V9.63c.012-.19.09-.392.234-.607.147-.218.336-.386.566-.505.23-.12.45-.181.664-.185h.523c.258.004.502.065.732.184.23.12.416.288.56.506.148.215.228.417.24.607v.381c-.012.19-.092.395-.24.613-.144.215-.33.381-.56.5-.23.12-.47.18-.72.185h-.769v1.547a.468.468 0 01-.147.333.512.512 0 01-.32.143h-.302zm1.815-3.594a.448.448 0 00-.147-.328.499.499 0 00-.32-.149h-.111a.499.499 0 00-.32.15.448.448 0 00-.148.327v.63h.579a.51.51 0 00.32-.142.468.468 0 00.147-.334v-.154z",
23
+ fill: "#fff"
24
+ })]
25
+ });
26
+ };
27
+ //# sourceMappingURL=IconPdf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Svg","Path","jsx","_jsx","jsxs","_jsxs","IconPdf","props","width","height","viewBox","fill","children","d"],"sourceRoot":"../../../../src","sources":["assets/svgIcon/IconPdf.tsx"],"mappings":";;AAAA,OAAOA,GAAG,IAAIC,IAAI,QAAQ,kBAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAO7C,OAAO,MAAMC,OAAO,GAAIC,KAAY,IAAK;EACvC,MAAM;IAAEC,KAAK,GAAG,EAAE;IAAEC,MAAM,GAAG;EAAG,CAAC,GAAGF,KAAK,IAAI,CAAC,CAAC;EAC/C,oBACEF,KAAA,CAACL,GAAG;IAACQ,KAAK,EAAEA,KAAM;IAACC,MAAM,EAAEA,MAAO;IAACC,OAAO,EAAC,WAAW;IAACC,IAAI,EAAC,MAAM;IAAAC,QAAA,gBAChET,IAAA,CAACF,IAAI;MACHY,CAAC,EAAC,iHAAiH;MACnHF,IAAI,EAAC;IAAS,CACf,CAAC,eACFR,IAAA,CAACF,IAAI;MACHY,CAAC,EAAC,kEAAkE;MACpEF,IAAI,EAAC;IAAS,CACf,CAAC,eACFR,IAAA,CAACF,IAAI;MACHY,CAAC,EAAC,g2CAAg2C;MACl2CF,IAAI,EAAC;IAAM,CACZ,CAAC;EAAA,CACC,CAAC;AAEV,CAAC","ignoreList":[]}
@@ -12,7 +12,6 @@ export const IconThinkingStep = props => {
12
12
  height: height,
13
13
  viewBox: "0 0 24 24",
14
14
  fill: "none",
15
- ...props,
16
15
  children: [/*#__PURE__*/_jsx(Mask, {
17
16
  id: "a",
18
17
  maskUnits: "userSpaceOnUse",
@@ -1 +1 @@
1
- {"version":3,"names":["Svg","G","Mask","Path","jsx","_jsx","jsxs","_jsxs","IconThinkingStep","props","width","height","viewBox","fill","children","id","maskUnits","x","y","d","mask"],"sourceRoot":"../../../../src","sources":["assets/svgIcon/IconThinkingStep.tsx"],"mappings":";;AAAA,OAAOA,GAAG,IAAIC,CAAC,EAAEC,IAAI,EAAEC,IAAI,QAAQ,kBAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAOtD,OAAO,MAAMC,gBAAgB,GAAIC,KAAY,IAAK;EAChD,MAAM;IAAEC,KAAK,GAAG,EAAE;IAAEC,MAAM,GAAG;EAAG,CAAC,GAAGF,KAAK,IAAI,CAAC,CAAC;EAC/C,oBACEF,KAAA,CAACP,GAAG;IACFU,KAAK,EAAEA,KAAM;IACbC,MAAM,EAAEA,MAAO;IACfC,OAAO,EAAC,WAAW;IACnBC,IAAI,EAAC,MAAM;IAAA,GACPJ,KAAK;IAAAK,QAAA,gBAETT,IAAA,CAACH,IAAI;MACHa,EAAE,EAAC,GAAG;MACNC,SAAS,EAAC,gBAAgB;MAC1BC,CAAC,EAAE,CAAC,CAAE;MACNC,CAAC,EAAE,CAAC,CAAE;MACNR,KAAK,EAAE,EAAG;MACVC,MAAM,EAAE,EAAG;MAAAG,QAAA,eAEXT,IAAA,CAACF,IAAI;QAACgB,CAAC,EAAC,oBAAoB;QAACN,IAAI,EAAC;MAAM,CAAE;IAAC,CACvC,CAAC,eACPN,KAAA,CAACN,CAAC;MAACmB,IAAI,EAAC,SAAS;MAAAN,QAAA,gBACfT,IAAA,CAACF,IAAI;QACHgB,CAAC,EAAC,kPAAkP;QACpPN,IAAI,EAAC;MAAS,CACf,CAAC,eACFR,IAAA,CAACF,IAAI;QACHgB,CAAC,EAAC,0MAA0M;QAC5MN,IAAI,EAAC;MAAM,CACZ,CAAC,eACFR,IAAA,CAACF,IAAI;QACHgB,CAAC,EAAC,gQAAgQ;QAClQN,IAAI,EAAC;MAAS,CACf,CAAC,eACFR,IAAA,CAACF,IAAI;QACHgB,CAAC,EAAC,iNAAiN;QACnNN,IAAI,EAAC;MAAM,CACZ,CAAC;IAAA,CACD,CAAC;EAAA,CACD,CAAC;AAEV,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Svg","G","Mask","Path","jsx","_jsx","jsxs","_jsxs","IconThinkingStep","props","width","height","viewBox","fill","children","id","maskUnits","x","y","d","mask"],"sourceRoot":"../../../../src","sources":["assets/svgIcon/IconThinkingStep.tsx"],"mappings":";;AAAA,OAAOA,GAAG,IAAIC,CAAC,EAAEC,IAAI,EAAEC,IAAI,QAAQ,kBAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAOtD,OAAO,MAAMC,gBAAgB,GAAIC,KAAY,IAAK;EAChD,MAAM;IAAEC,KAAK,GAAG,EAAE;IAAEC,MAAM,GAAG;EAAG,CAAC,GAAGF,KAAK,IAAI,CAAC,CAAC;EAC/C,oBACEF,KAAA,CAACP,GAAG;IAACU,KAAK,EAAEA,KAAM;IAACC,MAAM,EAAEA,MAAO;IAACC,OAAO,EAAC,WAAW;IAACC,IAAI,EAAC,MAAM;IAAAC,QAAA,gBAChET,IAAA,CAACH,IAAI;MACHa,EAAE,EAAC,GAAG;MACNC,SAAS,EAAC,gBAAgB;MAC1BC,CAAC,EAAE,CAAC,CAAE;MACNC,CAAC,EAAE,CAAC,CAAE;MACNR,KAAK,EAAE,EAAG;MACVC,MAAM,EAAE,EAAG;MAAAG,QAAA,eAEXT,IAAA,CAACF,IAAI;QAACgB,CAAC,EAAC,oBAAoB;QAACN,IAAI,EAAC;MAAM,CAAE;IAAC,CACvC,CAAC,eACPN,KAAA,CAACN,CAAC;MAACmB,IAAI,EAAC,SAAS;MAAAN,QAAA,gBACfT,IAAA,CAACF,IAAI;QACHgB,CAAC,EAAC,kPAAkP;QACpPN,IAAI,EAAC;MAAS,CACf,CAAC,eACFR,IAAA,CAACF,IAAI;QACHgB,CAAC,EAAC,0MAA0M;QAC5MN,IAAI,EAAC;MAAM,CACZ,CAAC,eACFR,IAAA,CAACF,IAAI;QACHgB,CAAC,EAAC,gQAAgQ;QAClQN,IAAI,EAAC;MAAS,CACf,CAAC,eACFR,IAAA,CAACF,IAAI;QACHgB,CAAC,EAAC,iNAAiN;QACnNN,IAAI,EAAC;MAAM,CACZ,CAAC;IAAA,CACD,CAAC;EAAA,CACD,CAAC;AAEV,CAAC","ignoreList":[]}
@@ -19,6 +19,11 @@ const ChatEmpty = () => {
19
19
  }, 200);
20
20
  return /*#__PURE__*/_jsxs(KContainer.ScrollView, {
21
21
  contentContainerStyle: styles.container,
22
+ style: {
23
+ transform: [{
24
+ scaleY: -1
25
+ }]
26
+ },
22
27
  children: [/*#__PURE__*/_jsx(KLabel.Text, {
23
28
  typo: "TextXLgMedium",
24
29
  center: true,
@@ -34,7 +39,7 @@ const ChatEmpty = () => {
34
39
  typo: "TextMdNormal",
35
40
  center: true,
36
41
  color: KColors.gray.normal,
37
- children: 'Xem qua những gợi ý dành cho bạn:'
42
+ children: 'Những gợi ý dành cho bạn:'
38
43
  })]
39
44
  }), data?.suggestions?.map(item => /*#__PURE__*/_jsx(SuggestionItem, {
40
45
  item: item,
@@ -1 +1 @@
1
- {"version":3,"names":["KColors","KContainer","KLabel","KSpacingValue","StyleSheet","useFetchSuggestions","SuggestionItem","useSendMessage","debounce","jsx","_jsx","jsxs","_jsxs","ChatEmpty","data","onSendMessage","onPress","item","content","ScrollView","contentContainerStyle","styles","container","children","Text","typo","center","View","color","gray","normal","suggestions","map","onPressItem","suggestion_id","light","textAlign","create","flexGrow","justifyContent","alignItems","padding","gap"],"sourceRoot":"../../../../src","sources":["components/chat/ChatEmpty.tsx"],"mappings":";;AAAA,SAASA,OAAO,EAAEC,UAAU,EAAEC,MAAM,EAAEC,aAAa,QAAQ,eAAe;AAC1E,SAASC,UAAU,QAAQ,cAAc;AACzC,SAASC,mBAAmB,QAAQ,gDAA6C;AACjF,OAAOC,cAAc,MAAM,qBAAkB;AAC7C,SAASC,cAAc,QAAQ,uCAAoC;AACnE,OAAOC,QAAQ,MAAM,iBAAiB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAGvC,MAAMC,SAAS,GAAGA,CAAA,KAAM;EACtB,MAAM;IAAEC;EAAK,CAAC,GAAGT,mBAAmB,CAAC,CAAC;EACtC,MAAM;IAAEU;EAAc,CAAC,GAAGR,cAAc,CAAC,CAAC;EAE1C,MAAMS,OAAO,GAAGR,QAAQ,CAAES,IAAqB,IAAK;IAClDF,aAAa,CAACE,IAAI,CAACC,OAAO,CAAC;EAC7B,CAAC,EAAE,GAAG,CAAC;EAEP,oBACEN,KAAA,CAACX,UAAU,CAACkB,UAAU;IAACC,qBAAqB,EAAEC,MAAM,CAACC,SAAU;IAAAC,QAAA,gBAC7Db,IAAA,CAACR,MAAM,CAACsB,IAAI;MAACC,IAAI,EAAC,eAAe;MAACC,MAAM;MAAAH,QAAA,EACrC;IAA4B,CAClB,CAAC,eACdX,KAAA,CAACX,UAAU,CAAC0B,IAAI;MAACD,MAAM;MAAAH,QAAA,gBACrBb,IAAA,CAACR,MAAM,CAACsB,IAAI;QAACC,IAAI,EAAC,cAAc;QAACC,MAAM;QAACE,KAAK,EAAE5B,OAAO,CAAC6B,IAAI,CAACC,MAAO;QAAAP,QAAA,EAChE;MAA8C,CACpC,CAAC,eACdb,IAAA,CAACR,MAAM,CAACsB,IAAI;QAACC,IAAI,EAAC,cAAc;QAACC,MAAM;QAACE,KAAK,EAAE5B,OAAO,CAAC6B,IAAI,CAACC,MAAO;QAAAP,QAAA,EAChE;MAAmC,CACzB,CAAC;IAAA,CACC,CAAC,EACjBT,IAAI,EAAEiB,WAAW,EAAEC,GAAG,CAAEf,IAAqB,iBAC5CP,IAAA,CAACJ,cAAc;MAEbW,IAAI,EAAEA,IAAK;MACXgB,WAAW,EAAEjB;IAAQ,GAFhBC,IAAI,CAACiB,aAGX,CACF,CAAC,eACFxB,IAAA,CAACR,MAAM,CAACsB,IAAI;MACVC,IAAI,EAAC,cAAc;MACnBG,KAAK,EAAE5B,OAAO,CAAC6B,IAAI,CAACM,KAAM;MAC1BC,SAAS,EAAC,QAAQ;MAAAb,QAAA,EAGhB;IAAgG,CAEvF,CAAC;EAAA,CACO,CAAC;AAE5B,CAAC;AAED,eAAeV,SAAS;AAExB,MAAMQ,MAAM,GAAGjB,UAAU,CAACiC,MAAM,CAAC;EAC/Bf,SAAS,EAAE;IACTgB,QAAQ,EAAE,CAAC;IACXC,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE,QAAQ;IACpBC,OAAO,EAAEtC,aAAa,CAAC,SAAS,CAAC;IACjCuC,GAAG,EAAEvC,aAAa,CAAC,QAAQ;EAC7B;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["KColors","KContainer","KLabel","KSpacingValue","StyleSheet","useFetchSuggestions","SuggestionItem","useSendMessage","debounce","jsx","_jsx","jsxs","_jsxs","ChatEmpty","data","onSendMessage","onPress","item","content","ScrollView","contentContainerStyle","styles","container","style","transform","scaleY","children","Text","typo","center","View","color","gray","normal","suggestions","map","onPressItem","suggestion_id","light","textAlign","create","flexGrow","justifyContent","alignItems","padding","gap"],"sourceRoot":"../../../../src","sources":["components/chat/ChatEmpty.tsx"],"mappings":";;AAAA,SAASA,OAAO,EAAEC,UAAU,EAAEC,MAAM,EAAEC,aAAa,QAAQ,eAAe;AAC1E,SAASC,UAAU,QAAQ,cAAc;AACzC,SAASC,mBAAmB,QAAQ,gDAA6C;AACjF,OAAOC,cAAc,MAAM,qBAAkB;AAC7C,SAASC,cAAc,QAAQ,uCAAoC;AACnE,OAAOC,QAAQ,MAAM,iBAAiB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAGvC,MAAMC,SAAS,GAAGA,CAAA,KAAM;EACtB,MAAM;IAAEC;EAAK,CAAC,GAAGT,mBAAmB,CAAC,CAAC;EACtC,MAAM;IAAEU;EAAc,CAAC,GAAGR,cAAc,CAAC,CAAC;EAE1C,MAAMS,OAAO,GAAGR,QAAQ,CAAES,IAAqB,IAAK;IAClDF,aAAa,CAACE,IAAI,CAACC,OAAO,CAAC;EAC7B,CAAC,EAAE,GAAG,CAAC;EAEP,oBACEN,KAAA,CAACX,UAAU,CAACkB,UAAU;IACpBC,qBAAqB,EAAEC,MAAM,CAACC,SAAU;IACxCC,KAAK,EAAE;MAAEC,SAAS,EAAE,CAAC;QAAEC,MAAM,EAAE,CAAC;MAAE,CAAC;IAAE,CAAE;IAAAC,QAAA,gBAEvChB,IAAA,CAACR,MAAM,CAACyB,IAAI;MAACC,IAAI,EAAC,eAAe;MAACC,MAAM;MAAAH,QAAA,EACrC;IAA4B,CAClB,CAAC,eACdd,KAAA,CAACX,UAAU,CAAC6B,IAAI;MAACD,MAAM;MAAAH,QAAA,gBACrBhB,IAAA,CAACR,MAAM,CAACyB,IAAI;QAACC,IAAI,EAAC,cAAc;QAACC,MAAM;QAACE,KAAK,EAAE/B,OAAO,CAACgC,IAAI,CAACC,MAAO;QAAAP,QAAA,EAChE;MAA8C,CACpC,CAAC,eACdhB,IAAA,CAACR,MAAM,CAACyB,IAAI;QAACC,IAAI,EAAC,cAAc;QAACC,MAAM;QAACE,KAAK,EAAE/B,OAAO,CAACgC,IAAI,CAACC,MAAO;QAAAP,QAAA,EAChE;MAA2B,CACjB,CAAC;IAAA,CACC,CAAC,EACjBZ,IAAI,EAAEoB,WAAW,EAAEC,GAAG,CAAElB,IAAqB,iBAC5CP,IAAA,CAACJ,cAAc;MAEbW,IAAI,EAAEA,IAAK;MACXmB,WAAW,EAAEpB;IAAQ,GAFhBC,IAAI,CAACoB,aAGX,CACF,CAAC,eACF3B,IAAA,CAACR,MAAM,CAACyB,IAAI;MACVC,IAAI,EAAC,cAAc;MACnBG,KAAK,EAAE/B,OAAO,CAACgC,IAAI,CAACM,KAAM;MAC1BC,SAAS,EAAC,QAAQ;MAAAb,QAAA,EAGhB;IAAgG,CAEvF,CAAC;EAAA,CACO,CAAC;AAE5B,CAAC;AAED,eAAeb,SAAS;AAExB,MAAMQ,MAAM,GAAGjB,UAAU,CAACoC,MAAM,CAAC;EAC/BlB,SAAS,EAAE;IACTmB,QAAQ,EAAE,CAAC;IACXC,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE,QAAQ;IACpBC,OAAO,EAAEzC,aAAa,CAAC,SAAS,CAAC;IACjC0C,GAAG,EAAE1C,aAAa,CAAC,QAAQ;EAC7B;AACF,CAAC,CAAC","ignoreList":[]}
@@ -1,19 +1,43 @@
1
1
  "use strict";
2
2
 
3
- import { FlatList, StyleSheet } from 'react-native';
3
+ import { FlatList, StyleSheet, DeviceEventEmitter } from 'react-native';
4
4
  import ChatEmpty from "./ChatEmpty.js";
5
5
  import { useMessage } from "../../hooks/message/useMessage.js";
6
6
  import ChatItem from "./item/index.js";
7
7
  import { KSpacingValue } from '@droppii/libs';
8
+ import { useCallback, useRef } from 'react';
9
+ import { useEffect } from 'react';
10
+ import { events } from "../../constants/events.js";
8
11
  import { jsx as _jsx } from "react/jsx-runtime";
9
12
  const ChatMessageList = () => {
10
13
  const {
11
14
  messageState
12
15
  } = useMessage();
13
- if (!messageState?.messages?.length) {
14
- return /*#__PURE__*/_jsx(ChatEmpty, {});
15
- }
16
+ const flatListRef = useRef(null);
17
+ const scrollOffsetRef = useRef(0);
18
+ const onScroll = useCallback(event => {
19
+ scrollOffsetRef.current = event?.nativeEvent?.contentOffset?.y;
20
+ }, []);
21
+ useEffect(() => {
22
+ const subExpandThinkingStep = DeviceEventEmitter.addListener(events.expandThinkingStep, isExpand => {
23
+ try {
24
+ const scrollToOffset = flatListRef.current?.scrollToOffset({
25
+ offset: scrollOffsetRef.current + (isExpand ? 60 : -60),
26
+ animated: true
27
+ });
28
+ setTimeout(() => {
29
+ scrollToOffset?.();
30
+ }, 100);
31
+ } catch (error) {
32
+ console.error(error);
33
+ }
34
+ });
35
+ return () => {
36
+ subExpandThinkingStep.remove();
37
+ };
38
+ }, []);
16
39
  return /*#__PURE__*/_jsx(FlatList, {
40
+ ref: flatListRef,
17
41
  data: messageState?.messages || [],
18
42
  renderItem: ({
19
43
  item,
@@ -24,7 +48,9 @@ const ChatMessageList = () => {
24
48
  }),
25
49
  keyExtractor: item => item.id,
26
50
  contentContainerStyle: styles.container,
27
- inverted: true
51
+ inverted: true,
52
+ ListEmptyComponent: /*#__PURE__*/_jsx(ChatEmpty, {}),
53
+ onScroll: onScroll
28
54
  });
29
55
  };
30
56
  export default ChatMessageList;
@@ -32,7 +58,8 @@ const styles = StyleSheet.create({
32
58
  container: {
33
59
  flexGrow: 1,
34
60
  gap: KSpacingValue['0.5rem'],
35
- paddingVertical: KSpacingValue['1rem']
61
+ paddingVertical: KSpacingValue['1rem'],
62
+ justifyContent: 'flex-end'
36
63
  }
37
64
  });
38
65
  //# sourceMappingURL=ChatMessageList.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["FlatList","StyleSheet","ChatEmpty","useMessage","ChatItem","KSpacingValue","jsx","_jsx","ChatMessageList","messageState","messages","length","data","renderItem","item","index","keyExtractor","id","contentContainerStyle","styles","container","inverted","create","flexGrow","gap","paddingVertical"],"sourceRoot":"../../../../src","sources":["components/chat/ChatMessageList.tsx"],"mappings":";;AAAA,SAASA,QAAQ,EAAEC,UAAU,QAAQ,cAAc;AACnD,OAAOC,SAAS,MAAM,gBAAa;AACnC,SAASC,UAAU,QAAQ,mCAAgC;AAC3D,OAAOC,QAAQ,MAAM,iBAAQ;AAC7B,SAASC,aAAa,QAAQ,eAAe;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAG9C,MAAMC,eAAe,GAAGA,CAAA,KAAM;EAC5B,MAAM;IAAEC;EAAa,CAAC,GAAGN,UAAU,CAAC,CAAC;EAErC,IAAI,CAACM,YAAY,EAAEC,QAAQ,EAAEC,MAAM,EAAE;IACnC,oBAAOJ,IAAA,CAACL,SAAS,IAAE,CAAC;EACtB;EACA,oBACEK,IAAA,CAACP,QAAQ;IACPY,IAAI,EAAEH,YAAY,EAAEC,QAAQ,IAAI,EAAG;IACnCG,UAAU,EAAEA,CAAC;MAAEC,IAAI;MAAEC;IAA6C,CAAC,kBACjER,IAAA,CAACH,QAAQ;MAACU,IAAI,EAAEA,IAAK;MAACC,KAAK,EAAEA;IAAM,CAAE,CACrC;IACFC,YAAY,EAAGF,IAAkB,IAAKA,IAAI,CAACG,EAAG;IAC9CC,qBAAqB,EAAEC,MAAM,CAACC,SAAU;IACxCC,QAAQ;EAAA,CACT,CAAC;AAEN,CAAC;AAED,eAAeb,eAAe;AAE9B,MAAMW,MAAM,GAAGlB,UAAU,CAACqB,MAAM,CAAC;EAC/BF,SAAS,EAAE;IACTG,QAAQ,EAAE,CAAC;IACXC,GAAG,EAAEnB,aAAa,CAAC,QAAQ,CAAC;IAC5BoB,eAAe,EAAEpB,aAAa,CAAC,MAAM;EACvC;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["FlatList","StyleSheet","DeviceEventEmitter","ChatEmpty","useMessage","ChatItem","KSpacingValue","useCallback","useRef","useEffect","events","jsx","_jsx","ChatMessageList","messageState","flatListRef","scrollOffsetRef","onScroll","event","current","nativeEvent","contentOffset","y","subExpandThinkingStep","addListener","expandThinkingStep","isExpand","scrollToOffset","offset","animated","setTimeout","error","console","remove","ref","data","messages","renderItem","item","index","keyExtractor","id","contentContainerStyle","styles","container","inverted","ListEmptyComponent","create","flexGrow","gap","paddingVertical","justifyContent"],"sourceRoot":"../../../../src","sources":["components/chat/ChatMessageList.tsx"],"mappings":";;AAAA,SAASA,QAAQ,EAAEC,UAAU,EAAEC,kBAAkB,QAAQ,cAAc;AACvE,OAAOC,SAAS,MAAM,gBAAa;AACnC,SAASC,UAAU,QAAQ,mCAAgC;AAC3D,OAAOC,QAAQ,MAAM,iBAAQ;AAC7B,SAASC,aAAa,QAAQ,eAAe;AAE7C,SAASC,WAAW,EAAEC,MAAM,QAAQ,OAAO;AAC3C,SAASC,SAAS,QAAQ,OAAO;AACjC,SAASC,MAAM,QAAQ,2BAAwB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEhD,MAAMC,eAAe,GAAGA,CAAA,KAAM;EAC5B,MAAM;IAAEC;EAAa,CAAC,GAAGV,UAAU,CAAC,CAAC;EAErC,MAAMW,WAAW,GAAGP,MAAM,CAAM,IAAI,CAAC;EACrC,MAAMQ,eAAe,GAAGR,MAAM,CAAC,CAAC,CAAC;EAEjC,MAAMS,QAAQ,GAAGV,WAAW,CAAEW,KAAU,IAAK;IAC3CF,eAAe,CAACG,OAAO,GAAGD,KAAK,EAAEE,WAAW,EAAEC,aAAa,EAAEC,CAAC;EAChE,CAAC,EAAE,EAAE,CAAC;EAENb,SAAS,CAAC,MAAM;IACd,MAAMc,qBAAqB,GAAGrB,kBAAkB,CAACsB,WAAW,CAC1Dd,MAAM,CAACe,kBAAkB,EACxBC,QAAiB,IAAK;MACrB,IAAI;QACF,MAAMC,cAAc,GAAGZ,WAAW,CAACI,OAAO,EAAEQ,cAAc,CAAC;UACzDC,MAAM,EAAEZ,eAAe,CAACG,OAAO,IAAIO,QAAQ,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;UACvDG,QAAQ,EAAE;QACZ,CAAC,CAAC;QACFC,UAAU,CAAC,MAAM;UACfH,cAAc,GAAG,CAAC;QACpB,CAAC,EAAE,GAAG,CAAC;MACT,CAAC,CAAC,OAAOI,KAAK,EAAE;QACdC,OAAO,CAACD,KAAK,CAACA,KAAK,CAAC;MACtB;IACF,CACF,CAAC;IAED,OAAO,MAAM;MACXR,qBAAqB,CAACU,MAAM,CAAC,CAAC;IAChC,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,oBACErB,IAAA,CAACZ,QAAQ;IACPkC,GAAG,EAAEnB,WAAY;IACjBoB,IAAI,EAAErB,YAAY,EAAEsB,QAAQ,IAAI,EAAG;IACnCC,UAAU,EAAEA,CAAC;MAAEC,IAAI;MAAEC;IAA6C,CAAC,kBACjE3B,IAAA,CAACP,QAAQ;MAACiC,IAAI,EAAEA,IAAK;MAACC,KAAK,EAAEA;IAAM,CAAE,CACrC;IACFC,YAAY,EAAGF,IAAkB,IAAKA,IAAI,CAACG,EAAG;IAC9CC,qBAAqB,EAAEC,MAAM,CAACC,SAAU;IACxCC,QAAQ;IACRC,kBAAkB,eAAElC,IAAA,CAACT,SAAS,IAAE,CAAE;IAClCc,QAAQ,EAAEA;EAAS,CACpB,CAAC;AAEN,CAAC;AAED,eAAeJ,eAAe;AAE9B,MAAM8B,MAAM,GAAG1C,UAAU,CAAC8C,MAAM,CAAC;EAC/BH,SAAS,EAAE;IACTI,QAAQ,EAAE,CAAC;IACXC,GAAG,EAAE3C,aAAa,CAAC,QAAQ,CAAC;IAC5B4C,eAAe,EAAE5C,aAAa,CAAC,MAAM,CAAC;IACtC6C,cAAc,EAAE;EAClB;AACF,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,328 @@
1
+ "use strict";
2
+
3
+ import { KButton, KColors, KContainer, KImage, KInput, KLabel, KRadiusValue, KSpacingValue } from '@droppii/libs';
4
+ import { useCallback, useState, useRef, useMemo } from 'react';
5
+ import { FlatList, StyleSheet, TouchableWithoutFeedback } from 'react-native';
6
+ import debounce from 'lodash/debounce';
7
+ import { useSendMessage } from "../../../hooks/message/useSendMessage.js";
8
+ import useStreamMessageStore from "../../../store/streamMessage.js";
9
+ import { Menu, MenuTrigger, MenuOption, MenuOptions, renderers } from 'react-native-popup-menu';
10
+ import { openCameraPicker, openDocumentPicker, openImageMultiplePicker } from "../../../utils/device.js";
11
+ import UploadImageItem from "./item/UploadImageItem.js";
12
+ import { isSameFile, shortenFileName } from "../../../utils/common.js";
13
+ import { types } from '@react-native-documents/picker';
14
+ import UploadFileItem from "./item/UploadFileItem.js";
15
+ import UIUtils from "../../../utils/ui.js";
16
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
17
+ const {
18
+ Popover
19
+ } = renderers;
20
+ const MAX_FILE_UPLOAD = 3;
21
+ const MAX_FILE_SIZE = 30 * 1024 * 1024;
22
+ const MAX_IMAGE_SIZE = 7 * 1024 * 1024;
23
+ const ChatFooter = () => {
24
+ const menuRef = useRef(null);
25
+ const {
26
+ onSendMessage,
27
+ stopStream
28
+ } = useSendMessage();
29
+ const [message, setMessage] = useState('');
30
+ const isStreaming = useStreamMessageStore(state => state.isStreaming);
31
+ const [fileUpload, setFileUpload] = useState([]);
32
+ const debouncedMessage = debounce(message => {
33
+ setMessage(message);
34
+ }, 200);
35
+ const isDisabledSend = useMemo(() => {
36
+ return isStreaming || message.trim() === '' || fileUpload.length > 0 && fileUpload.some(i => !i.remoteUrl);
37
+ }, [isStreaming, message, fileUpload]);
38
+ const onPressImagePicker = useCallback(async () => {
39
+ if (fileUpload.filter(i => i.uploadType === 'image').length >= MAX_FILE_UPLOAD) {
40
+ UIUtils.toast.open({
41
+ title: `Chỉ được gửi tối đa ${MAX_FILE_UPLOAD} hình ảnh`
42
+ });
43
+ return;
44
+ }
45
+ const newImages = (await openImageMultiplePicker({
46
+ maxFiles: MAX_FILE_UPLOAD - fileUpload.length > 0 ? MAX_FILE_UPLOAD - fileUpload.length : 1
47
+ })) || [];
48
+ const uniqueImages = newImages.filter(img => !fileUpload.some(sel => isSameFile(sel, img))).map(i => ({
49
+ ...i,
50
+ uploadType: 'image'
51
+ })).slice(0, MAX_FILE_UPLOAD - fileUpload.length);
52
+ if (uniqueImages?.length > 0) {
53
+ setFileUpload(prev => {
54
+ const totalImages = prev.filter(i => i.uploadType === 'image');
55
+ const totalPrevSize = totalImages.reduce((acc, item) => acc + (item.size || 0), 0);
56
+ const totalNewSize = uniqueImages.reduce((acc, item) => acc + (item.size || 0), 0);
57
+ if (totalPrevSize + totalNewSize > MAX_IMAGE_SIZE) {
58
+ UIUtils.toast.open({
59
+ title: `Tổng dung lượng ảnh tải lên có kích thước quá lớn:\n ${uniqueImages.map(i => shortenFileName(i.filename || '')).join(',\n')}, \nVui lòng nén ảnh hoặc tải lên nhiều lần để tiếp tục.`,
60
+ theme: 'danger'
61
+ });
62
+ return prev;
63
+ }
64
+ return [...prev, ...uniqueImages];
65
+ });
66
+ }
67
+ }, [fileUpload]);
68
+ const onPressCameraPicker = useCallback(async () => {
69
+ if (fileUpload.filter(i => i.uploadType === 'image').length >= MAX_FILE_UPLOAD) {
70
+ UIUtils.toast.open({
71
+ title: `Chỉ được gửi tối đa ${MAX_FILE_UPLOAD} hình ảnh`
72
+ });
73
+ return;
74
+ }
75
+ const newImage = await openCameraPicker();
76
+ if (newImage) {
77
+ setFileUpload(prev => {
78
+ const totalImages = prev.filter(i => i.uploadType === 'image');
79
+ const totalPrevSize = totalImages.reduce((acc, item) => acc + (item.size || 0), 0);
80
+ const totalNewSize = newImage.size || 0;
81
+ if (totalPrevSize + totalNewSize > MAX_IMAGE_SIZE) {
82
+ UIUtils.toast.open({
83
+ title: `Tổng dung lượng ảnh tải lên có kích thước quá lớn:\n ${shortenFileName(newImage.filename || '')},\n Vui lòng nén ảnh hoặc tải lên nhiều lần để tiếp tục.`,
84
+ theme: 'danger'
85
+ });
86
+ return prev;
87
+ }
88
+ return [...prev, {
89
+ ...newImage,
90
+ uploadType: 'image'
91
+ }];
92
+ });
93
+ }
94
+ }, [fileUpload]);
95
+ const menuItems = useMemo(() => {
96
+ return [{
97
+ icon: 'image-o',
98
+ onPress: onPressImagePicker,
99
+ label: 'Thư viện ảnh'
100
+ }, {
101
+ icon: 'camera-o',
102
+ onPress: onPressCameraPicker,
103
+ label: 'Chụp ảnh'
104
+ }];
105
+ }, [onPressImagePicker, onPressCameraPicker]);
106
+ const onPressSend = useCallback(() => {
107
+ if (isStreaming) {
108
+ stopStream();
109
+ return;
110
+ }
111
+ const attachments = fileUpload.map(i => ({
112
+ type: i.uploadType,
113
+ source_type: 'url',
114
+ data: i.remoteUrl || '',
115
+ name: i.uploadType === 'image' ? i.filename : i.name,
116
+ size: i.size || null,
117
+ mime_type: i.uploadType === 'image' ? i.mime : i.type
118
+ }));
119
+ onSendMessage(message?.trim(), attachments);
120
+ setMessage('');
121
+ setFileUpload([]);
122
+ }, [message, isStreaming, onSendMessage, stopStream, fileUpload]);
123
+ const handleUploadSuccess = useCallback(item => {
124
+ if (item.uploadType === 'image') {
125
+ setFileUpload(prev => {
126
+ const next = [...prev];
127
+ const fileIndex = next.findIndex(i => i.uploadType === 'image' && i?.path === item?.path);
128
+ if (fileIndex > -1) {
129
+ next[fileIndex] = {
130
+ ...next[fileIndex],
131
+ ...item
132
+ };
133
+ }
134
+ return next;
135
+ });
136
+ } else {
137
+ setFileUpload(prev => {
138
+ const next = [...prev];
139
+ const fileIndex = next.findIndex(i => i.uploadType === 'file' && i?.uri === item?.uri);
140
+ if (fileIndex > -1) {
141
+ next[fileIndex] = {
142
+ ...next[fileIndex],
143
+ ...item
144
+ };
145
+ }
146
+ return next;
147
+ });
148
+ }
149
+ }, []);
150
+ const handleRemoveUploadItem = useCallback(item => {
151
+ if (item.uploadType === 'image') {
152
+ setFileUpload(prev => prev.filter(i => i.uploadType !== 'image' || i.path !== item.path));
153
+ } else {
154
+ setFileUpload(prev => prev.filter(i => i.uploadType !== 'file' || i.uri !== item.uri));
155
+ }
156
+ }, []);
157
+ const renderUploadItem = useCallback(item => {
158
+ switch (item.uploadType) {
159
+ case 'image':
160
+ return /*#__PURE__*/_jsx(UploadImageItem, {
161
+ item: item,
162
+ onRemove: handleRemoveUploadItem,
163
+ onSuccess: handleUploadSuccess
164
+ });
165
+ case 'file':
166
+ return /*#__PURE__*/_jsx(UploadFileItem, {
167
+ item: item,
168
+ onRemove: handleRemoveUploadItem,
169
+ onSuccess: handleUploadSuccess
170
+ });
171
+ default:
172
+ return null;
173
+ }
174
+ }, [handleRemoveUploadItem, handleUploadSuccess]);
175
+ const handlePressDocumentPicker = useCallback(async () => {
176
+ const listFiles = fileUpload.filter(i => i.uploadType === 'file');
177
+ if (listFiles.length >= MAX_FILE_UPLOAD) {
178
+ UIUtils.toast.open({
179
+ title: `Chỉ được gửi tối đa ${MAX_FILE_UPLOAD} tệp`
180
+ });
181
+ return;
182
+ }
183
+ const newDocument = await openDocumentPicker({
184
+ type: types.pdf
185
+ });
186
+ const isUnique = listFiles.some(doc => doc.uploadType === 'file' && doc.uri !== newDocument?.uri);
187
+ if (!!newDocument && isUnique) {
188
+ setFileUpload(prev => {
189
+ const totalPrevSize = prev.reduce((acc, item) => acc + (item.size || 0), 0);
190
+ const totalNewSize = newDocument.size || 0;
191
+ if (totalPrevSize + totalNewSize > MAX_FILE_SIZE) {
192
+ UIUtils.toast.open({
193
+ title: `Tổng dung lượng tệp tải lên có kích thước quá lớn:\n ${shortenFileName(newDocument.name || '')},\n Vui lòng nén tệp hoặc tải lên nhiều lần để tiếp tục.`,
194
+ theme: 'danger'
195
+ });
196
+ return prev;
197
+ }
198
+ return [...prev, {
199
+ ...newDocument,
200
+ uploadType: 'file'
201
+ }];
202
+ });
203
+ }
204
+ }, [fileUpload]);
205
+ return /*#__PURE__*/_jsxs(KContainer.View, {
206
+ style: styles.container,
207
+ children: [/*#__PURE__*/_jsx(KContainer.VisibleView, {
208
+ visible: fileUpload.length > 0,
209
+ children: /*#__PURE__*/_jsx(FlatList, {
210
+ data: fileUpload,
211
+ renderItem: ({
212
+ item
213
+ }) => renderUploadItem(item),
214
+ horizontal: true,
215
+ keyExtractor: item => item.uploadType === 'image' ? item.path : item.uri,
216
+ contentContainerStyle: styles.listUploadItem
217
+ })
218
+ }), /*#__PURE__*/_jsx(KInput.TextArea, {
219
+ paddingV: '0.25rem',
220
+ paddingH: '0.25rem',
221
+ placeholder: "B\u1EA1n mu\u1ED1n h\u1ECFi g\xEC h\xF4m nay?",
222
+ clearButtonMode: "hidden",
223
+ onChangeText: debouncedMessage,
224
+ value: message,
225
+ multiline: true,
226
+ style: styles.input,
227
+ blurOnSubmit: false,
228
+ textAlignVertical: "top"
229
+ }), /*#__PURE__*/_jsxs(KContainer.View, {
230
+ style: styles.actions,
231
+ children: [/*#__PURE__*/_jsxs(Menu, {
232
+ ref: menuRef,
233
+ renderer: Popover,
234
+ rendererProps: {
235
+ placement: 'top',
236
+ anchorStyle: {
237
+ display: 'none'
238
+ }
239
+ },
240
+ children: [/*#__PURE__*/_jsx(MenuTrigger, {
241
+ customStyles: {
242
+ TriggerTouchableComponent: TouchableWithoutFeedback
243
+ },
244
+ children: /*#__PURE__*/_jsx(KImage.VectorIcons, {
245
+ name: "image-o",
246
+ size: 24,
247
+ color: KColors.gray.dark
248
+ })
249
+ }), /*#__PURE__*/_jsx(MenuOptions, {
250
+ optionsContainerStyle: styles.popover,
251
+ children: menuItems.map(i => /*#__PURE__*/_jsxs(MenuOption, {
252
+ onSelect: i.onPress,
253
+ style: styles.menuItem,
254
+ children: [/*#__PURE__*/_jsx(KLabel.Text, {
255
+ typo: "TextMdMedium",
256
+ children: i.label
257
+ }), /*#__PURE__*/_jsx(KImage.VectorIcons, {
258
+ name: i.icon
259
+ })]
260
+ }, i.icon))
261
+ })]
262
+ }), /*#__PURE__*/_jsx(KContainer.Touchable, {
263
+ onPress: handlePressDocumentPicker,
264
+ children: /*#__PURE__*/_jsx(KImage.VectorIcons, {
265
+ name: "paperclip-o",
266
+ size: 24,
267
+ color: KColors.gray.dark
268
+ })
269
+ }), /*#__PURE__*/_jsx(KContainer.View, {
270
+ flex: true
271
+ }), /*#__PURE__*/_jsx(KButton.Solid, {
272
+ kind: "primary",
273
+ icon: {
274
+ vectorName: isStreaming ? 'square-b' : 'send-b',
275
+ size: 20,
276
+ tintColor: KColors.white
277
+ },
278
+ onPress: onPressSend,
279
+ br: "round",
280
+ disabled: isDisabledSend
281
+ })]
282
+ })]
283
+ });
284
+ };
285
+ export default ChatFooter;
286
+ const styles = StyleSheet.create({
287
+ container: {
288
+ paddingHorizontal: KSpacingValue['0.75rem'],
289
+ paddingVertical: KSpacingValue['0.5rem'],
290
+ gap: KSpacingValue['0.5rem'],
291
+ borderWidth: 1,
292
+ borderColor: KColors.hexToRgba(KColors.black, 0.15),
293
+ borderBottomWidth: 0,
294
+ borderTopLeftRadius: KSpacingValue['1.25rem'],
295
+ borderTopRightRadius: KSpacingValue['1.25rem']
296
+ },
297
+ actions: {
298
+ flexDirection: 'row',
299
+ alignItems: 'center',
300
+ gap: KSpacingValue['1rem']
301
+ },
302
+ sendButton: {
303
+ alignSelf: 'flex-end'
304
+ },
305
+ input: {
306
+ maxHeight: 100
307
+ },
308
+ popover: {
309
+ borderRadius: KRadiusValue['4x'],
310
+ backgroundColor: KColors.white,
311
+ width: 200
312
+ },
313
+ menuItem: {
314
+ paddingHorizontal: KSpacingValue['1rem'],
315
+ flexDirection: 'row',
316
+ alignItems: 'center',
317
+ paddingVertical: KSpacingValue['0.75rem'],
318
+ borderBottomWidth: 1,
319
+ borderBottomColor: KColors.border.normal,
320
+ gap: KSpacingValue['0.5rem'],
321
+ justifyContent: 'space-between'
322
+ },
323
+ listUploadItem: {
324
+ gap: KSpacingValue['0.75rem'],
325
+ paddingTop: 6
326
+ }
327
+ });
328
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["KButton","KColors","KContainer","KImage","KInput","KLabel","KRadiusValue","KSpacingValue","useCallback","useState","useRef","useMemo","FlatList","StyleSheet","TouchableWithoutFeedback","debounce","useSendMessage","useStreamMessageStore","Menu","MenuTrigger","MenuOption","MenuOptions","renderers","openCameraPicker","openDocumentPicker","openImageMultiplePicker","UploadImageItem","isSameFile","shortenFileName","types","UploadFileItem","UIUtils","jsx","_jsx","jsxs","_jsxs","Popover","MAX_FILE_UPLOAD","MAX_FILE_SIZE","MAX_IMAGE_SIZE","ChatFooter","menuRef","onSendMessage","stopStream","message","setMessage","isStreaming","state","fileUpload","setFileUpload","debouncedMessage","isDisabledSend","trim","length","some","i","remoteUrl","onPressImagePicker","filter","uploadType","toast","open","title","newImages","maxFiles","uniqueImages","img","sel","map","slice","prev","totalImages","totalPrevSize","reduce","acc","item","size","totalNewSize","filename","join","theme","onPressCameraPicker","newImage","menuItems","icon","onPress","label","onPressSend","attachments","type","source_type","data","name","mime_type","mime","handleUploadSuccess","next","fileIndex","findIndex","path","uri","handleRemoveUploadItem","renderUploadItem","onRemove","onSuccess","handlePressDocumentPicker","listFiles","newDocument","pdf","isUnique","doc","View","style","styles","container","children","VisibleView","visible","renderItem","horizontal","keyExtractor","contentContainerStyle","listUploadItem","TextArea","paddingV","paddingH","placeholder","clearButtonMode","onChangeText","value","multiline","input","blurOnSubmit","textAlignVertical","actions","ref","renderer","rendererProps","placement","anchorStyle","display","customStyles","TriggerTouchableComponent","VectorIcons","color","gray","dark","optionsContainerStyle","popover","onSelect","menuItem","Text","typo","Touchable","flex","Solid","kind","vectorName","tintColor","white","br","disabled","create","paddingHorizontal","paddingVertical","gap","borderWidth","borderColor","hexToRgba","black","borderBottomWidth","borderTopLeftRadius","borderTopRightRadius","flexDirection","alignItems","sendButton","alignSelf","maxHeight","borderRadius","backgroundColor","width","borderBottomColor","border","normal","justifyContent","paddingTop"],"sourceRoot":"../../../../../src","sources":["components/chat/footer/index.tsx"],"mappings":";;AAAA,SACEA,OAAO,EACPC,OAAO,EACPC,UAAU,EACVC,MAAM,EACNC,MAAM,EACNC,MAAM,EACNC,YAAY,EACZC,aAAa,QACR,eAAe;AACtB,SAASC,WAAW,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,OAAO,QAAQ,OAAO;AAC9D,SAASC,QAAQ,EAAEC,UAAU,EAAEC,wBAAwB,QAAQ,cAAc;AAC7E,OAAOC,QAAQ,MAAM,iBAAiB;AACtC,SAASC,cAAc,QAAQ,0CAAuC;AACtE,OAAOC,qBAAqB,MAAM,iCAA8B;AAChE,SACEC,IAAI,EACJC,WAAW,EACXC,UAAU,EACVC,WAAW,EACXC,SAAS,QACJ,yBAAyB;AAChC,SACEC,gBAAgB,EAChBC,kBAAkB,EAClBC,uBAAuB,QAClB,0BAAuB;AAE9B,OAAOC,eAAe,MAAM,2BAAwB;AACpD,SAASC,UAAU,EAAEC,eAAe,QAAQ,0BAAuB;AACnE,SAAiCC,KAAK,QAAQ,gCAAgC;AAC9E,OAAOC,cAAc,MAAM,0BAAuB;AAElD,OAAOC,OAAO,MAAM,sBAAmB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAExC,MAAM;EAAEC;AAAQ,CAAC,GAAGd,SAAS;AAe7B,MAAMe,eAAe,GAAG,CAAC;AACzB,MAAMC,aAAa,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI;AACtC,MAAMC,cAAc,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI;AAEtC,MAAMC,UAAU,GAAGA,CAAA,KAAM;EACvB,MAAMC,OAAO,GAAG/B,MAAM,CAAC,IAAI,CAAC;EAC5B,MAAM;IAAEgC,aAAa;IAAEC;EAAW,CAAC,GAAG3B,cAAc,CAAC,CAAC;EACtD,MAAM,CAAC4B,OAAO,EAAEC,UAAU,CAAC,GAAGpC,QAAQ,CAAC,EAAE,CAAC;EAC1C,MAAMqC,WAAW,GAAG7B,qBAAqB,CAAE8B,KAAK,IAAKA,KAAK,CAACD,WAAW,CAAC;EACvE,MAAM,CAACE,UAAU,EAAEC,aAAa,CAAC,GAAGxC,QAAQ,CAAe,EAAE,CAAC;EAE9D,MAAMyC,gBAAgB,GAAGnC,QAAQ,CAAE6B,OAAe,IAAK;IACrDC,UAAU,CAACD,OAAO,CAAC;EACrB,CAAC,EAAE,GAAG,CAAC;EAEP,MAAMO,cAAc,GAAGxC,OAAO,CAAC,MAAM;IACnC,OACEmC,WAAW,IACXF,OAAO,CAACQ,IAAI,CAAC,CAAC,KAAK,EAAE,IACpBJ,UAAU,CAACK,MAAM,GAAG,CAAC,IAAIL,UAAU,CAACM,IAAI,CAAEC,CAAC,IAAK,CAACA,CAAC,CAACC,SAAS,CAAE;EAEnE,CAAC,EAAE,CAACV,WAAW,EAAEF,OAAO,EAAEI,UAAU,CAAC,CAAC;EAEtC,MAAMS,kBAAkB,GAAGjD,WAAW,CAAC,YAAY;IACjD,IACEwC,UAAU,CAACU,MAAM,CAAEH,CAAC,IAAKA,CAAC,CAACI,UAAU,KAAK,OAAO,CAAC,CAACN,MAAM,IACzDhB,eAAe,EACf;MACAN,OAAO,CAAC6B,KAAK,CAACC,IAAI,CAAC;QACjBC,KAAK,EAAE,uBAAuBzB,eAAe;MAC/C,CAAC,CAAC;MACF;IACF;IACA,MAAM0B,SAAS,GACb,CAAC,MAAMtC,uBAAuB,CAAC;MAC7BuC,QAAQ,EACN3B,eAAe,GAAGW,UAAU,CAACK,MAAM,GAAG,CAAC,GACnChB,eAAe,GAAGW,UAAU,CAACK,MAAM,GACnC;IACR,CAAC,CAAC,KAAK,EAAE;IACX,MAAMY,YAAY,GAAGF,SAAS,CAC3BL,MAAM,CAAEQ,GAAG,IAAK,CAAClB,UAAU,CAACM,IAAI,CAAEa,GAAG,IAAKxC,UAAU,CAACwC,GAAG,EAAED,GAAG,CAAC,CAAC,CAAC,CAChEE,GAAG,CAAEb,CAAC,KAAM;MAAE,GAAGA,CAAC;MAAEI,UAAU,EAAE;IAAQ,CAAC,CAAC,CAAC,CAC3CU,KAAK,CAAC,CAAC,EAAEhC,eAAe,GAAGW,UAAU,CAACK,MAAM,CAAkB;IAEjE,IAAIY,YAAY,EAAEZ,MAAM,GAAG,CAAC,EAAE;MAC5BJ,aAAa,CAAEqB,IAAI,IAAK;QACtB,MAAMC,WAAW,GAAGD,IAAI,CAACZ,MAAM,CAAEH,CAAC,IAAKA,CAAC,CAACI,UAAU,KAAK,OAAO,CAAC;QAChE,MAAMa,aAAa,GAAGD,WAAW,CAACE,MAAM,CACtC,CAACC,GAAG,EAAEC,IAAI,KAAKD,GAAG,IAAIC,IAAI,CAACC,IAAI,IAAI,CAAC,CAAC,EACrC,CACF,CAAC;QACD,MAAMC,YAAY,GAAGZ,YAAY,CAACQ,MAAM,CACtC,CAACC,GAAG,EAAEC,IAAI,KAAKD,GAAG,IAAIC,IAAI,CAACC,IAAI,IAAI,CAAC,CAAC,EACrC,CACF,CAAC;QACD,IAAIJ,aAAa,GAAGK,YAAY,GAAGtC,cAAc,EAAE;UACjDR,OAAO,CAAC6B,KAAK,CAACC,IAAI,CAAC;YACjBC,KAAK,EAAE,wDAAwDG,YAAY,CAACG,GAAG,CAAEb,CAAC,IAAK3B,eAAe,CAAC2B,CAAC,CAACuB,QAAQ,IAAI,EAAE,CAAC,CAAC,CAACC,IAAI,CAAC,KAAK,CAAC,0DAA0D;YAC/LC,KAAK,EAAE;UACT,CAAC,CAAC;UACF,OAAOV,IAAI;QACb;QACA,OAAO,CAAC,GAAGA,IAAI,EAAE,GAAGL,YAAY,CAAC;MACnC,CAAC,CAAC;IACJ;EACF,CAAC,EAAE,CAACjB,UAAU,CAAC,CAAC;EAEhB,MAAMiC,mBAAmB,GAAGzE,WAAW,CAAC,YAAY;IAClD,IACEwC,UAAU,CAACU,MAAM,CAAEH,CAAC,IAAKA,CAAC,CAACI,UAAU,KAAK,OAAO,CAAC,CAACN,MAAM,IACzDhB,eAAe,EACf;MACAN,OAAO,CAAC6B,KAAK,CAACC,IAAI,CAAC;QACjBC,KAAK,EAAE,uBAAuBzB,eAAe;MAC/C,CAAC,CAAC;MACF;IACF;IACA,MAAM6C,QAAQ,GAAG,MAAM3D,gBAAgB,CAAC,CAAC;IACzC,IAAI2D,QAAQ,EAAE;MACZjC,aAAa,CAAEqB,IAAI,IAAK;QACtB,MAAMC,WAAW,GAAGD,IAAI,CAACZ,MAAM,CAAEH,CAAC,IAAKA,CAAC,CAACI,UAAU,KAAK,OAAO,CAAC;QAChE,MAAMa,aAAa,GAAGD,WAAW,CAACE,MAAM,CACtC,CAACC,GAAG,EAAEC,IAAI,KAAKD,GAAG,IAAIC,IAAI,CAACC,IAAI,IAAI,CAAC,CAAC,EACrC,CACF,CAAC;QACD,MAAMC,YAAY,GAAGK,QAAQ,CAACN,IAAI,IAAI,CAAC;QACvC,IAAIJ,aAAa,GAAGK,YAAY,GAAGtC,cAAc,EAAE;UACjDR,OAAO,CAAC6B,KAAK,CAACC,IAAI,CAAC;YACjBC,KAAK,EAAE,wDAAwDlC,eAAe,CAACsD,QAAQ,CAACJ,QAAQ,IAAI,EAAE,CAAC,0DAA0D;YACjKE,KAAK,EAAE;UACT,CAAC,CAAC;UACF,OAAOV,IAAI;QACb;QACA,OAAO,CAAC,GAAGA,IAAI,EAAE;UAAE,GAAGY,QAAQ;UAAEvB,UAAU,EAAE;QAAQ,CAAC,CAAC;MACxD,CAAC,CAAC;IACJ;EACF,CAAC,EAAE,CAACX,UAAU,CAAC,CAAC;EAEhB,MAAMmC,SAAS,GAAGxE,OAAO,CAAC,MAAM;IAC9B,OAAO,CACL;MACEyE,IAAI,EAAE,SAAS;MACfC,OAAO,EAAE5B,kBAAkB;MAC3B6B,KAAK,EAAE;IACT,CAAC,EACD;MACEF,IAAI,EAAE,UAAU;MAChBC,OAAO,EAAEJ,mBAAmB;MAC5BK,KAAK,EAAE;IACT,CAAC,CACF;EACH,CAAC,EAAE,CAAC7B,kBAAkB,EAAEwB,mBAAmB,CAAC,CAAC;EAE7C,MAAMM,WAAW,GAAG/E,WAAW,CAAC,MAAM;IACpC,IAAIsC,WAAW,EAAE;MACfH,UAAU,CAAC,CAAC;MACZ;IACF;IACA,MAAM6C,WAA0B,GAAGxC,UAAU,CAACoB,GAAG,CAAEb,CAAC,KAAM;MACxDkC,IAAI,EAAElC,CAAC,CAACI,UAAU;MAClB+B,WAAW,EAAE,KAAK;MAClBC,IAAI,EAAEpC,CAAC,CAACC,SAAS,IAAI,EAAE;MACvBoC,IAAI,EAAGrC,CAAC,CAACI,UAAU,KAAK,OAAO,GAAGJ,CAAC,CAACuB,QAAQ,GAAGvB,CAAC,CAACqC,IAAe;MAChEhB,IAAI,EAAGrB,CAAC,CAACqB,IAAI,IAAI,IAAe;MAChCiB,SAAS,EAAGtC,CAAC,CAACI,UAAU,KAAK,OAAO,GAChCJ,CAAC,CAACuC,IAAI,GACNvC,CAAC,CAACkC;IACR,CAAC,CAAC,CAAC;IAEH/C,aAAa,CAACE,OAAO,EAAEQ,IAAI,CAAC,CAAC,EAAEoC,WAAW,CAAC;IAC3C3C,UAAU,CAAC,EAAE,CAAC;IACdI,aAAa,CAAC,EAAE,CAAC;EACnB,CAAC,EAAE,CAACL,OAAO,EAAEE,WAAW,EAAEJ,aAAa,EAAEC,UAAU,EAAEK,UAAU,CAAC,CAAC;EAEjE,MAAM+C,mBAAmB,GAAGvF,WAAW,CAAEmE,IAAgB,IAAK;IAC5D,IAAIA,IAAI,CAAChB,UAAU,KAAK,OAAO,EAAE;MAC/BV,aAAa,CAAEqB,IAAI,IAAK;QACtB,MAAM0B,IAAI,GAAG,CAAC,GAAG1B,IAAI,CAAC;QACtB,MAAM2B,SAAS,GAAGD,IAAI,CAACE,SAAS,CAC7B3C,CAAC,IAAKA,CAAC,CAACI,UAAU,KAAK,OAAO,IAAIJ,CAAC,EAAE4C,IAAI,KAAKxB,IAAI,EAAEwB,IACvD,CAAC;QACD,IAAIF,SAAS,GAAG,CAAC,CAAC,EAAE;UAClBD,IAAI,CAACC,SAAS,CAAC,GAAG;YAAE,GAAGD,IAAI,CAACC,SAAS,CAAC;YAAE,GAAGtB;UAAK,CAAC;QACnD;QACA,OAAOqB,IAAI;MACb,CAAC,CAAC;IACJ,CAAC,MAAM;MACL/C,aAAa,CAAEqB,IAAI,IAAK;QACtB,MAAM0B,IAAI,GAAG,CAAC,GAAG1B,IAAI,CAAC;QACtB,MAAM2B,SAAS,GAAGD,IAAI,CAACE,SAAS,CAC7B3C,CAAC,IAAKA,CAAC,CAACI,UAAU,KAAK,MAAM,IAAIJ,CAAC,EAAE6C,GAAG,KAAKzB,IAAI,EAAEyB,GACrD,CAAC;QACD,IAAIH,SAAS,GAAG,CAAC,CAAC,EAAE;UAClBD,IAAI,CAACC,SAAS,CAAC,GAAG;YAAE,GAAGD,IAAI,CAACC,SAAS,CAAC;YAAE,GAAGtB;UAAK,CAAC;QACnD;QACA,OAAOqB,IAAI;MACb,CAAC,CAAC;IACJ;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMK,sBAAsB,GAAG7F,WAAW,CAAEmE,IAAgB,IAAK;IAC/D,IAAIA,IAAI,CAAChB,UAAU,KAAK,OAAO,EAAE;MAC/BV,aAAa,CAAEqB,IAAI,IACjBA,IAAI,CAACZ,MAAM,CAAEH,CAAC,IAAKA,CAAC,CAACI,UAAU,KAAK,OAAO,IAAIJ,CAAC,CAAC4C,IAAI,KAAKxB,IAAI,CAACwB,IAAI,CACrE,CAAC;IACH,CAAC,MAAM;MACLlD,aAAa,CAAEqB,IAAI,IACjBA,IAAI,CAACZ,MAAM,CAAEH,CAAC,IAAKA,CAAC,CAACI,UAAU,KAAK,MAAM,IAAIJ,CAAC,CAAC6C,GAAG,KAAKzB,IAAI,CAACyB,GAAG,CAClE,CAAC;IACH;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,MAAME,gBAAgB,GAAG9F,WAAW,CACjCmE,IAAgB,IAAK;IACpB,QAAQA,IAAI,CAAChB,UAAU;MACrB,KAAK,OAAO;QACV,oBACE1B,IAAA,CAACP,eAAe;UACdiD,IAAI,EAAEA,IAAK;UACX4B,QAAQ,EAAEF,sBAAuB;UACjCG,SAAS,EAAET;QAAoB,CAChC,CAAC;MAEN,KAAK,MAAM;QACT,oBACE9D,IAAA,CAACH,cAAc;UACb6C,IAAI,EAAEA,IAAK;UACX4B,QAAQ,EAAEF,sBAAuB;UACjCG,SAAS,EAAET;QAAoB,CAChC,CAAC;MAEN;QACE,OAAO,IAAI;IACf;EACF,CAAC,EACD,CAACM,sBAAsB,EAAEN,mBAAmB,CAC9C,CAAC;EAED,MAAMU,yBAAyB,GAAGjG,WAAW,CAAC,YAAY;IACxD,MAAMkG,SAAS,GAAG1D,UAAU,CAACU,MAAM,CAAEH,CAAC,IAAKA,CAAC,CAACI,UAAU,KAAK,MAAM,CAAC;IACnE,IAAI+C,SAAS,CAACrD,MAAM,IAAIhB,eAAe,EAAE;MACvCN,OAAO,CAAC6B,KAAK,CAACC,IAAI,CAAC;QACjBC,KAAK,EAAE,uBAAuBzB,eAAe;MAC/C,CAAC,CAAC;MACF;IACF;IACA,MAAMsE,WAAW,GAAG,MAAMnF,kBAAkB,CAAC;MAC3CiE,IAAI,EAAE5D,KAAK,CAAC+E;IACd,CAAC,CAAC;IACF,MAAMC,QAAQ,GAAGH,SAAS,CAACpD,IAAI,CAC5BwD,GAAG,IAAKA,GAAG,CAACnD,UAAU,KAAK,MAAM,IAAImD,GAAG,CAACV,GAAG,KAAKO,WAAW,EAAEP,GACjE,CAAC;IAED,IAAI,CAAC,CAACO,WAAW,IAAIE,QAAQ,EAAE;MAC7B5D,aAAa,CAAEqB,IAAI,IAAK;QACtB,MAAME,aAAa,GAAGF,IAAI,CAACG,MAAM,CAC/B,CAACC,GAAG,EAAEC,IAAI,KAAKD,GAAG,IAAIC,IAAI,CAACC,IAAI,IAAI,CAAC,CAAC,EACrC,CACF,CAAC;QACD,MAAMC,YAAY,GAAG8B,WAAW,CAAC/B,IAAI,IAAI,CAAC;QAC1C,IAAIJ,aAAa,GAAGK,YAAY,GAAGvC,aAAa,EAAE;UAChDP,OAAO,CAAC6B,KAAK,CAACC,IAAI,CAAC;YACjBC,KAAK,EAAE,wDAAwDlC,eAAe,CAC5E+E,WAAW,CAACf,IAAI,IAAI,EACtB,CAAC,0DAA0D;YAC3DZ,KAAK,EAAE;UACT,CAAC,CAAC;UACF,OAAOV,IAAI;QACb;QACA,OAAO,CAAC,GAAGA,IAAI,EAAE;UAAE,GAAGqC,WAAW;UAAEhD,UAAU,EAAE;QAAO,CAAC,CAAC;MAC1D,CAAC,CAAC;IACJ;EACF,CAAC,EAAE,CAACX,UAAU,CAAC,CAAC;EAEhB,oBACEb,KAAA,CAACjC,UAAU,CAAC6G,IAAI;IAACC,KAAK,EAAEC,MAAM,CAACC,SAAU;IAAAC,QAAA,gBACvClF,IAAA,CAAC/B,UAAU,CAACkH,WAAW;MAACC,OAAO,EAAErE,UAAU,CAACK,MAAM,GAAG,CAAE;MAAA8D,QAAA,eACrDlF,IAAA,CAACrB,QAAQ;QACP+E,IAAI,EAAE3C,UAAW;QACjBsE,UAAU,EAAEA,CAAC;UAAE3C;QAA2B,CAAC,KACzC2B,gBAAgB,CAAC3B,IAAI,CACtB;QACD4C,UAAU;QACVC,YAAY,EAAG7C,IAAgB,IAC7BA,IAAI,CAAChB,UAAU,KAAK,OAAO,GAAGgB,IAAI,CAACwB,IAAI,GAAGxB,IAAI,CAACyB,GAChD;QACDqB,qBAAqB,EAAER,MAAM,CAACS;MAAe,CAC9C;IAAC,CACoB,CAAC,eACzBzF,IAAA,CAAC7B,MAAM,CAACuH,QAAQ;MACdC,QAAQ,EAAE,SAAU;MACpBC,QAAQ,EAAE,SAAU;MACpBC,WAAW,EAAC,+CAA0B;MACtCC,eAAe,EAAC,QAAQ;MACxBC,YAAY,EAAE9E,gBAAiB;MAC/B+E,KAAK,EAAErF,OAAQ;MACfsF,SAAS;MACTlB,KAAK,EAAEC,MAAM,CAACkB,KAAM;MACpBC,YAAY,EAAE,KAAM;MACpBC,iBAAiB,EAAC;IAAK,CACxB,CAAC,eACFlG,KAAA,CAACjC,UAAU,CAAC6G,IAAI;MAACC,KAAK,EAAEC,MAAM,CAACqB,OAAQ;MAAAnB,QAAA,gBACrChF,KAAA,CAACjB,IAAI;QACHqH,GAAG,EAAE9F,OAAQ;QACb+F,QAAQ,EAAEpG,OAAQ;QAClBqG,aAAa,EAAE;UAAEC,SAAS,EAAE,KAAK;UAAEC,WAAW,EAAE;YAAEC,OAAO,EAAE;UAAO;QAAE,CAAE;QAAAzB,QAAA,gBAEtElF,IAAA,CAACd,WAAW;UACV0H,YAAY,EAAE;YACZC,yBAAyB,EAAEhI;UAC7B,CAAE;UAAAqG,QAAA,eAEFlF,IAAA,CAAC9B,MAAM,CAAC4I,WAAW;YACjBnD,IAAI,EAAC,SAAS;YACdhB,IAAI,EAAE,EAAG;YACToE,KAAK,EAAE/I,OAAO,CAACgJ,IAAI,CAACC;UAAK,CAC1B;QAAC,CACS,CAAC,eACdjH,IAAA,CAACZ,WAAW;UAAC8H,qBAAqB,EAAElC,MAAM,CAACmC,OAAQ;UAAAjC,QAAA,EAChDhC,SAAS,CAACf,GAAG,CAAEb,CAAC,iBACfpB,KAAA,CAACf,UAAU;YAETiI,QAAQ,EAAE9F,CAAC,CAAC8B,OAAQ;YACpB2B,KAAK,EAAEC,MAAM,CAACqC,QAAS;YAAAnC,QAAA,gBAEvBlF,IAAA,CAAC5B,MAAM,CAACkJ,IAAI;cAACC,IAAI,EAAC,cAAc;cAAArC,QAAA,EAAE5D,CAAC,CAAC+B;YAAK,CAAc,CAAC,eACxDrD,IAAA,CAAC9B,MAAM,CAAC4I,WAAW;cAACnD,IAAI,EAAErC,CAAC,CAAC6B;YAAK,CAAE,CAAC;UAAA,GAL/B7B,CAAC,CAAC6B,IAMG,CACb;QAAC,CACS,CAAC;MAAA,CACV,CAAC,eACPnD,IAAA,CAAC/B,UAAU,CAACuJ,SAAS;QAACpE,OAAO,EAAEoB,yBAA0B;QAAAU,QAAA,eACvDlF,IAAA,CAAC9B,MAAM,CAAC4I,WAAW;UACjBnD,IAAI,EAAC,aAAa;UAClBhB,IAAI,EAAE,EAAG;UACToE,KAAK,EAAE/I,OAAO,CAACgJ,IAAI,CAACC;QAAK,CAC1B;MAAC,CACkB,CAAC,eACvBjH,IAAA,CAAC/B,UAAU,CAAC6G,IAAI;QAAC2C,IAAI;MAAA,CAAE,CAAC,eACxBzH,IAAA,CAACjC,OAAO,CAAC2J,KAAK;QACZC,IAAI,EAAC,SAAS;QACdxE,IAAI,EAAE;UACJyE,UAAU,EAAE/G,WAAW,GAAG,UAAU,GAAG,QAAQ;UAC/C8B,IAAI,EAAE,EAAE;UACRkF,SAAS,EAAE7J,OAAO,CAAC8J;QACrB,CAAE;QACF1E,OAAO,EAAEE,WAAY;QACrByE,EAAE,EAAC,OAAO;QACVC,QAAQ,EAAE9G;MAAe,CAC1B,CAAC;IAAA,CACa,CAAC;EAAA,CACH,CAAC;AAEtB,CAAC;AAED,eAAeX,UAAU;AAEzB,MAAMyE,MAAM,GAAGpG,UAAU,CAACqJ,MAAM,CAAC;EAC/BhD,SAAS,EAAE;IACTiD,iBAAiB,EAAE5J,aAAa,CAAC,SAAS,CAAC;IAC3C6J,eAAe,EAAE7J,aAAa,CAAC,QAAQ,CAAC;IACxC8J,GAAG,EAAE9J,aAAa,CAAC,QAAQ,CAAC;IAC5B+J,WAAW,EAAE,CAAC;IACdC,WAAW,EAAEtK,OAAO,CAACuK,SAAS,CAACvK,OAAO,CAACwK,KAAK,EAAE,IAAI,CAAC;IACnDC,iBAAiB,EAAE,CAAC;IACpBC,mBAAmB,EAAEpK,aAAa,CAAC,SAAS,CAAC;IAC7CqK,oBAAoB,EAAErK,aAAa,CAAC,SAAS;EAC/C,CAAC;EACD+H,OAAO,EAAE;IACPuC,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBT,GAAG,EAAE9J,aAAa,CAAC,MAAM;EAC3B,CAAC;EACDwK,UAAU,EAAE;IACVC,SAAS,EAAE;EACb,CAAC;EACD7C,KAAK,EAAE;IACL8C,SAAS,EAAE;EACb,CAAC;EACD7B,OAAO,EAAE;IACP8B,YAAY,EAAE5K,YAAY,CAAC,IAAI,CAAC;IAChC6K,eAAe,EAAElL,OAAO,CAAC8J,KAAK;IAC9BqB,KAAK,EAAE;EACT,CAAC;EACD9B,QAAQ,EAAE;IACRa,iBAAiB,EAAE5J,aAAa,CAAC,MAAM,CAAC;IACxCsK,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBV,eAAe,EAAE7J,aAAa,CAAC,SAAS,CAAC;IACzCmK,iBAAiB,EAAE,CAAC;IACpBW,iBAAiB,EAAEpL,OAAO,CAACqL,MAAM,CAACC,MAAM;IACxClB,GAAG,EAAE9J,aAAa,CAAC,QAAQ,CAAC;IAC5BiL,cAAc,EAAE;EAClB,CAAC;EACD9D,cAAc,EAAE;IACd2C,GAAG,EAAE9J,aAAa,CAAC,SAAS,CAAC;IAC7BkL,UAAU,EAAE;EACd;AACF,CAAC,CAAC","ignoreList":[]}