@apia/ai 0.3.4 → 0.3.6

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/index.d.ts CHANGED
@@ -20,7 +20,8 @@ declare class ChatController extends EventEmitter<{
20
20
  components: {
21
21
  MessageHistory: () => react.JSX.Element;
22
22
  Textarea: {
23
- ({ onSubmit, }: {
23
+ ({ hideDeleteButton, onSubmit, }: {
24
+ hideDeleteButton?: boolean | undefined;
24
25
  onSubmit: (text: string) => Promise<void>;
25
26
  }): react.JSX.Element;
26
27
  displayName: string;
package/dist/index.js CHANGED
@@ -158,7 +158,7 @@ function getPdfReader() {
158
158
  const { getDocument, GlobalWorkerOptions } = yield import('pdfjs-dist');
159
159
  function getPdfTextFromArrayBuffer(buffer) {
160
160
  return __async$1(this, null, function* () {
161
- GlobalWorkerOptions.workerSrc = "react/includes/pdf.worker.min.js";
161
+ GlobalWorkerOptions.workerSrc = "../includes/pdf.worker.min.40189.js";
162
162
  const pdf = yield getDocument({ data: buffer }).promise;
163
163
  const pages = [];
164
164
  for (let i = 1; i <= pdf.numPages; i++) {
@@ -265,6 +265,7 @@ function useHandleFileUpload({
265
265
 
266
266
  const makeTextarea = (gptController) => {
267
267
  const NewTextarea = ({
268
+ hideDeleteButton,
268
269
  onSubmit
269
270
  }) => {
270
271
  const [isLoading, setIsLoading] = useState(false);
@@ -310,7 +311,7 @@ const makeTextarea = (gptController) => {
310
311
  }
311
312
  });
312
313
  const actualIsLoading = isLoading || progress !== 100;
313
- return /* @__PURE__ */ jsxs("form", { onSubmit: handleSubmit, action: "", children: [
314
+ return /* @__PURE__ */ jsxs("form", { onSubmit: handleSubmit, className: "gpt__form", action: "", children: [
314
315
  /* @__PURE__ */ jsx(
315
316
  Textarea,
316
317
  {
@@ -375,7 +376,7 @@ const makeTextarea = (gptController) => {
375
376
  children: "Siguiente"
376
377
  }
377
378
  ),
378
- /* @__PURE__ */ jsx(
379
+ !hideDeleteButton && /* @__PURE__ */ jsx(
379
380
  SimpleButton,
380
381
  {
381
382
  variant: "outline",
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/components/chat/AutoscrollContainer.tsx","../src/files/ocr/getImageOcrMaker.ts","../src/files/pdf/getPdfReader.ts","../src/components/chat/files/useHandleFileUpload.ts","../src/components/chat/Textarea.tsx","../src/components/chat/ChatController.tsx"],"sourcesContent":["import { getVariant } from '@apia/theme';\nimport { ReactNode, useCallback, useRef } from 'react';\nimport { Box } from '@apia/theme';\n\nexport const AutoscrollContainer = ({ children }: { children: ReactNode }) => {\n const observer = useRef<MutationObserver | null>(null);\n const unsuscribe = useRef<(() => void) | null>(null);\n const isFullScrolled = useRef(false);\n const hasInited = useRef(false);\n\n const ref = useCallback((el: HTMLElement) => {\n if (!el) return;\n\n if (!hasInited.current) {\n hasInited.current = true;\n el.scrollTo({\n top: el.getBoundingClientRect().height,\n behavior: 'auto',\n });\n isFullScrolled.current = true;\n }\n\n observer.current?.disconnect();\n unsuscribe.current?.();\n\n observer.current = new MutationObserver(([mutation]) => {\n if (\n mutation &&\n mutation.target instanceof HTMLElement &&\n mutation.target === el\n ) {\n if (\n isFullScrolled.current &&\n mutation.target.scrollTop !==\n mutation.target.scrollHeight - mutation.target.offsetHeight\n ) {\n // eslint-disable-next-line no-param-reassign\n mutation.target.scrollTop = mutation.target.scrollHeight;\n }\n }\n });\n observer.current.observe(el, { childList: true, subtree: true });\n\n const handleScroll = (ev: Event) => {\n if (ev.target === el && el instanceof HTMLElement) {\n setTimeout(() => {\n isFullScrolled.current =\n Math.abs(el.scrollTop - (el.scrollHeight - el.offsetHeight)) < 150;\n }, 100);\n }\n };\n el.addEventListener('scroll', handleScroll);\n unsuscribe.current = () => {\n el.removeEventListener('scroll', handleScroll);\n };\n }, []);\n\n return (\n <Box\n {...getVariant('layout.common.components.autoscrollContainer')}\n className=\"autoscrollContainer\"\n ref={ref}\n >\n {children}\n </Box>\n );\n};\n","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","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 = 'react/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","/* eslint-disable no-param-reassign */\nimport { ChangeEvent, useCallback, useState } from 'react';\nimport getImageOcrMaker from '../../../files/ocr/getImageOcrMaker';\nimport getPdfReader from '../../../files/pdf/getPdfReader';\n\nexport default function useHandleFileUpload({\n onContent,\n}: {\n onContent: (content: string[]) => unknown;\n}) {\n const [progress, setProgress] = useState(100);\n\n const handleFileUpload = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => {\n setProgress(0);\n\n const imageProcessor = getImageOcrMaker();\n const pdfProcessor = getPdfReader();\n\n void (async () => {\n const obtainedText: string[] = [];\n const files = ev.target.files;\n const filesLength = ev.target.files?.length ?? 0;\n if (files) {\n for (let i = 0; i < filesLength; i++) {\n const file = files[i];\n\n const handleProgress = (progress: number) => {\n setProgress(\n (i / filesLength) * 100 +\n (1 / filesLength) * 100 * (progress / 100),\n );\n };\n\n let result = '';\n if (imageProcessor.willProcessFile(file)) {\n try {\n result = (\n await imageProcessor.processFile(file, handleProgress)\n )[0];\n } catch (e) {\n console.error(e);\n }\n } else if (pdfProcessor.willProcessFile(file)) {\n result = (\n await pdfProcessor.processFile(file, handleProgress)\n ).join('\\n\\n');\n try {\n } catch (e) {\n console.error(e);\n }\n }\n\n if (result) {\n obtainedText.push(result);\n }\n\n setProgress(((i + 1) / filesLength) * 100);\n }\n }\n onContent(obtainedText);\n })();\n\n ev.target.value = '';\n },\n [onContent],\n );\n\n return { progress, handleFileUpload };\n}\n","/* eslint-disable no-param-reassign */\nimport { FormEvent, KeyboardEvent, useCallback, useState } from 'react';\nimport { ChatMessage, ChatController } from './ChatController';\nimport { IconButton, SimpleButton } from '@apia/components';\nimport { Box, Textarea } from '@apia/theme';\nimport useHandleFileUpload from './files/useHandleFileUpload';\n\nexport const makeTextarea = (gptController: ChatController) => {\n const NewTextarea = ({\n onSubmit,\n }: {\n onSubmit: (text: string) => Promise<void>;\n }) => {\n const [isLoading, setIsLoading] = useState(false);\n\n const submit = useCallback(\n (text: string) => {\n gptController.history.add(text);\n gptController.messages.add(new ChatMessage(text, 'user'));\n\n onSubmit(text).finally(() => {\n setIsLoading(false);\n });\n },\n [onSubmit],\n );\n\n const handleSubmit = useCallback(\n (ev: FormEvent<HTMLFormElement>) => {\n ev.preventDefault();\n //setIsLoading(true);\n const textarea = document.getElementById(\n `GPTMessage${gptController.id}`,\n ) as HTMLTextAreaElement;\n\n if (textarea.value) {\n setIsLoading(true);\n submit(textarea.value);\n }\n\n textarea.focus();\n textarea.value = '';\n },\n [submit],\n );\n\n const onKeyDown = useCallback((ev: KeyboardEvent) => {\n if ((ev.target as HTMLTextAreaElement).readOnly) return;\n\n if (ev.code === 'Enter' && !ev.shiftKey) {\n ev.preventDefault();\n (ev.target as HTMLElement)\n .closest('form')\n ?.querySelector<HTMLButtonElement>('button[type=\"submit\"]')\n ?.click();\n }\n }, []);\n\n const { progress, handleFileUpload } = useHandleFileUpload({\n onContent(content) {\n (\n document.getElementById(\n `GPTMessage${gptController.id}`,\n ) as HTMLTextAreaElement\n ).value = content.join('\\n\\n');\n },\n });\n\n const actualIsLoading = isLoading || progress !== 100;\n\n return (\n <form onSubmit={handleSubmit} action=\"\">\n <Textarea\n onKeyDown={onKeyDown}\n id={`GPTMessage${gptController.id}`}\n readOnly={actualIsLoading}\n />\n <Box className=\"gpt__buttonsContainer\">\n <input\n type=\"file\"\n id={`gptUploadFile__${gptController.id}`}\n sx={{ display: 'none' }}\n onChange={handleFileUpload}\n />\n <IconButton\n icon=\"File\"\n variant=\"icon-outline\"\n isLoading={progress !== 100}\n disabled={isLoading}\n onClick={() => {\n (\n document.getElementById(\n `gptUploadFile__${gptController.id}`,\n ) as HTMLElement\n ).click();\n }}\n size=\"Lg\"\n />\n <SimpleButton\n variant=\"outline\"\n type=\"button\"\n onClick={() => {\n const historyValue = gptController.history.previous();\n if (historyValue)\n (\n document.getElementById(\n `GPTMessage${gptController.id}`,\n ) as HTMLTextAreaElement\n ).value = historyValue;\n }}\n size=\"sm\"\n >\n Previo\n </SimpleButton>\n <SimpleButton\n variant=\"outline\"\n type=\"button\"\n onClick={() => {\n const historyValue = gptController.history.next();\n (\n document.getElementById(\n `GPTMessage${gptController.id}`,\n ) as HTMLTextAreaElement\n ).value = historyValue ?? '';\n }}\n size=\"sm\"\n >\n Siguiente\n </SimpleButton>\n <SimpleButton\n variant=\"outline\"\n type=\"button\"\n onClick={() => gptController.messages.clear()}\n size=\"sm\"\n >\n Borrar\n </SimpleButton>\n <SimpleButton isLoading={actualIsLoading} type=\"submit\" size=\"sm\">\n Enviar\n </SimpleButton>\n </Box>\n </form>\n );\n };\n\n NewTextarea.displayName = '';\n\n return NewTextarea;\n};\n","/* eslint-disable no-param-reassign */\nimport { getVariant } from '@apia/theme';\nimport { EventEmitter } from '@apia/util';\nimport { ReactNode, useEffect, useState } from 'react';\nimport { Box } from '@apia/theme';\nimport { AutoscrollContainer } from './AutoscrollContainer';\nimport { makeTextarea } from './Textarea';\n\nexport type TMessageType =\n | 'user'\n | 'system'\n | 'warning'\n | 'error'\n | 'information'\n | 'response';\n\nlet maxId = 0;\n\nexport class ChatMessage {\n id: number;\n\n parseMessage(message: string) {\n let result = message;\n\n result = result.replaceAll('[strong]', '<strong>');\n result = result.replaceAll('[/strong]', '</strong>');\n\n return result;\n }\n\n constructor(public message: ReactNode, public messageType: TMessageType) {\n this.id = maxId++;\n\n if (messageType === 'response') this.messageType = 'system';\n if (typeof message === 'string') this.message = this.parseMessage(message);\n }\n}\n\nexport class ChatController extends EventEmitter<{\n listChange: ChatMessage[];\n messageSubmited: string;\n}> {\n #messages: ChatMessage[] = [\n new ChatMessage(\n 'Bienvenido, esta interfaz intenta ofrecer una forma alternativa de acceso a las distintas acciones disponibles en el sistema. Interactúa directamente desde el chat o escribe [strong]ayuda[/strong] para conocer las opciones disponibles.',\n 'system',\n ),\n ];\n\n constructor(public id: string) {\n super();\n }\n\n components = {\n MessageHistory: () => {\n const messages = this.history.useList();\n\n return (\n <Box\n {...getVariant('layout.panels.gpt.chat.history')}\n className=\"history\"\n >\n <AutoscrollContainer>\n {messages.map((current) => (\n <Box\n as=\"pre\"\n className={`history__message ${current.messageType}`}\n key={current.id}\n {...(typeof current.message === 'string'\n ? { dangerouslySetInnerHTML: { __html: current.message } }\n : { children: current.message })}\n />\n ))}\n </AutoscrollContainer>\n </Box>\n );\n },\n Textarea: makeTextarea(this),\n };\n\n #promptsHistory: string[] = [];\n #currentHistoryIndex = -1;\n\n history = {\n add: (prompt: string) => {\n this.#currentHistoryIndex = -1;\n\n if (prompt === this.#promptsHistory[this.#promptsHistory.length]) {\n return;\n }\n\n this.#promptsHistory = [\n prompt,\n ...this.#promptsHistory.slice(\n Math.max(0, this.#promptsHistory.length - 10),\n ),\n ];\n },\n next: () => {\n if (this.#promptsHistory[this.#currentHistoryIndex - 1])\n return this.#promptsHistory[--this.#currentHistoryIndex];\n else {\n this.#currentHistoryIndex = -1;\n return '';\n }\n },\n previous: () => {\n if (this.#promptsHistory[this.#currentHistoryIndex + 1]) {\n return this.#promptsHistory[++this.#currentHistoryIndex];\n }\n },\n useList: () => {\n const [messages, setMessages] = useState<ChatMessage[]>(this.#messages);\n\n useEffect(() => {\n return this.on('listChange', (messages) => setMessages(messages));\n }, []);\n\n return messages;\n },\n };\n\n messages = {\n add: (message: ChatMessage) => {\n this.#messages.push(message);\n this.emit('listChange', [...this.#messages]);\n },\n clear: () => {\n this.#messages = [];\n this.emit('listChange', []);\n },\n };\n}\n"],"names":["__spreadProps","__spreadValues","__async","progress","messages"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/components/chat/AutoscrollContainer.tsx","../src/files/ocr/getImageOcrMaker.ts","../src/files/pdf/getPdfReader.ts","../src/components/chat/files/useHandleFileUpload.ts","../src/components/chat/Textarea.tsx","../src/components/chat/ChatController.tsx"],"sourcesContent":["import { getVariant } from '@apia/theme';\nimport { ReactNode, useCallback, useRef } from 'react';\nimport { Box } from '@apia/theme';\n\nexport const AutoscrollContainer = ({ children }: { children: ReactNode }) => {\n const observer = useRef<MutationObserver | null>(null);\n const unsuscribe = useRef<(() => void) | null>(null);\n const isFullScrolled = useRef(false);\n const hasInited = useRef(false);\n\n const ref = useCallback((el: HTMLElement) => {\n if (!el) return;\n\n if (!hasInited.current) {\n hasInited.current = true;\n el.scrollTo({\n top: el.getBoundingClientRect().height,\n behavior: 'auto',\n });\n isFullScrolled.current = true;\n }\n\n observer.current?.disconnect();\n unsuscribe.current?.();\n\n observer.current = new MutationObserver(([mutation]) => {\n if (\n mutation &&\n mutation.target instanceof HTMLElement &&\n mutation.target === el\n ) {\n if (\n isFullScrolled.current &&\n mutation.target.scrollTop !==\n mutation.target.scrollHeight - mutation.target.offsetHeight\n ) {\n // eslint-disable-next-line no-param-reassign\n mutation.target.scrollTop = mutation.target.scrollHeight;\n }\n }\n });\n observer.current.observe(el, { childList: true, subtree: true });\n\n const handleScroll = (ev: Event) => {\n if (ev.target === el && el instanceof HTMLElement) {\n setTimeout(() => {\n isFullScrolled.current =\n Math.abs(el.scrollTop - (el.scrollHeight - el.offsetHeight)) < 150;\n }, 100);\n }\n };\n el.addEventListener('scroll', handleScroll);\n unsuscribe.current = () => {\n el.removeEventListener('scroll', handleScroll);\n };\n }, []);\n\n return (\n <Box\n {...getVariant('layout.common.components.autoscrollContainer')}\n className=\"autoscrollContainer\"\n ref={ref}\n >\n {children}\n </Box>\n );\n};\n","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","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.40189.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","/* eslint-disable no-param-reassign */\nimport { ChangeEvent, useCallback, useState } from 'react';\nimport getImageOcrMaker from '../../../files/ocr/getImageOcrMaker';\nimport getPdfReader from '../../../files/pdf/getPdfReader';\n\nexport default function useHandleFileUpload({\n onContent,\n}: {\n onContent: (content: string[]) => unknown;\n}) {\n const [progress, setProgress] = useState(100);\n\n const handleFileUpload = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => {\n setProgress(0);\n\n const imageProcessor = getImageOcrMaker();\n const pdfProcessor = getPdfReader();\n\n void (async () => {\n const obtainedText: string[] = [];\n const files = ev.target.files;\n const filesLength = ev.target.files?.length ?? 0;\n if (files) {\n for (let i = 0; i < filesLength; i++) {\n const file = files[i];\n\n const handleProgress = (progress: number) => {\n setProgress(\n (i / filesLength) * 100 +\n (1 / filesLength) * 100 * (progress / 100),\n );\n };\n\n let result = '';\n if (imageProcessor.willProcessFile(file)) {\n try {\n result = (\n await imageProcessor.processFile(file, handleProgress)\n )[0];\n } catch (e) {\n console.error(e);\n }\n } else if (pdfProcessor.willProcessFile(file)) {\n result = (\n await pdfProcessor.processFile(file, handleProgress)\n ).join('\\n\\n');\n try {\n } catch (e) {\n console.error(e);\n }\n }\n\n if (result) {\n obtainedText.push(result);\n }\n\n setProgress(((i + 1) / filesLength) * 100);\n }\n }\n onContent(obtainedText);\n })();\n\n ev.target.value = '';\n },\n [onContent],\n );\n\n return { progress, handleFileUpload };\n}\n","/* eslint-disable no-param-reassign */\nimport { FormEvent, KeyboardEvent, useCallback, useState } from 'react';\nimport { ChatMessage, ChatController } from './ChatController';\nimport { IconButton, SimpleButton } from '@apia/components';\nimport { Box, Textarea } from '@apia/theme';\nimport useHandleFileUpload from './files/useHandleFileUpload';\n\nexport const makeTextarea = (gptController: ChatController) => {\n const NewTextarea = ({\n hideDeleteButton,\n onSubmit,\n }: {\n hideDeleteButton?: boolean;\n onSubmit: (text: string) => Promise<void>;\n }) => {\n const [isLoading, setIsLoading] = useState(false);\n\n const submit = useCallback(\n (text: string) => {\n gptController.history.add(text);\n gptController.messages.add(new ChatMessage(text, 'user'));\n\n onSubmit(text).finally(() => {\n setIsLoading(false);\n });\n },\n [onSubmit],\n );\n\n const handleSubmit = useCallback(\n (ev: FormEvent<HTMLFormElement>) => {\n ev.preventDefault();\n //setIsLoading(true);\n const textarea = document.getElementById(\n `GPTMessage${gptController.id}`,\n ) as HTMLTextAreaElement;\n\n if (textarea.value) {\n setIsLoading(true);\n submit(textarea.value);\n }\n\n textarea.focus();\n textarea.value = '';\n },\n [submit],\n );\n\n const onKeyDown = useCallback((ev: KeyboardEvent) => {\n if ((ev.target as HTMLTextAreaElement).readOnly) return;\n\n if (ev.code === 'Enter' && !ev.shiftKey) {\n ev.preventDefault();\n (ev.target as HTMLElement)\n .closest('form')\n ?.querySelector<HTMLButtonElement>('button[type=\"submit\"]')\n ?.click();\n }\n }, []);\n\n const { progress, handleFileUpload } = useHandleFileUpload({\n onContent(content) {\n (\n document.getElementById(\n `GPTMessage${gptController.id}`,\n ) as HTMLTextAreaElement\n ).value = content.join('\\n\\n');\n },\n });\n\n const actualIsLoading = isLoading || progress !== 100;\n\n return (\n <form onSubmit={handleSubmit} className=\"gpt__form\" action=\"\">\n <Textarea\n onKeyDown={onKeyDown}\n id={`GPTMessage${gptController.id}`}\n readOnly={actualIsLoading}\n />\n <Box className=\"gpt__buttonsContainer\">\n <input\n type=\"file\"\n id={`gptUploadFile__${gptController.id}`}\n sx={{ display: 'none' }}\n onChange={handleFileUpload}\n />\n <IconButton\n icon=\"File\"\n variant=\"icon-outline\"\n isLoading={progress !== 100}\n disabled={isLoading}\n onClick={() => {\n (\n document.getElementById(\n `gptUploadFile__${gptController.id}`,\n ) as HTMLElement\n ).click();\n }}\n size=\"Lg\"\n />\n <SimpleButton\n variant=\"outline\"\n type=\"button\"\n onClick={() => {\n const historyValue = gptController.history.previous();\n if (historyValue)\n (\n document.getElementById(\n `GPTMessage${gptController.id}`,\n ) as HTMLTextAreaElement\n ).value = historyValue;\n }}\n size=\"sm\"\n >\n Previo\n </SimpleButton>\n <SimpleButton\n variant=\"outline\"\n type=\"button\"\n onClick={() => {\n const historyValue = gptController.history.next();\n (\n document.getElementById(\n `GPTMessage${gptController.id}`,\n ) as HTMLTextAreaElement\n ).value = historyValue ?? '';\n }}\n size=\"sm\"\n >\n Siguiente\n </SimpleButton>\n {!hideDeleteButton && (\n <SimpleButton\n variant=\"outline\"\n type=\"button\"\n onClick={() => gptController.messages.clear()}\n size=\"sm\"\n >\n Borrar\n </SimpleButton>\n )}\n <SimpleButton isLoading={actualIsLoading} type=\"submit\" size=\"sm\">\n Enviar\n </SimpleButton>\n </Box>\n </form>\n );\n };\n\n NewTextarea.displayName = '';\n\n return NewTextarea;\n};\n","/* eslint-disable no-param-reassign */\nimport { getVariant } from '@apia/theme';\nimport { EventEmitter } from '@apia/util';\nimport { ReactNode, useEffect, useState } from 'react';\nimport { Box } from '@apia/theme';\nimport { AutoscrollContainer } from './AutoscrollContainer';\nimport { makeTextarea } from './Textarea';\n\nexport type TMessageType =\n | 'user'\n | 'system'\n | 'warning'\n | 'error'\n | 'information'\n | 'response';\n\nlet maxId = 0;\n\nexport class ChatMessage {\n id: number;\n\n parseMessage(message: string) {\n let result = message;\n\n result = result.replaceAll('[strong]', '<strong>');\n result = result.replaceAll('[/strong]', '</strong>');\n\n return result;\n }\n\n constructor(public message: ReactNode, public messageType: TMessageType) {\n this.id = maxId++;\n\n if (messageType === 'response') this.messageType = 'system';\n if (typeof message === 'string') this.message = this.parseMessage(message);\n }\n}\n\nexport class ChatController extends EventEmitter<{\n listChange: ChatMessage[];\n messageSubmited: string;\n}> {\n #messages: ChatMessage[] = [\n new ChatMessage(\n 'Bienvenido, esta interfaz intenta ofrecer una forma alternativa de acceso a las distintas acciones disponibles en el sistema. Interactúa directamente desde el chat o escribe [strong]ayuda[/strong] para conocer las opciones disponibles.',\n 'system',\n ),\n ];\n\n constructor(public id: string) {\n super();\n }\n\n components = {\n MessageHistory: () => {\n const messages = this.history.useList();\n\n return (\n <Box\n {...getVariant('layout.panels.gpt.chat.history')}\n className=\"history\"\n >\n <AutoscrollContainer>\n {messages.map((current) => (\n <Box\n as=\"pre\"\n className={`history__message ${current.messageType}`}\n key={current.id}\n {...(typeof current.message === 'string'\n ? { dangerouslySetInnerHTML: { __html: current.message } }\n : { children: current.message })}\n />\n ))}\n </AutoscrollContainer>\n </Box>\n );\n },\n Textarea: makeTextarea(this),\n };\n\n #promptsHistory: string[] = [];\n #currentHistoryIndex = -1;\n\n history = {\n add: (prompt: string) => {\n this.#currentHistoryIndex = -1;\n\n if (prompt === this.#promptsHistory[this.#promptsHistory.length]) {\n return;\n }\n\n this.#promptsHistory = [\n prompt,\n ...this.#promptsHistory.slice(\n Math.max(0, this.#promptsHistory.length - 10),\n ),\n ];\n },\n next: () => {\n if (this.#promptsHistory[this.#currentHistoryIndex - 1])\n return this.#promptsHistory[--this.#currentHistoryIndex];\n else {\n this.#currentHistoryIndex = -1;\n return '';\n }\n },\n previous: () => {\n if (this.#promptsHistory[this.#currentHistoryIndex + 1]) {\n return this.#promptsHistory[++this.#currentHistoryIndex];\n }\n },\n useList: () => {\n const [messages, setMessages] = useState<ChatMessage[]>(this.#messages);\n\n useEffect(() => {\n return this.on('listChange', (messages) => setMessages(messages));\n }, []);\n\n return messages;\n },\n };\n\n messages = {\n add: (message: ChatMessage) => {\n this.#messages.push(message);\n this.emit('listChange', [...this.#messages]);\n },\n clear: () => {\n this.#messages = [];\n this.emit('listChange', []);\n },\n };\n}\n"],"names":["__spreadProps","__spreadValues","__async","progress","messages"],"mappings":"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"}
package/package.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "sideEffects": false,
7
7
  "main": "./dist/index.js",
8
8
  "types": "./dist/index.d.ts",
9
- "version": "0.3.4",
9
+ "version": "0.3.6",
10
10
  "scripts": {
11
11
  "build": "rollup -c rollup.config.esb.mjs",
12
12
  "buildDev": "rollup -c rollup.config.esb.mjs --dev",
@@ -39,11 +39,11 @@
39
39
  "directory": "packages/initiator"
40
40
  },
41
41
  "dependencies": {
42
- "@apia/components": "^0.3.4",
43
- "@apia/theme": "^0.3.4",
44
- "@apia/util": "^0.3.4",
42
+ "@apia/components": "^0.3.6",
43
+ "@apia/theme": "^0.3.6",
44
+ "@apia/util": "^0.3.6",
45
45
  "pdfjs-dist": "^4.0.189",
46
46
  "tesseract.js": "^5.0.3"
47
47
  },
48
- "gitHead": "c85594050cd0abfe6550184ba6d65753a2e1004e"
48
+ "gitHead": "c79e6173bbcd97539bec49c958374a0dc7e9da6f"
49
49
  }
package/.eslintrc.cjs DELETED
@@ -1,128 +0,0 @@
1
- module.exports = {
2
- env: {
3
- browser: true,
4
- node: true
5
- },
6
- overrides: [
7
- {
8
- extends: [
9
- 'plugin:react/recommended',
10
- 'plugin:prettier/recommended',
11
- 'plugin:@typescript-eslint/recommended',
12
- 'plugin:@typescript-eslint/recommended-requiring-type-checking',
13
- 'plugin:@typescript-eslint/strict',
14
- 'plugin:comment-length/recommended',
15
- ],
16
- files: ['*.ts', '*.tsx'],
17
- parserOptions: {
18
- project: `${__dirname}/tsconfig.json`,
19
- },
20
- rules: {
21
- "@typescript-eslint/no-extraneous-class": 0,
22
- "no-undef": "off",
23
- "react/display-name": 0,
24
- "@typescript-eslint/no-unsafe-assignment": 0,
25
- "@typescript-eslint/no-misused-promises": 0,
26
- "import/export": 0,
27
- "@typescript-eslint/no-invalid-void-type": 0,
28
- "no-redeclare": 0,
29
- "no-restricted-imports": ["error", {
30
- "patterns": ["dist"]
31
- }],
32
- "import/no-default-export": 0,
33
- "import/no-cycle": 0,
34
- "import/no-unresolved": "error",
35
- curly: 0,
36
- "comment-length/limit-single-line-comments": [
37
- "error",
38
- {
39
- "maxLength": 80,
40
- "ignoreUrls": true
41
- }
42
- ],
43
- "no-shadow": 0,
44
- "brace-style": 0,
45
- "comment-length/limit-multi-line-comments": [
46
- "warn",
47
- {
48
- "maxLength": 80,
49
- "ignoreUrls": true
50
- }
51
- ],
52
- 'nonblock-statement-body-position': 0,
53
- '@typescript-eslint/no-unnecessary-condition': 0,
54
- 'no-use-before-define': 0,
55
- 'no-plusplus': 0,
56
- 'react/prop-types': 0,
57
- 'import/no-unresolved': 0,
58
- 'import/no-extraneous-dependencies': 0,
59
- indent: 'off',
60
- quotes: 0,
61
- semi: ['error', 'always'],
62
- 'react-hooks/rules-of-hooks': 'error',
63
- 'react-hooks/exhaustive-deps': 'warn',
64
- 'no-console': 'off',
65
- 'prefer-object-spread': 'off',
66
- 'no-unused-vars': 'off',
67
- '@typescript-eslint/no-unused-vars': ["error", { "ignoreRestSiblings": true }],
68
- 'wrap-iife': 0,
69
- 'import/extensions': ['error', 'never'],
70
- 'no-void': 'off',
71
- 'no-restricted-globals': ['error', 'event'],
72
- '@typescript-eslint/no-unnecessary-type-assertion': 'off',
73
- '@typescript-eslint/no-non-null-assertion': 'off',
74
- 'react/react-in-jsx-scope': 'off',
75
- 'class-methods-use-this': 'off',
76
- '@typescript-eslint/non-nullable-type-assertion-style': 'off',
77
- 'linebreak-style': ['off'],
78
- 'no-dupe-class-members': 'off',
79
- "@typescript-eslint/consistent-type-definitions": 0,
80
- "@typescript-eslint/consistent-indexed-object-style": 0,
81
- "arrow-body-style": 0,
82
- 'no-param-reassign': [
83
- 'error',
84
- {
85
- props: true,
86
- ignorePropertyModificationsFor: ['state'],
87
- },
88
- ],
89
- 'import/prefer-default-export': 'off',
90
- 'no-confusing-arrow': 'off',
91
- 'implicit-arrow-linebreak': 'off',
92
- 'function-paren-newline': 'off',
93
- 'object-curly-newline': 'off',
94
- 'no-underscore-dangle': 'off',
95
- 'operator-linebreak': 'off',
96
- '@typescript-eslint/no-empty-function': 'off',
97
- 'import/no-relative-packages': 'off',
98
- 'max-len': 0, /* [ 'error',
99
- {
100
- ignoreComments: true,
101
- ignoreStrings: true,
102
- ignoreTemplateLiterals: true,
103
- ignoreRegExpLiterals: true,
104
- },
105
- ] */
106
- 'prettier/prettier': [
107
- 'error',
108
- {
109
- endOfLine: 'auto',
110
- singleQuote: true,
111
- trailingComma: 'all',
112
- },
113
- ],
114
- 'no-multiple-empty-lines': 'off',
115
- 'react/no-unknown-property': ['error', { ignore: ['sx'] }],
116
- },
117
- },
118
- ],
119
- parser: '@typescript-eslint/parser',
120
- plugins: ['react-hooks', '@typescript-eslint', "import"],
121
- ignorePatterns: ['dist', 'lib', 'node_modules'],
122
- settings: {
123
- react: {
124
- version: 'detect',
125
- },
126
- },
127
- root: true,
128
- };
@@ -1,56 +0,0 @@
1
- import bundleAnalyzer from "rollup-plugin-bundle-analyzer";
2
- import commonjs from '@rollup/plugin-commonjs';
3
- import dts from "rollup-plugin-dts";
4
- import esbuild from 'rollup-plugin-esbuild';
5
- import fs from 'fs';
6
-
7
- const entriesFile = './entries.json';
8
- let localEntries = ['src/index.ts'];
9
- if (fs.existsSync(entriesFile)) {
10
- localEntries = JSON.parse(
11
- fs.readFileSync(entriesFile).toString(),
12
- );
13
- }
14
-
15
- const isDevelopment = process.argv.includes('--dev');
16
- const shouldWatch = process.argv.includes('--watch');
17
- const shouldAnalyze = process.argv.includes('--analyze');
18
-
19
- const onwarn = (current, warn) => {
20
- if (!['UNRESOLVED_IMPORT', 'UNKNOWN_OPTION'].includes(current.code))
21
- warn(current);
22
- }
23
-
24
- export default [{
25
- input: localEntries,
26
- onwarn,
27
- watch: shouldWatch,
28
- output: [{
29
- dir: 'dist',
30
- format: 'es',
31
- sourcemap: isDevelopment
32
- }],
33
- plugins: [
34
- dts()
35
- ].filter(Boolean),
36
- }, {
37
- input: localEntries,
38
- onwarn,
39
- watch: shouldWatch,
40
- output: [{
41
- dir: 'dist',
42
- format: 'es',
43
- sourcemap: isDevelopment
44
- }],
45
- plugins: [
46
- commonjs(),
47
- esbuild({
48
- include: /\.[jt]sx?$/,
49
- exclude: /node_modules/,
50
- sourceMap: isDevelopment,
51
- minify: false,
52
- tsconfig: 'tsconfig.json'
53
- }),
54
- shouldAnalyze && bundleAnalyzer()
55
- ].filter(Boolean),
56
- }];