@apia/ai 1.0.2 → 2.0.0
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/components/chat/AutoscrollContainer.js +58 -0
- package/dist/components/chat/AutoscrollContainer.js.map +1 -0
- package/dist/components/chat/ChatController.d.ts +38 -0
- package/dist/components/chat/ChatController.d.ts.map +1 -0
- package/dist/components/chat/ChatController.js +124 -0
- package/dist/components/chat/ChatController.js.map +1 -0
- package/dist/components/chat/Textarea.js +218 -0
- package/dist/components/chat/Textarea.js.map +1 -0
- package/dist/components/chat/files/useHandleFileUpload.js +61 -0
- package/dist/components/chat/files/useHandleFileUpload.js.map +1 -0
- package/dist/components/chat/messages/ChatMessage.d.ts +14 -0
- package/dist/components/chat/messages/ChatMessage.d.ts.map +1 -0
- package/dist/components/chat/messages/ChatMessage.js +52 -0
- package/dist/components/chat/messages/ChatMessage.js.map +1 -0
- package/dist/components/chat/messages/MultipleChoiceMessage.d.ts +21 -0
- package/dist/components/chat/messages/MultipleChoiceMessage.d.ts.map +1 -0
- package/dist/components/chat/messages/MultipleChoiceMessage.js +38 -0
- package/dist/components/chat/messages/MultipleChoiceMessage.js.map +1 -0
- package/dist/files/ocr/getImageOcrMaker.js +34 -0
- package/dist/files/ocr/getImageOcrMaker.js.map +1 -0
- package/dist/files/pdf/getPdfReader.js +45 -0
- package/dist/files/pdf/getPdfReader.js.map +1 -0
- package/dist/index.d.ts +4 -61
- package/dist/index.js +4 -614
- package/dist/index.js.map +1 -1
- package/package.json +23 -34
- package/LICENSE.md +0 -21
- package/README.md +0 -28
- package/cleanDist.json +0 -3
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { ReactElement } from 'react';
|
|
3
|
+
import { ChatMessage } from './ChatMessage.js';
|
|
4
|
+
|
|
5
|
+
type TMultipleChoiceMessageOption<OptionProps> = {
|
|
6
|
+
label: string;
|
|
7
|
+
url: string;
|
|
8
|
+
additionalProps?: OptionProps;
|
|
9
|
+
};
|
|
10
|
+
declare class MultipleChoiceMessage<OptionProps> extends ChatMessage {
|
|
11
|
+
private question;
|
|
12
|
+
private options;
|
|
13
|
+
private Renderer?;
|
|
14
|
+
constructor(question: string, options: TMultipleChoiceMessageOption<OptionProps>[], Renderer?: ((props: {
|
|
15
|
+
item: TMultipleChoiceMessageOption<OptionProps>;
|
|
16
|
+
}) => ReactElement) | undefined);
|
|
17
|
+
get message(): react.JSX.Element;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export { MultipleChoiceMessage, type TMultipleChoiceMessageOption };
|
|
21
|
+
//# sourceMappingURL=MultipleChoiceMessage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultipleChoiceMessage.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { jsxs, jsx } from '@apia/theme/jsx-runtime';
|
|
2
|
+
import { SimpleButton, ApiaUtil } from '@apia/components';
|
|
3
|
+
import { ChatMessage } from './ChatMessage.js';
|
|
4
|
+
import { Box, Paragraph } from '@apia/theme';
|
|
5
|
+
|
|
6
|
+
class MultipleChoiceMessage extends ChatMessage {
|
|
7
|
+
constructor(question, options, Renderer) {
|
|
8
|
+
super("", "multipleChoice");
|
|
9
|
+
this.question = question;
|
|
10
|
+
this.options = options;
|
|
11
|
+
this.Renderer = Renderer;
|
|
12
|
+
}
|
|
13
|
+
get message() {
|
|
14
|
+
const Renderer = this.Renderer;
|
|
15
|
+
if (Renderer) {
|
|
16
|
+
return /* @__PURE__ */ jsxs(Box, { className: "multipleChoiceMessage customRenderer", children: [
|
|
17
|
+
/* @__PURE__ */ jsx(Paragraph, { children: this.question }),
|
|
18
|
+
this.options.map((item) => /* @__PURE__ */ jsx(Renderer, { item }, item.url))
|
|
19
|
+
] });
|
|
20
|
+
}
|
|
21
|
+
return /* @__PURE__ */ jsxs(Box, { className: "multipleChoiceMessage", children: [
|
|
22
|
+
/* @__PURE__ */ jsx(Paragraph, { children: this.question }),
|
|
23
|
+
!Renderer && /* @__PURE__ */ jsx(Box, { as: "ul", children: this.options.map((current) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(
|
|
24
|
+
SimpleButton,
|
|
25
|
+
{
|
|
26
|
+
className: "multipleChoice__option",
|
|
27
|
+
onClick: () => {
|
|
28
|
+
ApiaUtil.instance.tabs.openTab(current.label, current.url);
|
|
29
|
+
},
|
|
30
|
+
children: current.label
|
|
31
|
+
}
|
|
32
|
+
) }, current.label)) })
|
|
33
|
+
] });
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export { MultipleChoiceMessage };
|
|
38
|
+
//# sourceMappingURL=MultipleChoiceMessage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultipleChoiceMessage.js","sources":["../../../../src/components/chat/messages/MultipleChoiceMessage.tsx"],"sourcesContent":["import { ApiaUtil, SimpleButton } from '@apia/components';\nimport { ChatMessage } from './ChatMessage';\nimport { Box, Paragraph } from '@apia/theme';\nimport { ReactElement } from 'react';\n\nexport type TMultipleChoiceMessageOption<OptionProps> = {\n label: string;\n url: string;\n additionalProps?: OptionProps;\n};\n\nexport class MultipleChoiceMessage<OptionProps> extends ChatMessage {\n constructor(\n private question: string,\n private options: TMultipleChoiceMessageOption<OptionProps>[],\n private Renderer?: (props: {\n item: TMultipleChoiceMessageOption<OptionProps>;\n }) => ReactElement,\n ) {\n super('', 'multipleChoice');\n }\n\n get message() {\n const Renderer = this.Renderer;\n\n if (Renderer) {\n return (\n <Box className=\"multipleChoiceMessage customRenderer\">\n <Paragraph>{this.question}</Paragraph>\n {this.options.map((item) => (\n <Renderer item={item} key={item.url} />\n ))}\n </Box>\n );\n }\n\n return (\n <Box className=\"multipleChoiceMessage\">\n <Paragraph>{this.question}</Paragraph>\n {!Renderer && (\n <Box as=\"ul\">\n {this.options.map((current) => (\n <li key={current.label}>\n <SimpleButton\n className=\"multipleChoice__option\"\n onClick={() => {\n ApiaUtil.instance.tabs.openTab(current.label, current.url);\n }}\n >\n {current.label}\n </SimpleButton>\n </li>\n ))}\n </Box>\n )}\n </Box>\n );\n }\n}\n"],"names":[],"mappings":";;;;;AAWO,MAAM,8BAA2C,WAAY,CAAA;AAAA,EAClE,WAAA,CACU,QACA,EAAA,OAAA,EACA,QAGR,EAAA;AACA,IAAA,KAAA,CAAM,IAAI,gBAAgB,CAAA,CAAA;AANlB,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA,CAAA;AACA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA,CAAA;AACA,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA,CAAA;AAAA,GAKV;AAAA,EAEA,IAAI,OAAU,GAAA;AACZ,IAAA,MAAM,WAAW,IAAK,CAAA,QAAA,CAAA;AAEtB,IAAA,IAAI,QAAU,EAAA;AACZ,MACE,uBAAA,IAAA,CAAC,GAAI,EAAA,EAAA,SAAA,EAAU,sCACb,EAAA,QAAA,EAAA;AAAA,wBAAC,GAAA,CAAA,SAAA,EAAA,EAAW,eAAK,QAAS,EAAA,CAAA;AAAA,QACzB,IAAA,CAAK,OAAQ,CAAA,GAAA,CAAI,CAAC,IAAA,yBAChB,QAAS,EAAA,EAAA,IAAA,EAAA,EAAiB,IAAK,CAAA,GAAK,CACtC,CAAA;AAAA,OACH,EAAA,CAAA,CAAA;AAAA,KAEJ;AAEA,IACE,uBAAA,IAAA,CAAC,GAAI,EAAA,EAAA,SAAA,EAAU,uBACb,EAAA,QAAA,EAAA;AAAA,sBAAC,GAAA,CAAA,SAAA,EAAA,EAAW,eAAK,QAAS,EAAA,CAAA;AAAA,MACzB,CAAC,QAAA,oBACC,GAAA,CAAA,GAAA,EAAA,EAAI,EAAG,EAAA,IAAA,EACL,QAAK,EAAA,IAAA,CAAA,OAAA,CAAQ,GAAI,CAAA,CAAC,OACjB,qBAAA,GAAA,CAAC,IACC,EAAA,EAAA,QAAA,kBAAA,GAAA;AAAA,QAAC,YAAA;AAAA,QAAA;AAAA,UACC,SAAU,EAAA,wBAAA;AAAA,UACV,SAAS,MAAM;AACb,YAAA,QAAA,CAAS,SAAS,IAAK,CAAA,OAAA,CAAQ,OAAQ,CAAA,KAAA,EAAO,QAAQ,GAAG,CAAA,CAAA;AAAA,WAC3D;AAAA,UAEC,QAAQ,EAAA,OAAA,CAAA,KAAA;AAAA,SAAA;AAAA,OAPJ,EAAA,EAAA,OAAA,CAAQ,KASjB,CACD,CACH,EAAA,CAAA;AAAA,KAEJ,EAAA,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
function isImageFile(file) {
|
|
2
|
+
const IMAGE_EXTENSIONS = [
|
|
3
|
+
"jpg",
|
|
4
|
+
"jpeg",
|
|
5
|
+
"png",
|
|
6
|
+
"gif",
|
|
7
|
+
"bmp",
|
|
8
|
+
"webp",
|
|
9
|
+
"tiff",
|
|
10
|
+
"svg",
|
|
11
|
+
"jfif"
|
|
12
|
+
];
|
|
13
|
+
return IMAGE_EXTENSIONS.includes(file.name.split(".").pop());
|
|
14
|
+
}
|
|
15
|
+
function getImageOcrMaker(lang) {
|
|
16
|
+
return new class ImageOcrMaker {
|
|
17
|
+
async processFile(file, onProgress) {
|
|
18
|
+
const tesseract = await import('tesseract.js');
|
|
19
|
+
const worker = await tesseract.createWorker(lang, 1, {
|
|
20
|
+
logger(arg) {
|
|
21
|
+
onProgress?.(arg.progress * 100);
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
const result = (await worker.recognize(file)).data.text;
|
|
25
|
+
return [result];
|
|
26
|
+
}
|
|
27
|
+
willProcessFile(file) {
|
|
28
|
+
return isImageFile(file);
|
|
29
|
+
}
|
|
30
|
+
}();
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export { getImageOcrMaker as default, isImageFile };
|
|
34
|
+
//# sourceMappingURL=getImageOcrMaker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getImageOcrMaker.js","sources":["../../../src/files/ocr/getImageOcrMaker.ts"],"sourcesContent":["import { FileProcessor } from '../FileProcessor';\n\nexport function isImageFile(file: File) {\n const IMAGE_EXTENSIONS = [\n 'jpg',\n 'jpeg',\n 'png',\n 'gif',\n 'bmp',\n 'webp',\n 'tiff',\n 'svg',\n 'jfif',\n ];\n\n return IMAGE_EXTENSIONS.includes(file.name.split('.').pop() as string);\n}\n\nexport default function getImageOcrMaker(lang: 'eng' | 'spa') {\n return new (class ImageOcrMaker implements FileProcessor {\n async processFile(\n file: File,\n onProgress?: (progress: number) => unknown,\n ): Promise<string[]> {\n const tesseract = await import('tesseract.js');\n\n const worker = await tesseract.createWorker(lang, 1, {\n logger(arg) {\n onProgress?.(arg.progress * 100);\n },\n });\n\n const result = (await worker.recognize(file)).data.text;\n return [result];\n }\n\n willProcessFile(file: File) {\n return isImageFile(file);\n }\n })();\n}\n"],"names":[],"mappings":"AAEO,SAAS,YAAY,IAAY,EAAA;AACtC,EAAA,MAAM,gBAAmB,GAAA;AAAA,IACvB,KAAA;AAAA,IACA,MAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA;AAAA,GACF,CAAA;AAEA,EAAO,OAAA,gBAAA,CAAiB,SAAS,IAAK,CAAA,IAAA,CAAK,MAAM,GAAG,CAAA,CAAE,KAAe,CAAA,CAAA;AACvE,CAAA;AAEA,SAAwB,iBAAiB,IAAqB,EAAA;AAC5D,EAAO,OAAA,IAAK,MAAM,aAAuC,CAAA;AAAA,IACvD,MAAM,WACJ,CAAA,IAAA,EACA,UACmB,EAAA;AACnB,MAAM,MAAA,SAAA,GAAY,MAAM,OAAO,cAAc,CAAA,CAAA;AAE7C,MAAA,MAAM,MAAS,GAAA,MAAM,SAAU,CAAA,YAAA,CAAa,MAAM,CAAG,EAAA;AAAA,QACnD,OAAO,GAAK,EAAA;AACV,UAAa,UAAA,GAAA,GAAA,CAAI,WAAW,GAAG,CAAA,CAAA;AAAA,SACjC;AAAA,OACD,CAAA,CAAA;AAED,MAAA,MAAM,UAAU,MAAM,MAAA,CAAO,SAAU,CAAA,IAAI,GAAG,IAAK,CAAA,IAAA,CAAA;AACnD,MAAA,OAAO,CAAC,MAAM,CAAA,CAAA;AAAA,KAChB;AAAA,IAEA,gBAAgB,IAAY,EAAA;AAC1B,MAAA,OAAO,YAAY,IAAI,CAAA,CAAA;AAAA,KACzB;AAAA,GACC,EAAA,CAAA;AACL;;;;"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
function isPdfFile(file) {
|
|
2
|
+
const IMAGE_EXTENSIONS = ["pdf"];
|
|
3
|
+
return IMAGE_EXTENSIONS.includes(file.name.split(".").pop());
|
|
4
|
+
}
|
|
5
|
+
function getPdfReader() {
|
|
6
|
+
return new class PdfReader {
|
|
7
|
+
async processFile(file, onProgress) {
|
|
8
|
+
onProgress?.(0);
|
|
9
|
+
const { getDocument, GlobalWorkerOptions } = await import('pdfjs-dist');
|
|
10
|
+
async function getPdfTextFromArrayBuffer(buffer) {
|
|
11
|
+
GlobalWorkerOptions.workerSrc = "../includes/pdf.worker.min.js";
|
|
12
|
+
const pdf = await getDocument({ data: buffer }).promise;
|
|
13
|
+
const pages = [];
|
|
14
|
+
for (let i = 1; i <= pdf.numPages; i++) {
|
|
15
|
+
const page = await pdf.getPage(i);
|
|
16
|
+
const textContent = await page.getTextContent();
|
|
17
|
+
pages.push(
|
|
18
|
+
textContent.items.map((item) => item.str).join(" ")
|
|
19
|
+
);
|
|
20
|
+
}
|
|
21
|
+
return pages;
|
|
22
|
+
}
|
|
23
|
+
return new Promise((resolve) => {
|
|
24
|
+
const reader = new FileReader();
|
|
25
|
+
reader.onload = async function(event) {
|
|
26
|
+
if (!event.target?.result) {
|
|
27
|
+
alert("Error al leer el archivo.");
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const buffer = event.target.result;
|
|
31
|
+
const text = await getPdfTextFromArrayBuffer(buffer);
|
|
32
|
+
onProgress?.(100);
|
|
33
|
+
resolve(text);
|
|
34
|
+
};
|
|
35
|
+
reader.readAsArrayBuffer(file);
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
willProcessFile(file) {
|
|
39
|
+
return isPdfFile(file);
|
|
40
|
+
}
|
|
41
|
+
}();
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export { getPdfReader as default, isPdfFile };
|
|
45
|
+
//# sourceMappingURL=getPdfReader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getPdfReader.js","sources":["../../../src/files/pdf/getPdfReader.ts"],"sourcesContent":["import { FileProcessor } from '../FileProcessor';\n\nexport function isPdfFile(file: File) {\n const IMAGE_EXTENSIONS = ['pdf'];\n\n return IMAGE_EXTENSIONS.includes(file.name.split('.').pop() as string);\n}\n\nexport default function getPdfReader() {\n return new (class PdfReader implements FileProcessor {\n async processFile(\n file: File,\n onProgress?: (progress: number) => void,\n ): Promise<string[]> {\n onProgress?.(0);\n const { getDocument, GlobalWorkerOptions } = await import('pdfjs-dist');\n\n async function getPdfTextFromArrayBuffer(\n buffer: ArrayBuffer,\n ): Promise<string[]> {\n GlobalWorkerOptions.workerSrc = '../includes/pdf.worker.min.js';\n\n const pdf = await getDocument({ data: buffer }).promise;\n\n const pages: string[] = [];\n\n for (let i = 1; i <= pdf.numPages; i++) {\n const page = await pdf.getPage(i);\n const textContent = await page.getTextContent();\n\n // Concatenar texto de cada página\n pages.push(\n textContent.items\n .map((item) => (item as { str: string }).str)\n .join(' '),\n );\n }\n\n return pages;\n }\n\n return new Promise((resolve) => {\n const reader = new FileReader();\n\n reader.onload = async function (event: ProgressEvent<FileReader>) {\n if (!event.target?.result) {\n alert('Error al leer el archivo.');\n return;\n }\n\n const buffer: ArrayBuffer = event.target.result as ArrayBuffer;\n const text = await getPdfTextFromArrayBuffer(buffer);\n\n onProgress?.(100);\n resolve(text);\n };\n\n reader.readAsArrayBuffer(file);\n });\n }\n\n willProcessFile(file: File) {\n return isPdfFile(file);\n }\n })();\n}\n"],"names":[],"mappings":"AAEO,SAAS,UAAU,IAAY,EAAA;AACpC,EAAM,MAAA,gBAAA,GAAmB,CAAC,KAAK,CAAA,CAAA;AAE/B,EAAO,OAAA,gBAAA,CAAiB,SAAS,IAAK,CAAA,IAAA,CAAK,MAAM,GAAG,CAAA,CAAE,KAAe,CAAA,CAAA;AACvE,CAAA;AAEA,SAAwB,YAAe,GAAA;AACrC,EAAO,OAAA,IAAK,MAAM,SAAmC,CAAA;AAAA,IACnD,MAAM,WACJ,CAAA,IAAA,EACA,UACmB,EAAA;AACnB,MAAA,UAAA,GAAa,CAAC,CAAA,CAAA;AACd,MAAA,MAAM,EAAE,WAAa,EAAA,mBAAA,EAAwB,GAAA,MAAM,OAAO,YAAY,CAAA,CAAA;AAEtE,MAAA,eAAe,0BACb,MACmB,EAAA;AACnB,QAAA,mBAAA,CAAoB,SAAY,GAAA,+BAAA,CAAA;AAEhC,QAAA,MAAM,MAAM,MAAM,WAAA,CAAY,EAAE,IAAM,EAAA,MAAA,EAAQ,CAAE,CAAA,OAAA,CAAA;AAEhD,QAAA,MAAM,QAAkB,EAAC,CAAA;AAEzB,QAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAK,IAAA,GAAA,CAAI,UAAU,CAAK,EAAA,EAAA;AACtC,UAAA,MAAM,IAAO,GAAA,MAAM,GAAI,CAAA,OAAA,CAAQ,CAAC,CAAA,CAAA;AAChC,UAAM,MAAA,WAAA,GAAc,MAAM,IAAA,CAAK,cAAe,EAAA,CAAA;AAG9C,UAAM,KAAA,CAAA,IAAA;AAAA,YACJ,WAAA,CAAY,MACT,GAAI,CAAA,CAAC,SAAU,IAAyB,CAAA,GAAG,CAC3C,CAAA,IAAA,CAAK,GAAG,CAAA;AAAA,WACb,CAAA;AAAA,SACF;AAEA,QAAO,OAAA,KAAA,CAAA;AAAA,OACT;AAEA,MAAO,OAAA,IAAI,OAAQ,CAAA,CAAC,OAAY,KAAA;AAC9B,QAAM,MAAA,MAAA,GAAS,IAAI,UAAW,EAAA,CAAA;AAE9B,QAAO,MAAA,CAAA,MAAA,GAAS,eAAgB,KAAkC,EAAA;AAChE,UAAI,IAAA,CAAC,KAAM,CAAA,MAAA,EAAQ,MAAQ,EAAA;AACzB,YAAA,KAAA,CAAM,2BAA2B,CAAA,CAAA;AACjC,YAAA,OAAA;AAAA,WACF;AAEA,UAAM,MAAA,MAAA,GAAsB,MAAM,MAAO,CAAA,MAAA,CAAA;AACzC,UAAM,MAAA,IAAA,GAAO,MAAM,yBAAA,CAA0B,MAAM,CAAA,CAAA;AAEnD,UAAA,UAAA,GAAa,GAAG,CAAA,CAAA;AAChB,UAAA,OAAA,CAAQ,IAAI,CAAA,CAAA;AAAA,SACd,CAAA;AAEA,QAAA,MAAA,CAAO,kBAAkB,IAAI,CAAA,CAAA;AAAA,OAC9B,CAAA,CAAA;AAAA,KACH;AAAA,IAEA,gBAAgB,IAAY,EAAA;AAC1B,MAAA,OAAO,UAAU,IAAI,CAAA,CAAA;AAAA,KACvB;AAAA,GACC,EAAA,CAAA;AACL;;;;"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,61 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
declare class ChatMessage {
|
|
6
|
-
#private;
|
|
7
|
-
messageType: TMessageType;
|
|
8
|
-
id: number;
|
|
9
|
-
parseMessage(message: string): string;
|
|
10
|
-
constructor(message: ReactNode, messageType: TMessageType);
|
|
11
|
-
get message(): ReactNode;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
type TMessageType = 'user' | 'system' | 'warning' | 'error' | 'information' | 'response' | 'multipleChoice';
|
|
15
|
-
declare class ChatController extends EventEmitter<{
|
|
16
|
-
listChange: ChatMessage[];
|
|
17
|
-
messageSubmited?: string;
|
|
18
|
-
}> {
|
|
19
|
-
#private;
|
|
20
|
-
id: string;
|
|
21
|
-
constructor(id: string, welcomeMessage?: string | false);
|
|
22
|
-
components: {
|
|
23
|
-
MessageHistory: () => react.JSX.Element;
|
|
24
|
-
Textarea: {
|
|
25
|
-
({ hideDeleteButton, isLoading: outIsLoading, onSubmit, preventAppendUserMessages, }: {
|
|
26
|
-
hideDeleteButton?: boolean | undefined;
|
|
27
|
-
isLoading?: boolean | undefined;
|
|
28
|
-
onSubmit: (text: string) => Promise<void>;
|
|
29
|
-
preventAppendUserMessages?: boolean | undefined;
|
|
30
|
-
}): react.JSX.Element;
|
|
31
|
-
displayName: string;
|
|
32
|
-
};
|
|
33
|
-
};
|
|
34
|
-
history: {
|
|
35
|
-
add: (prompt: string) => void;
|
|
36
|
-
next: () => string;
|
|
37
|
-
previous: () => string | undefined;
|
|
38
|
-
useList: () => ChatMessage[];
|
|
39
|
-
};
|
|
40
|
-
messages: {
|
|
41
|
-
add: (message: ChatMessage) => void;
|
|
42
|
-
clear: () => void;
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
type TMultipleChoiceMessageOption<OptionProps> = {
|
|
47
|
-
label: string;
|
|
48
|
-
url: string;
|
|
49
|
-
additionalProps?: OptionProps;
|
|
50
|
-
};
|
|
51
|
-
declare class MultipleChoiceMessage<OptionProps> extends ChatMessage {
|
|
52
|
-
private question;
|
|
53
|
-
private options;
|
|
54
|
-
private Renderer?;
|
|
55
|
-
constructor(question: string, options: TMultipleChoiceMessageOption<OptionProps>[], Renderer?: ((props: {
|
|
56
|
-
item: TMultipleChoiceMessageOption<OptionProps>;
|
|
57
|
-
}) => ReactElement) | undefined);
|
|
58
|
-
get message(): react.JSX.Element;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
export { ChatController, ChatMessage, MultipleChoiceMessage, TMessageType, TMultipleChoiceMessageOption };
|
|
1
|
+
export { ChatController, TMessageType } from './components/chat/ChatController.js';
|
|
2
|
+
export { ChatMessage } from './components/chat/messages/ChatMessage.js';
|
|
3
|
+
export { MultipleChoiceMessage, TMultipleChoiceMessageOption } from './components/chat/messages/MultipleChoiceMessage.js';
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|