code7-leia 0.2.11 → 0.2.16

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.
@@ -1 +1 @@
1
- {"version":3,"file":"code7-leia.cjs.production.min.js","sources":["../src/components/Tabs/styles.tsx","../src/components/Tabs/index.tsx","../src/utils/languages/en.ts","../src/utils/languages/pt-br.ts","../src/utils/languages/es.ts","../src/utils/getLanguage.tsx","../src/components/FileArea/styles.tsx","../src/components/FileArea/components/Table/styles.tsx","../src/components/FileArea/components/Spinner/styles.tsx","../src/components/FileArea/components/Spinner/index.tsx","../src/components/FileArea/components/Table/index.tsx","../src/components/FileArea/components/Search/styles.tsx","../src/components/FileArea/components/Search/index.tsx","../src/components/FileArea/components/Modal/styles.tsx","../src/components/FileArea/components/Modal/ModalFooter.tsx","../src/components/FileArea/components/Modal/ModalContent.tsx","../src/components/FileArea/components/Modal/index.tsx","../src/components/EmptyState/styles.tsx","../src/components/EmptyState/index.tsx","../src/components/MultiSelect/styles.tsx","../src/components/MultiSelect/index.tsx","../src/components/FileArea/components/AreaUpload/styles.tsx","../src/components/FileArea/components/AreaUpload/index.tsx","../src/service/Api.ts","../src/contexts/SharedPropsProvider.tsx","../src/store/modules/actions.ts","../src/store/modules/types.ts","../src/components/FileArea/index.tsx","../src/components/TestArea/styles.tsx","../src/components/Select/styles.tsx","../src/components/Select/index.tsx","../src/components/TestArea/components/InputTest/styles.tsx","../src/components/TestArea/components/InputTest/index.tsx","../src/components/TestArea/index.tsx","../src/Leia.tsx","../src/store/modules/reducer.ts","../src/components/CustomToast/index.tsx","../src/store/modules/sagas.ts","../src/store/index.ts","../src/index.tsx"],"sourcesContent":["import styled from 'styled-components';\nimport { ReactNode } from 'react';\n\ninterface TabProps {\n children: ReactNode;\n}\n\ninterface OptionProps {\n children: ReactNode;\n onClick: () => void;\n}\n\nexport const TabsPane = styled.ul`\n width: max-content;\n display: flex;\n align-items: center;\n border-bottom: 1px solid var(--neutral-1);\n`;\n\nexport const Tab = styled.li<TabProps>`\n padding: 12px;\n color: var(--neutral-3);\n font-size: 0.875rem;\n font-weight: normal;\n position: relative;\n cursor: pointer;\n\n svg {\n fill: var(--neutral-3) !important;\n margin-left: 8px;\n }\n\n &.active {\n color: var(--primary-700-light);\n\n svg {\n fill: var(--primary-700-light) !important;\n }\n\n ::after {\n content: '';\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 2px;\n background-color: var(--primary-700-light);\n }\n }\n\n &:not(:last-child) {\n margin-right: 8px;\n }\n`;\n\nexport const DropdownContainer = styled.div`\n position: absolute;\n left: 0px;\n top: 40px;\n display: flex;\n flex-direction: column;\n\n background: #ffffff;\n\n border: 1px solid #979aa5;\n box-sizing: border-box;\n box-shadow: 0px 6px 12px -6px rgba(24, 39, 75, 0.12),\n 0px 8px 24px -4px rgba(24, 39, 75, 0.08);\n border-radius: 4px;\n padding: 8px;\n z-index: 2;\n`;\n\nexport const Option = styled.div<OptionProps>`\n padding: 8px;\n font-size: 14px;\n border-radius: 4px;\n cursor: pointer;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n &:hover {\n background-color: var(--primary-800-light);\n color: white;\n }\n`;\n","import React, { ReactNode } from 'react';\nimport PropTypes from 'prop-types';\nimport cc from 'classcat';\n\nimport * as S from './styles';\n\ninterface TabProps {\n children: ReactNode;\n active?: boolean;\n}\n\ninterface ITabsProps {\n children: ReactNode;\n value: string | number;\n onChange: (e: any) => void;\n active?: boolean;\n}\n\nexport const Tab = ({ active, children, ...rest }: TabProps) => {\n return (\n <S.Tab className={cc({ active })} {...rest}>\n {children}\n </S.Tab>\n );\n};\n\nTab.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n ]).isRequired,\n onChange: PropTypes.func,\n value: PropTypes.string,\n active: PropTypes.bool,\n};\n\nTab.defaultProps = {\n onChange: () => {},\n value: '',\n active: false,\n};\n\nexport const Tabs = ({ children: childrenProp, value, onChange, ...rest }: ITabsProps) => {\n const children = React.Children.map(childrenProp, (child) => {\n if (!React.isValidElement(child)) {\n return null;\n }\n\n if (Array.isArray(child.props?.children)) {\n return React.cloneElement(child as React.ReactElement<any>, {\n active: child.props?.value === value,\n value,\n onChange,\n });\n }\n\n return React.cloneElement(child as React.ReactElement<any>, {\n active: child.props?.value === value,\n onClick: () => onChange(child.props?.value),\n });\n });\n\n return <S.TabsPane {...rest}>{children}</S.TabsPane>;\n};\n\nTabs.propTypes = {\n children: PropTypes.node.isRequired,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\n onChange: PropTypes.func.isRequired,\n};\n","import { Language } from \"../../interface/Language\";\n\nexport const enTranslation: Language = {\n files: 'Files',\n test: 'Test',\n fileArea: {\n description: 'Manage your files with ease! Add new ones and delete old ones as desired.',\n fileName: 'File name',\n status: 'Status',\n presset: 'Presset',\n actions: 'Actions',\n search: 'Search',\n fileUpload: 'File upload',\n training: 'Train preset',\n emptyState: {\n title: 'No data',\n description: 'No files uploaded yet. Start by adding your documents now!',\n },\n modal: {\n descriptionUpload: 'Drag and drop files here or',\n chooseFile: 'Choose a file',\n uploadFile: 'Upload a file',\n deleteFileTitle: 'Delete a file',\n deleteFile: 'Important! By deleting this file, you will lose all its information and will not be able to recover it.',\n trainingTitle: 'Presset Training',\n trainingDescription: 'Select one or more pressets to be trained. Note: If none are selected, Le-IA will train all pressets.'\n },\n },\n buttons: {\n cancel: 'Cancel',\n send: 'Send',\n delete: 'Delete',\n test: 'Test',\n addNewPresset: 'Add new presset',\n addPresset: 'Add presset',\n training: 'Training'\n },\n testArea: {\n description: 'Type a sentence to test artificial intelligence',\n typeSentence: 'Type a sentence',\n selectPersona: 'Select a Persona',\n selectPresset: 'Select a presset',\n emptyState: {\n title: 'No data for analysis',\n description: 'Do a search, click the \"Test\" button.',\n },\n },\n toast: {\n deleteFile: {\n success: {\n title: 'Success',\n description: 'File deleted successfully!'\n },\n fail: {\n title: 'Failure',\n description: 'Error deleting the file!'\n }\n },\n uploadFile: {\n success: {\n title: 'Success',\n description: 'File uploaded successfully!'\n },\n fail: {\n title: 'Failure',\n description: 'Error uploading the file!'\n }\n },\n Test: {\n fail: {\n title: 'Failure',\n description: 'Error testing Le-IA'\n }\n },\n Train: {\n fail: {\n title: 'Failure',\n description: 'Error training Le-IA'\n },\n success: {\n title: 'Success',\n description: 'Le-IA is in the training process!'\n }\n }\n }\n};","import { Language } from \"../../interface/Language\";\n\nexport const ptTranslation: Language = {\n files: 'Arquivos',\n test: 'Teste',\n fileArea: {\n description: 'Gerencie seus arquivos com facilidade! Adicione novos e exclua os antigos conforme desejar.',\n fileName: 'Nome do arquivo',\n status: 'Status',\n presset: 'Predefinição',\n actions: 'Ações',\n search: 'Pesquisar',\n fileUpload: 'Enviar arquivo',\n training: 'Treinar predefinição',\n emptyState: {\n title: 'Sem dados',\n description: 'Nenhum arquivo enviado ainda. Comece adicionando seus documentos agora!',\n },\n modal: {\n descriptionUpload: 'Arraste e solte os arquivos aqui ou',\n chooseFile: 'Escolha um arquivo',\n uploadFile: 'Enviar um arquivo',\n deleteFileTitle: 'Excluir um arquivo',\n deleteFile: 'Importante! Ao excluir este arquivo, você perderá todas as suas informações e não poderá recuperá-las.',\n trainingTitle: 'Treinamento de predefinição',\n trainingDescription: 'Selecione um ou mais predefinições para serem treinadas. Obs: Caso não selecionada nenhuma a Le-IA irá treinar todas as predefinições'\n },\n },\n buttons: {\n cancel: 'Cancelar',\n send: 'Enviar',\n delete: 'Excluir',\n test: 'Teste',\n addNewPresset: 'Adicionar nova predefinição',\n addPresset: 'Adicionar predefinição',\n training: 'Treinamento'\n },\n testArea: {\n description: 'Digite uma frase para testar a inteligência artificial.',\n typeSentence: 'Digite uma frase',\n selectPersona: 'Selecione uma Persona',\n selectPresset: 'Selecione uma predefinição',\n emptyState: {\n title: 'Sem dados para análise',\n description: 'Faça uma pesquisa, clique no botão \"Teste\".',\n },\n },\n toast: {\n deleteFile: {\n success: {\n title: 'Sucesso',\n description: 'Arquivo excluído com sucesso!'\n },\n fail: {\n title: 'Falha',\n description: 'Erro ao excluir o arquivo!'\n }\n },\n uploadFile: {\n success: {\n title: 'Sucesso',\n description: 'Arquivo enviado com sucesso!'\n },\n fail: {\n title: 'Falha',\n description: 'Erro ao enviar o arquivo!'\n }\n },\n Test: {\n fail: {\n title: 'Falha',\n description: 'Erro ao testar Le-IA'\n }\n },\n Train: {\n fail: {\n title: 'Falha',\n description: 'Erro ao treinar a Le-IA'\n },\n success: {\n title: 'Sucesso',\n description: 'A Le-IA está em processo de treinamento!'\n }\n }\n }\n};\n","import { Language } from \"../../interface/Language\";\n\nexport const esTranslation: Language = {\n files: 'Archivos',\n test: 'Prueba',\n fileArea: {\n description: '¡Administre sus archivos fácilmente! Agregue nuevos y elimine los antiguos según desee.',\n fileName: 'Nombre del archivo',\n status: 'Status',\n presset: 'Preconfiguración',\n actions: 'Acciones',\n search: 'Buscar',\n fileUpload: 'Subir archivo',\n training: 'Entrenar preconfiguración',\n emptyState: {\n title: 'Sin datos',\n description: 'Aún no se han subido archivos. ¡Comience agregando sus documentos ahora!',\n },\n modal: {\n descriptionUpload: 'Arrastre y suelte los archivos aquí o',\n chooseFile: 'Elegir un archivo',\n uploadFile: 'Subir un archivo',\n deleteFileTitle: 'Eliminar un archivo',\n deleteFile: '¡Importante! Al eliminar este archivo, perderá toda su información y no podrá recuperarla.',\n trainingTitle: 'Entrenamiento de preconfiguración',\n trainingDescription: 'Seleccione una o más preconfiguracións para ser entrenadas. Nota: Si no se selecciona ninguna, Le-IA entrenará todas las preconfiguracións.'\n },\n },\n buttons: {\n cancel: 'Cancelar',\n send: 'Enviar',\n delete: 'Eliminar',\n test: 'Prueba',\n addNewPresset: 'Agregar nueva preconfiguración',\n addPresset: 'Agregar preconfiguración',\n training: 'Capacitación'\n },\n testArea: {\n description: 'Escribe una frase para probar la inteligencia artificial.',\n typeSentence: 'Escribe una oración',\n selectPersona: 'Seleccionar una Persona',\n selectPresset: 'Seleccionar una preconfiguración',\n emptyState: {\n title: 'Sin datos para el análisis',\n description: 'Realice una búsqueda, haga clic en el botón \"Prueba\".',\n },\n },\n toast: {\n deleteFile: {\n success: {\n title: 'Éxito',\n description: '¡Archivo eliminado correctamente!'\n },\n fail: {\n title: 'Error',\n description: 'Error al eliminar el archivo!'\n }\n },\n uploadFile: {\n success: {\n title: 'Éxito',\n description: '¡Archivo subido correctamente!'\n },\n fail: {\n title: 'Error',\n description: 'Error al subir el archivo!'\n }\n },\n Test: {\n fail: {\n title: 'Error',\n description: 'Error al probar Le-IA'\n }\n },\n Train: {\n fail: {\n title: 'Error',\n description: 'Error al entrenar Le-IA'\n },\n success: {\n title: 'Éxito',\n description: '¡Le-IA está en proceso de entrenamiento!'\n }\n }\n }\n};\n","import { Language } from '../interface/Language';\nimport { enTranslation } from './languages/en';\nimport { ptTranslation } from './languages/pt-br';\nimport { esTranslation } from './languages/es';\n\nexport const getLanguage = (language: keyof Record<'en' | 'pt-br' | 'es', Language>): Language => {\n switch (language) {\n case 'en':\n return enTranslation;\n case 'pt-br':\n return ptTranslation;\n case 'es':\n return esTranslation;\n default:\n return enTranslation;\n }\n};","import styled, { css } from 'styled-components';\n\ninterface ContainerProps {\n isloading?: boolean;\n}\n\nexport const Container = styled.div<ContainerProps>`\n ${(props) =>\n props.isloading &&\n css`\n #loading {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgb(151,154,165, 0.7);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 9999;\n }\n\n #loading::after {\n content: \"\";\n border: 4px solid #f3f3f3; /* Cor do símbolo de carregamento */\n border-top: 4px solid #5a5d68; /* Cor do símbolo de carregamento */\n border-radius: 50%;\n width: 13px;\n height: 13px;\n animation: spin 1s linear infinite;\n }\n\n @keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n `}\n\n\n .tag {\n padding: 4px 8px 4px 8px;\n background: #C7F9ED;\n border-radius: 4px;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n\n .tags {\n display: flex;\n justify-content: left;\n gap: 4px;\n }\n\n .divDelete {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n gap: 4px;\n }\n\n .buttonDelete {\n color: #5b0a1f;\n background: #fae0d2;\n padding: 12px 20px;\n border-radius: 4px;\n }\n\n .buttonDelete:hover {\n background: #f5bba7;\n }\n\n .buttonTraining {\n color: #023906;\n background: #e3f8cc;\n padding: 12px 20px;\n border-radius: 4px;\n margin-right: 10px;\n }\n\n .buttonTraining:hover {\n background: #90d665;\n }\n\n .button {\n padding: 8px 16px 8px 16px;\n border-radius: 4px;\n gap: 10px;\n }\n\n .cancel {\n background: #F3F5F9;\n color: #5A5D68;\n }\n\n .send {\n background: #102693;\n color: white;\n }\n\n .delete {\n background: #871821;\n color: white;\n }\n\n .presset {\n padding-top: 10px;\n display: flex;\n flex-direction: column;\n\n p {\n font-size: 14px;\n font-weight: 600;\n padding: 4px 0;\n }\n }\n\n #warning {\n padding: 10px;\n background: #FAE0D2;\n color: #871821;\n }\n\n #info {\n padding: 10px;\n background: #c7f9ed;\n color: #00344e;\n }\n\n`;\n\nexport const Header = styled.div`\n display: flex;\n flex-direction: column;\n\n #button-upload {\n margin-right: 10px;\n }\n\n .infos {\n display: flex;\n flex-direction: column;\n padding: 14px 0;\n\n h2 {\n font-size: 20px\n }\n\n p {\n font-size: 14px\n }\n }\n\n .actions {\n display: flex;\n justify-content: space-between;\n padding-bottom: 14px;\n\n button {\n background: #102693;\n padding: 10px 20px;\n color: white;\n border-radius: 4px;\n }\n }\n\n`\n","import styled from 'styled-components';\n\nexport const TableWrapper = styled.div`\n width: 100%;\n height: max-content;\n min-height: 50px;\n position: relative;\n`;\n\nexport const Table = styled.table`\n font-size: 14px;\n line-height: 143%;\n color: black;\n width: 100%;\n border-collapse: collapse;\n border-radius: 4px;\n\n th {\n font-weight: 600;\n font-size: 14px;\n line-height: 143%;\n letter-spacing: 0.018em;\n color: #5A5D68;\n text-align: left;\n padding: 8px;\n border-radius: 4px;\n }\n\n thead tr {\n background: #dadce3;\n }\n\n tbody tr {\n border: 1px solid #dadce3;\n }\n\n &.small td {\n padding: 4px;\n }\n\n &.medium td {\n padding: 8px;\n }\n\n &.large td {\n padding: 16px;\n }\n`;\n\nexport const TableLoadingWrapper = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: #f3f5f961;\n`;\n","import styled from 'styled-components';\n\nexport const SpinnerWrapper = styled.span`\n display: inline-block;\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n\n &.spinner--sm {\n width: 24px;\n height: 24px;\n }\n\n &.spinner--md {\n width: 32px;\n height: 32px;\n }\n\n &.spinner--lg {\n width: 60px;\n height: 60px;\n }\n\n span {\n box-sizing: border-box;\n display: block;\n position: absolute;\n width: 100%;\n height: 100%;\n margin: 8px;\n border: 4px solid #fff;\n border-radius: 50%;\n animation: rotateSpinner 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;\n border-color: ${(props) => `var(--${props.color})`} transparent transparent\n transparent;\n }\n\n & span:nth-child(1) {\n animation-delay: -0.45s;\n }\n\n & span:nth-child(2) {\n animation-delay: -0.3s;\n }\n\n & span:nth-child(3) {\n animation-delay: -0.15s;\n }\n\n @keyframes rotateSpinner {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n`;\n","import React from 'react';\nimport cc from 'classcat';\n\nimport * as S from './styles';\n\nimport { SpinnerProps } from '../../../../interface/Table'\n\nconst Spinner: React.FC<SpinnerProps> = ({ color = 'neutral-3', size = 'md', className }) => {\n return (\n <S.SpinnerWrapper\n color={color}\n className={cc([`spinner--${size}`, className])}\n >\n <span />\n <span />\n <span />\n <span />\n </S.SpinnerWrapper>\n );\n};\n\nexport default Spinner;\n","import React, { forwardRef, Ref } from 'react';\nimport PropTypes from 'prop-types';\nimport cc from 'classcat';\n\nimport * as S from './styles';\nimport Spinner from '../Spinner';\n\nimport { TableProps } from '../../../../interface/Table'\n\nconst Table = forwardRef(\n ({ size = 'medium', children, isloading = false, className = '', ...props }: TableProps, ref: Ref<HTMLTableElement>) => {\n return (\n <S.TableWrapper className={className}>\n {isloading ? (\n <S.TableLoadingWrapper>\n <Spinner />\n </S.TableLoadingWrapper>\n ) : null}\n <S.Table className={cc([size])} ref={ref} {...props}>\n {children}\n </S.Table>\n </S.TableWrapper>\n );\n }\n);\n\nTable.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string,\n size: PropTypes.oneOf(['small', 'medium', 'large']),\n isloading: PropTypes.bool,\n};\n\nexport default Table;\n","import styled from 'styled-components';\n\nexport const InputContainer = styled.div`\n position: relative;\n width: 300px;\n`;\n\nexport const Input = styled.input`\n padding-left: 40px;\n border-radius: 5px;\n border: 1px solid #ccc;\n height: 45px;\n width: 100%;\n\n &:focus {\n outline: none;\n box-shadow: 0 0 0 3px #6690ff;\n }\n`;\n\nexport const IconContainer = styled.div`\n position: absolute;\n top: 14px;\n left: 10px;\n pointer-events: none;\n`;\n","import React from 'react';\nimport unorm from 'unorm';\nimport { FaSearch } from 'react-icons/fa';\nimport { InputContainer, Input, IconContainer } from './styles';\nimport type { FileData } from '../../../../interface/FileData';\n\ninterface SearchInputProps {\n placeholder: string;\n initialFiles: FileData[];\n setFiles: React.Dispatch<React.SetStateAction<FileData[]>>;\n}\n\nconst SearchInput: React.FC<SearchInputProps> = ({\n placeholder,\n setFiles,\n initialFiles,\n}) => {\n const searchName = (e: React.ChangeEvent<HTMLInputElement>) => {\n const searchTerm = e.target.value.trim();\n const normalizedSearchTerm = unorm.nfkd(searchTerm).toLowerCase();\n\n const newFiles = initialFiles.filter((file) => {\n const normalizedFileName = unorm.nfkd(file.name).toLowerCase();\n return normalizedFileName.includes(normalizedSearchTerm);\n });\n\n setFiles(searchTerm !== '' ? newFiles : initialFiles);\n };\n\n return (\n <InputContainer>\n <Input\n type=\"text\"\n onChange={(e: any) => searchName(e)}\n placeholder={placeholder}\n />\n <IconContainer>\n <FaSearch />\n </IconContainer>\n </InputContainer>\n );\n};\n\nexport default SearchInput;\n","import styled from 'styled-components';\n\ninterface FullScreenProps {\n isopen: number;\n isfixed: number;\n zindex: number;\n}\n\nexport const FullScreen = styled.div<FullScreenProps>`\n display: ${({ isopen }) => (isopen === 1 ? 'flex' : 'none')};\n cursor: ${({ isfixed }) => (isfixed === 0 ? 'pointer' : 'default')};\n\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n justify-content: center;\n align-items: center;\n z-index: ${({ zindex }) => zindex};\n animation: fadeIn 380ms ease-in-out 1;\n background-color: #2f3845b8;\n backdrop-filter: blur(2px);\n\n @keyframes fadeIn {\n from {\n background-color: #2f384521;\n }\n to {\n background-color: #2f3845b8;\n }\n }\n`;\n\ninterface ModalProps {\n maxwidth?: string;\n maxheight?: string;\n}\n\nexport const Modal = styled.div<ModalProps>`\n background-color: #fff;\n border-radius: 3px;\n position: relative;\n cursor: default;\n width: 100%;\n max-width: ${({ maxwidth }) => maxwidth};\n animation: slideIn 350ms cubic-bezier(0.42, 0, 0.21, 1) 1;\n\n @keyframes slideIn {\n from {\n transform: translateY(-120px);\n opacity: 0;\n }\n\n 20% {\n opacity: 0;\n }\n\n to {\n transform: translateY(0);\n opacity: 1;\n }\n }\n`;\n\ninterface ModalContainerProps {\n maxheight?: string;\n}\n\nexport const ModalContainer = styled.div<ModalContainerProps>`\n width: 100%;\n overflow-y: auto;\n max-height: ${({ maxheight }) => maxheight};\n`;\n\nexport const ModalHeader = styled.header`\n display: flex;\n justify-content: space-between;\n align-items: center;\n border-bottom: 1px solid #dadce3;\n padding: var(--spacement-medium);\n`;\n\nexport const ModalTitle = styled.div`\n font-style: normal;\n font-weight: normal;\n font-size: 20px;\n line-height: 150%;\n letter-spacing: 0.0075em;\n color: var(--neutral-4);\n`;\n\nexport const ModalButtonClose = styled.button`\n outline: none;\n cursor: pointer;\n\n :hover {\n opacity: 0.7;\n }\n`;\n\ninterface ModalContentWrapperProps {\n overflowy?: string;\n maxheight?: string;\n}\n\nexport const ModalContentWrapper = styled.div<ModalContentWrapperProps>`\n width: 100%;\n overflow-y: ${({ overflowy }) => overflowy};\n max-height: ${({ maxheight }) => maxheight};\n padding: var(--spacement-medium);\n`;\n\nexport const ModalFooterWrapper = styled.div`\n padding: var(--spacement-medium);\n background: var(--neutral-0);\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: var(--spacement-medium);\n`;\n","import React, { ReactNode } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { ModalFooterWrapper } from './styles';\n\ninterface ModalFooterProps {\n children: ReactNode;\n}\n\nconst ModalFooter: React.FC<ModalFooterProps> = ({ children, ...rest }) => {\n return <ModalFooterWrapper {...rest}>{children}</ModalFooterWrapper>;\n};\n\nModalFooter.propTypes = {\n children: PropTypes.node.isRequired,\n};\n\nexport default ModalFooter;\n","import React, { ReactNode } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { ModalContentWrapper } from './styles';\n\ninterface ModalContentProps {\n children: ReactNode;\n maxheight?: string;\n overflowy?: string;\n}\n\nconst ModalContent: React.FC<ModalContentProps> = ({ children, maxheight = 'max-content', overflowy = 'initial', ...rest }) => {\n return (\n <ModalContentWrapper maxheight={maxheight} overflowy={overflowy} {...rest}>\n {children}\n </ModalContentWrapper>\n );\n};\n\nModalContent.propTypes = {\n children: PropTypes.node.isRequired,\n maxheight: PropTypes.string,\n overflowy: PropTypes.string,\n};\n\nexport default ModalContent;\n","import React, { useEffect, useCallback, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { MdClose } from 'react-icons/md';\n\nimport * as S from './styles';\nimport ModalFooter from './ModalFooter';\nimport ModalContent from './ModalContent';\nimport ModalHeader from './ModalHeader';\nimport ModalTitle from './ModalTitle';\nimport ModalButtonClose from './ModalButtonClose';\n\ninterface ModalProps {\n isopen: boolean;\n style?: React.CSSProperties;\n maxwidth?: string;\n maxheight?: string;\n className?: string;\n title?: string | React.ReactElement | React.ComponentType;\n children: React.ReactNode;\n onClose?: () => void;\n contentStyle?: React.CSSProperties;\n isfixed?: boolean;\n zindex?: number;\n}\n\nconst Modal: React.FC<ModalProps> = ({\n isopen,\n style,\n maxwidth,\n maxheight,\n className,\n title,\n children,\n onClose,\n contentStyle,\n isfixed,\n zindex,\n}) => {\n const modalRef = useRef<HTMLDivElement>(null);\n\n const handleKeyUp = useCallback(\n (e: KeyboardEvent) => {\n const keys: { [key: number]: () => void } = {\n // ESC Key\n 27: () => {\n e.preventDefault();\n if (!isfixed && onClose) {\n onClose();\n }\n window.removeEventListener('keyup', handleKeyUp, false);\n },\n };\n\n if (keys[e.keyCode] && isopen) {\n keys[e.keyCode]();\n }\n },\n [onClose, isopen, isfixed]\n );\n\n const handleOutsideClick = useCallback(\n (e: MouseEvent) => {\n if (modalRef.current && modalRef.current.parentNode === e.target) {\n if (!isfixed && onClose) {\n onClose();\n }\n document.removeEventListener('click', handleOutsideClick, false);\n }\n },\n [onClose, isfixed]\n );\n\n useEffect(() => {\n window.addEventListener('keyup', handleKeyUp, false);\n document.addEventListener('click', handleOutsideClick, false);\n\n return () => {\n window.removeEventListener('keyup', handleKeyUp, false);\n document.removeEventListener('click', handleOutsideClick, false);\n };\n }, [handleKeyUp, handleOutsideClick]);\n\n return (\n <S.FullScreen isfixed={isfixed ? 1 : 0} isopen={isopen ? 1 : 0} zindex={zindex ?? 0}>\n <S.Modal ref={modalRef} style={style} maxwidth={maxwidth} className={className}>\n <S.ModalContainer className=\"styleOverlay\" maxheight={maxheight} style={contentStyle}>\n <S.ModalHeader>\n <S.ModalTitle>{String(title)}</S.ModalTitle>\n <S.ModalButtonClose type=\"button\" onClick={onClose}>\n <MdClose color=\"#5A5D68\" size={16} />\n </S.ModalButtonClose>\n </S.ModalHeader>\n {children}\n </S.ModalContainer>\n </S.Modal>\n </S.FullScreen>\n );\n};\n\nModal.propTypes = {\n isopen: PropTypes.bool.isRequired,\n title: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.string,\n PropTypes.func,\n ]),\n children: PropTypes.node.isRequired,\n onClose: PropTypes.func,\n style: PropTypes.objectOf(PropTypes.any),\n contentStyle: PropTypes.objectOf(PropTypes.any),\n className: PropTypes.string,\n maxwidth: PropTypes.string,\n maxheight: PropTypes.string,\n isfixed: PropTypes.bool,\n zindex: PropTypes.number,\n};\n\nModal.defaultProps = {\n title: '',\n style: {},\n contentStyle: {},\n className: '',\n maxwidth: '360px',\n maxheight: 'max-content',\n isfixed: false,\n onClose: () => {},\n zindex: 9999,\n};\n\nexport { ModalHeader, ModalTitle, ModalButtonClose, ModalContent, ModalFooter };\nexport default Modal;\n","import styled from 'styled-components';\n\ninterface ContainerProps {\n hasborder?: boolean;\n backgroundcolor?: string;\n backgroundicon?: string;\n}\n\nexport const Container = styled.div<ContainerProps>`\n width: 100%;\n display: flex;\n justify-content: center;\n padding: 24px 0;\n height: 193px;\n \n p {\n margin: 10px 0;\n }\n\n background: ${({ hasborder }) =>\n hasborder &&\n `linear-gradient(\n to right,\n #dadce3 50%,\n rgba(255, 255, 255, 0) 0%\n ),\n linear-gradient(#dadce3 50%, rgba(255, 255, 255, 0) 0%),\n linear-gradient(to right, #dadce3 50%, rgba(255, 255, 255, 0) 0%),\n linear-gradient(#dadce3 50%, rgba(255, 255, 255, 0) 0%)`};\n background-position: top, right, bottom, left;\n background-repeat: repeat-x, repeat-y;\n background-size: 40px 1px, 1px 40px;\n background-color: ${({ backgroundcolor }) => backgroundcolor};\n\n button {\n background: #102693;\n color: white;\n width: fit-content;\n padding: 10px 20px;\n border-radius: 4px;\n }\n\n & .content {\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n & > .icon {\n background-color: ${({ backgroundicon }) => backgroundicon};\n border-radius: 16px;\n width: 145px;\n height: 145px;\n\n display: flex;\n justify-content: center;\n\n & svg {\n width: 100%;\n height: 70%;\n margin: 20px;\n }\n }\n\n & .description {\n max-width: 600px;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n padding: 8px 0 8px 24px;\n\n .button-add {\n cursor: pointer;\n }\n\n .start-icon {\n display: flex;\n align-items: center;\n }\n }\n }\n`;\n","import React, { FC, ReactElement } from 'react';\nimport PropTypes from 'prop-types';\nimport * as S from './styles';\n\ninterface EmptyStateProps {\n icon?: string | ReactElement;\n title?: string;\n description?: string;\n activeButton?: boolean;\n iconButton?: ReactElement;\n descriptionButton?: string;\n widthButton?: string;\n button?: ReactElement;\n backgroundIcon?: string;\n backgroundColor?: string;\n hasborder?: boolean;\n}\n\nconst EmptyState: FC<EmptyStateProps> = ({\n icon,\n title,\n description,\n activeButton,\n iconButton,\n descriptionButton,\n widthButton,\n button,\n backgroundIcon,\n backgroundColor,\n hasborder,\n ...rest\n}) => {\n return (\n <S.Container\n backgroundicon={backgroundIcon}\n backgroundcolor={backgroundColor}\n hasborder={hasborder}\n {...rest}\n >\n <div className=\"content\">\n <div className=\"icon\">\n {icon}\n </div>\n <div className=\"description\">\n <h5> {title}</h5>\n\n <p>{description}</p>\n\n {activeButton ? (\n <button>\n {iconButton} {descriptionButton}\n </button>\n ) : null}\n\n {button}\n </div>\n </div>\n </S.Container>\n );\n};\n\nEmptyState.propTypes = {\n icon: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),\n title: PropTypes.string,\n description: PropTypes.string,\n activeButton: PropTypes.bool,\n iconButton: PropTypes.element,\n descriptionButton: PropTypes.string,\n widthButton: PropTypes.string,\n button: PropTypes.element,\n backgroundIcon: PropTypes.string,\n backgroundColor: PropTypes.string,\n hasborder: PropTypes.bool,\n};\n\nEmptyState.defaultProps = {\n icon: '',\n title: '',\n description: '',\n activeButton: false,\n descriptionButton: '',\n widthButton: '140px',\n backgroundIcon: 'var(--neutral-0)',\n backgroundColor: 'var(--absolute-white)',\n hasborder: true,\n};\n\nexport default EmptyState;\n","import styled from 'styled-components';\n\nexport const MultiSelectWrapper = styled.div`\n width: 100%;\n height: 45px;\n`;\n\nexport const SelectBox = styled.div`\n position: relative;\n\n select {\n width: 100%;\n font-weight: bold;\n height: 45px;\n border-radius: 4px;\n }\n`;\n\nexport const OverSelect = styled.div`\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n display: flex;\n\n input {\n height: 43px;\n width: calc(100% - 30px);\n border: none;\n margin: 1px;\n\n &:focus {\n outline: none;\n box-shadow: 0 0 0 3px #6690ff;\n }\n }\n`;\n\nexport const Checkboxes = styled.div`\n display: none;\n background: white;\n position: absolute;\n width: 95%;\n z-index: 10;\n\n label {\n padding: 10px 5px;\n }\n`;\n\nexport const CheckboxLabel = styled.label`\n display: block;\n\n &:hover {\n background-color: #6690ff;\n }\n`;\n\nexport const SelectedValues = styled.div`\n position: absolute;\n top: 9px;\n display: flex;\n flex-wrap: wrap;\n margin-left: 5px;\n right: 30px;\n`;\n\nexport const SelectedValue = styled.div`\n background-color: #254EDB;\n color: white;\n border-radius: 15px;\n padding: 5px 10px;\n margin-right: 5px;\n margin-bottom: 5px;\n white-space: nowrap;\n`;","import React, { useEffect, useState } from 'react';\nimport * as S from './styles';\nimport { getLanguage } from '../../utils/getLanguage'\nimport { Language } from '../../interface/Language';\n\ninterface Option {\n label: string;\n value: string;\n}\n\ninterface MultiSelectProps {\n options: Option[];\n presset: string[];\n setPresset: React.Dispatch<React.SetStateAction<string[]>>;\n setOptions: React.Dispatch<React.SetStateAction<Option[]>>;\n modal: boolean;\n hasAddNewOptions: boolean;\n language: keyof Record<'en' | 'pt-br' | 'es', Language>;\n}\n\nconst MultiSelect: React.FC<MultiSelectProps> = ({ options, presset, setPresset, setOptions, modal, language, hasAddNewOptions }) => {\n const [expanded, setExpanded] = useState(false);\n const [newOption, setNewOption] = useState('');\n const t = getLanguage(language)\n\n useEffect(() => {\n setExpanded(false)\n }, [modal])\n\n const handleCheckboxChange = (value: string) => {\n setPresset(prevPresset => {\n if (prevPresset.includes(value)) {\n return prevPresset.filter(val => val !== value);\n } else {\n return [...prevPresset, value];\n }\n });\n }\n\n const showCheckboxes = () => {\n setExpanded(!expanded);\n }\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setNewOption(event.target.value);\n }\n\n const handleInputKeyPress = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter' && hasAddNewOptions) {\n event.preventDefault();\n const trimmedOption = newOption.trim();\n if (trimmedOption !== '' && !options.some(option => option.value === trimmedOption)) {\n setOptions(prevOptions => [...prevOptions, { label: trimmedOption, value: trimmedOption }]);\n setPresset(prevPresset => [...prevPresset, trimmedOption]);\n }\n setNewOption('');\n }\n }\n\n return (\n <form>\n <S.MultiSelectWrapper>\n <S.SelectBox onClick={showCheckboxes}>\n <select>\n {options.map((option, index) => (\n <option key={index} value={option.value}>{option.label}</option>\n ))}\n </select>\n <S.OverSelect>\n <S.SelectedValues>\n {presset.map((value, index) => (\n <S.SelectedValue key={index}>{value}</S.SelectedValue>\n ))}\n </S.SelectedValues>\n <input\n type=\"text\"\n placeholder={hasAddNewOptions ? t.buttons.addNewPresset : t.buttons.addPresset}\n value={newOption}\n onChange={handleInputChange}\n onKeyPress={handleInputKeyPress}\n />\n </S.OverSelect>\n </S.SelectBox>\n <S.Checkboxes style={{ display: expanded ? 'block' : 'none' }}>\n {options.map((option, index) => (\n <S.CheckboxLabel key={index} htmlFor={option.value}>\n <input\n type=\"checkbox\"\n id={option.value}\n checked={presset.includes(option.value)}\n onChange={() => handleCheckboxChange(option.value)}\n />\n {option.label}\n </S.CheckboxLabel>\n ))}\n </S.Checkboxes>\n </S.MultiSelectWrapper>\n </form>\n );\n}\n\nexport default MultiSelect;\n","import styled from 'styled-components';\n\ninterface ContainerProps {\n isDragAccept?: boolean;\n isDragReject?: boolean;\n isDragActive?: boolean;\n}\n\nconst getColor = (props: ContainerProps) => {\n if (props.isDragAccept) {\n return '#6690ff';\n }\n if (props.isDragReject) {\n return '#e18976';\n }\n if (props.isDragActive) {\n return '#6690ff';\n }\n return '#979aa5';\n};\n\nexport const Container = styled.div<ContainerProps>`\n background-color: #f3f5f9;\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n padding: 20px;\n border-width: 2px;\n border-radius: 4px;\n border-color: var(${(props) => getColor(props)});\n border-style: dashed;\n color: #5a5d68;\n outline: none;\n transition: border 0.24s ease-in-out;\n\n & > span {\n margin: 8px 10px 0 0;\n display: flex;\n }\n\n button {\n padding: 8px 16px 8px 16px;\n border-radius: 4px;\n border: 2px #102693 solid;\n margin-top: 10px;\n }\n`;\n\nexport const ListFiles = styled.div`\n &.horizontal-itens {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n\n & button {\n margin: 4px;\n white-space: nowrap;\n }\n\n .tag-file {\n display: flex;\n gap: 8px;\n padding: 10px 24px !important;\n color: #102693 !important;\n font-size: 14px;\n letter-spacing: 0px;\n }\n\n .tag-icon {\n cursor: pointer;\n }\n }\n`;\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { getLanguage } from '../../../../utils/getLanguage'\nimport { useDropzone, FileRejection } from 'react-dropzone';\nimport PropTypes from 'prop-types';\n\nimport { Container} from './styles';\n\ninterface FileProperties {\n id: number;\n lastModified: number;\n lastModifiedDate: Date;\n name: string;\n size: number;\n type: string;\n}\n\ninterface AreaUploadProps {\n formatFile?: string;\n multipleFile?: boolean;\n initialFiles?: File[];\n removeItem?: (file: FileProperties) => void;\n setFile?: (file: { content: ArrayBuffer | string; properties: File }) => void;\n file: string | undefined;\n onChange?: (files: File[]) => void;\n hasListFiles?: boolean;\n}\n\nconst AreaUpload: React.FC<AreaUploadProps> = ({\n formatFile = 'application/pdf',\n multipleFile = false,\n initialFiles = [],\n setFile = () => {},\n file = '',\n onChange = () => {},\n}) => {\n const [myFiles, setMyFiles] = useState<File[]>([]);\n const t = getLanguage('pt-br')\n\n useEffect(() => {\n setMyFiles([...initialFiles, ...myFiles]);\n }, []);\n\n const onDrop = useCallback(\n (acceptedFiles: File[], fileRejections: FileRejection[]) => {\n if (fileRejections && fileRejections.length > 0) {\n console.error('Arquivos rejeitados:', fileRejections);\n }\n\n onChange(acceptedFiles);\n\n const files = [...myFiles, ...acceptedFiles];\n const filesWithId = files.map((item, index) => ({\n id: index + 1,\n lastModified: item.lastModified,\n name: item.name,\n size: item.size,\n type: item.type,\n }));\n setMyFiles(filesWithId as unknown as File[]);\n\n acceptedFiles.forEach((file) => {\n const reader = new FileReader();\n\n reader.onload = () => {\n const binaryStr = reader.result;\n setFile({ content: binaryStr as ArrayBuffer, properties: file });\n };\n reader.readAsArrayBuffer(file);\n });\n },\n [myFiles]\n );\n\n const {\n getRootProps,\n getInputProps,\n open,\n isDragActive,\n isDragAccept,\n isDragReject,\n } = useDropzone({\n accept: formatFile as any,\n noClick: true,\n noKeyboard: true,\n multiple: multipleFile,\n onDrop,\n });\n\n return (\n <>\n {(multipleFile || myFiles?.length === 0) || !file ? (\n <Container\n {...getRootProps({ isDragActive, isDragAccept, isDragReject })}\n >\n <input {...getInputProps()} />\n\n <span>\n <p>\n {t.fileArea.modal.descriptionUpload}\n </p>\n </span>\n <button type=\"button\" onClick={open}>\n {t.fileArea.modal.chooseFile}\n </button>\n </Container>\n ) : (\n <Container\n {...getRootProps({ isDragActive, isDragAccept, isDragReject })}\n >\n <p>{file}</p>\n </Container>\n )}\n </>\n );\n};\n\nAreaUpload.propTypes = {\n formatFile: PropTypes.string,\n multipleFile: PropTypes.bool,\n initialFiles: PropTypes.arrayOf(PropTypes.object as any),\n removeItem: PropTypes.func,\n setFile: PropTypes.func,\n onChange: PropTypes.func,\n hasListFiles: PropTypes.bool,\n};\n\nAreaUpload.defaultProps = {\n formatFile: 'application/json',\n multipleFile: false,\n initialFiles: [],\n removeItem: () => {},\n setFile: () => {},\n onChange: () => {},\n hasListFiles: true,\n};\n\nexport default AreaUpload;\n","import axios from 'axios';\n\nexport const API_TOKEN = 'API_TOKEN';\n\nconst url = 'https://api.leia.digitalcontact.cloud';\n\naxios.defaults.baseURL = `${url}`;\n\nexport default axios.create();","import React, { createContext, useContext, useEffect, useState } from 'react';\nimport api from '../service/Api';\n\ninterface Props {\n id: string;\n language: \"en\" | \"pt-br\" | \"es\";\n propTags: { tags: [] }\n personas: [{ name: string, description: string }];\n token: string;\n children?: React.ReactNode;\n}\n\ninterface SharedPropsContextType {\n props: Props;\n}\n\nconst SharedPropsContext = createContext<SharedPropsContextType | undefined>(undefined);\n\nexport const useSharedProps = () => {\n const context = useContext(SharedPropsContext);\n if (!context) {\n throw new Error('useSharedProps deve ser usado dentro de um SharedPropsProvider');\n }\n return context.props;\n};\n\nexport const SharedPropsProvider: React.FC<Props> = ({ children, ...props }) => {\n const { id, language } = props;\n const [tags, setTags] = useState<any>(null);\n const [personas, setPersonas] = useState<any>(null);\n\n useEffect(() => {\n const fetchData = async () => {\n try {\n const { data } = await api.get(`/tags/${id}`);\n\n if (data) {\n setTags(data);\n } else {\n console.error('Erro ao fazer a solicitação');\n }\n } catch (error) {\n console.error('Erro ao fazer a solicitação:', error);\n }\n };\n\n const personas = async () => {\n try {\n const { data } = await api.get(`/personas?language=${language}`);\n\n if (data) {\n setPersonas(data);\n } else {\n console.error('Erro ao fazer a solicitação');\n }\n } catch (error) {\n console.error('Erro ao fazer a solicitação:', error);\n }\n };\n\n fetchData();\n personas();\n }, [id]);\n\n const sharedProps = {\n ...props,\n propTags: tags,\n personas,\n };\n\n return (\n <SharedPropsContext.Provider value={{ props: sharedProps }}>\n {children}\n </SharedPropsContext.Provider>\n );\n};\n","import types from './types'\n\nexport const getFilesAction = (id: string, token: string) => {\n return {\n type: types.GET_FILES_REQUEST,\n payload: { id, token }\n }\n}\n\nexport const getFilesActionSuccess = ({ files }: any) => {\n return {\n type: types.GET_FILES_SUCCESS,\n payload: { files }\n }\n}\n\nexport const deleteFilesAction = (name: string, id: string, language: string, token: string) => {\n return {\n type: types.DELETE_FILES_REQUEST,\n payload: { name, id, language, token }\n }\n}\n\nexport const deleteFilesActionSuccess = ({ files }: any) => {\n return {\n type: types.DELETE_FILES_SUCCESS,\n payload: { files }\n }\n}\n\nexport const uploadFilesAction = (file: any, id: string, pressets: string[], language: string, token: string) => {\n return {\n type: types.UPLOAD_FILES_REQUEST,\n payload: { file, id, pressets, language, token }\n }\n}\n\nexport const uploadFilesActionSuccess = ({ files }: any) => {\n return {\n type: types.UPLOAD_FILES_SUCCESS,\n payload: { files }\n }\n}\n\nexport const trainingAction = (id: string, pressets: string[], language: string, token: string) => {\n return {\n type: types.TRAINING_REQUEST,\n payload: { id, pressets, language, token }\n }\n}\n\nexport const testAction = (question: string, profile: string, presset: string, files_directory: string, token: string) => {\n return {\n type: types.TEST_REQUEST,\n payload: { question, profile, presset, files_directory, token }\n }\n}\n\nexport const testActionSuccess = ({ message }: any) => {\n return {\n type: types.TEST_SUCCESS,\n payload: { message }\n }\n}\n\nexport const commonLoadingStart = () => ({\n type: types.LOADING_START,\n });\n \n export const commonLoadingFinish = () => ({\n type: types.LOADING_FINISH,\n });\n \n export const commonChangingStart = () => ({\n type: types.CHANGING_START,\n });\n \n export const commonChangingFinish = () => ({\n type: types.CHANGING_FINISH,\n });\n \n export const commonNetworkOnline = () => ({\n type: types.NETWORK_ONLINE,\n });\n \n export const commonNetworkOffline = () => ({\n type: types.NETWORK_OFFLINE,\n });","const Types = {\n GET_FILES_REQUEST: 'GET_FILES_REQUEST',\n GET_FILES_SUCCESS: 'GET_FILES_SUCCESS',\n DELETE_FILES_REQUEST: 'DELETE_FILES_REQUEST',\n DELETE_FILES_SUCCESS: 'DELETE_FILES_SUCCESS',\n UPLOAD_FILES_REQUEST: 'UPLOAD_FILES_REQUEST',\n UPLOAD_FILES_SUCCESS: 'UPLOAD_FILES_SUCCESS',\n TRAINING_REQUEST: 'TRAINING_REQUEST',\n TEST_REQUEST: 'TEST_REQUEST',\n TEST_SUCCESS: 'TEST_SUCCESS',\n LOADING_START: 'LOADING_START',\n LOADING_FINISH: 'LOADING_FINISH',\n CHANGING_START: 'CHANGING_START',\n CHANGING_FINISH: 'CHANGING_FINISH',\n NETWORK_ONLINE: 'NETWORK_ONLINE',\n NETWORK_OFFLINE: 'NETWORK_OFFLINE',\n};\n\nexport default Types;\n","import React, { useEffect, useState} from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { renderToString } from 'react-dom/server';\n\nimport { FaUpload, FaList, FaCheck, FaFile } from 'react-icons/fa';\nimport { GiWeightLiftingUp } from \"react-icons/gi\";\nimport { TiDelete } from \"react-icons/ti\";\n\nimport type { FileData, tag } from '../../interface/FileData'\n\nimport { getLanguage } from '../../utils/getLanguage'\n\nimport * as S from './styles';\nimport Table from './components/Table';\nimport Search from './components/Search';\nimport Modal from './components/Modal'\nimport ModalFooter from './components/Modal/ModalFooter'\nimport ModalContent from './components/Modal/ModalContent'\nimport EmptyState from '../EmptyState';\nimport MultiSelect from '../MultiSelect';\nimport AreaUpload from './components/AreaUpload';\nimport { SharedPropsProvider, useSharedProps } from '../../contexts/SharedPropsProvider';\nimport { deleteFilesAction, getFilesAction, uploadFilesAction, trainingAction } from '../../store/modules/actions';\n\nexport const FileArea = () => {\n const { id, language, propTags, token } = useSharedProps();\n const [files, setFiles] = useState<FileData[]>([]);\n const [initialFiles, setInitialFiles] = useState<FileData[]>([]);\n const [uploadFile, setUploadFile] = useState<{ content: ArrayBuffer | string; properties: File }>();\n const [modal, setModal] = useState(false)\n const [modalDelete, setModalDelete] = useState(false)\n const [modalTraining, setModalTraining] = useState(false)\n const [fileDelete, setFileDelete] = useState('')\n const [optionsPresset, setOptionsPresset] = useState<{ label: any; value: any; }[]>([])\n const [presset, setPresset] = useState<string[]>([]);\n const t = getLanguage(language)\n const dispatch = useDispatch();\n const initFiles = useSelector((state: any) => state.files);\n const isloading = useSelector((state: any) => state.isloading);\n const tags = propTags ? propTags.tags : [];\n\n useEffect(() => {\n dispatch(getFilesAction(id, token))\n }, [id])\n\n useEffect(() => {\n if(tags.length > 0){\n const options = tags.map((tag: any) => {\n return { label: tag, value: tag }\n })\n setOptionsPresset(options)\n }else if(optionsPresset.length > 0){\n setOptionsPresset([])\n }\n \n }, [tags])\n\n useEffect(() => {\n if(!modal){\n const options = tags.map((tag: any) => {\n return { label: tag, value: tag }\n })\n setOptionsPresset(options)\n }\n }, [modal])\n\n useEffect(() => {\n if(!!initFiles){\n setFiles(initFiles)\n setInitialFiles(initFiles)\n }\n }, [initFiles])\n\n const pressetTag = (tags: [tag]) => {\n let html = '';\n \n html += tags.map(tag => {\n const checkIcon = tag.trained ? '' : renderToString(<TiDelete size={14} />);\n const tagClass = tag.trained ? 'trained' : '';\n return `<p class='tag ${tagClass}'>${tag.name} ${checkIcon}</p>`;\n }).join('');\n \n return html;\n }\n\n const handleOpenModal = () => {\n if(modal){\n setUploadFile(undefined)\n setPresset([])\n }\n setModal(!modal)\n }\n\n const handleOpenModalDelete = (name: string) => {\n console.log('--- handleOpenModalDelete: ', name);\n setFileDelete(name)\n setModalDelete(!modalDelete)\n }\n\n const handleOpenModalTraining = (tags?: [tag]) => {\n let pressets: string[] = [] \n tags?.map((tag) => {\n if(!tag.trained){\n pressets.push(tag.name)\n }\n })\n setPresset(pressets)\n setModalTraining(!modalTraining)\n }\n\n const deleteFile = () => {\n console.log('--- vai deletar: ', fileDelete);\n\n dispatch(deleteFilesAction(fileDelete, id, language, token))\n setModalDelete(false)\n }\n\n const handleUploadFile = () => {\n dispatch(uploadFilesAction(uploadFile, id, presset, language, token))\n setModal(false)\n setUploadFile(undefined)\n setPresset([])\n };\n\n const handleTrain = () => {\n dispatch(trainingAction(id, presset, language, token))\n setModalTraining(false)\n setPresset([])\n };\n\n const viewFile = (link: string, name: string) => {\n if(link){\n const checkIcon = renderToString(<FaFile size={14} />);\n return `<a href='${link}' target='_blank'>${checkIcon}</a> ${name}`;\n }\n return name\n };\n\n const renderFiles = () => { \n return (\n <S.Container isloading={isloading}>\n <div id='loading' />\n <S.Header>\n <div className='infos'>\n <h2>{t.files}</h2>\n <p>{t.fileArea.description}</p>\n </div>\n <div className='actions'>\n <Search placeholder={t.fileArea.search} setFiles={setFiles} initialFiles={initialFiles}></Search>\n <div> \n <button id='button-upload' onClick={handleOpenModal}><FaUpload size={14} /> {t.fileArea.fileUpload}</button>\n <button onClick={() => handleOpenModalTraining(undefined)}><GiWeightLiftingUp size={14} /> {t.fileArea.training}</button>\n </div>\n </div>\n </S.Header>\n {\n files.length === 0 ? (\n <EmptyState\n icon={<FaList></FaList>}\n title={t.fileArea.emptyState.title}\n description={t.fileArea.emptyState.description}\n iconButton={<button id='button-upload' onClick={handleOpenModal}><FaUpload size={14} /> {t.fileArea.fileUpload}</button>}\n descriptionButton={t.fileArea.fileUpload}\n widthButton=\"230px\"\n />\n ) : <Table>\n <thead>\n <tr>\n <th key=\"th_file_name\" className=\"th_file_name\">\n {t.fileArea.fileName}\n </th>\n <th key=\"th_file_name\" className=\"th_status\">\n {t.fileArea.status}\n </th>\n <th key=\"th_pressets\" className=\"th_pressets\">\n {t.fileArea.presset}\n </th>\n <th key=\"th_actions\" className=\"th_actions\">\n {t.fileArea.actions}\n </th>\n </tr>\n </thead>\n\n <tbody>\n {files.map((object) => (\n <tr>\n <td dangerouslySetInnerHTML={{ __html: viewFile(object.link, object.name) }} />\n <td>{object.trained ? <FaCheck size={14} style={{ color: 'green' }} /> : <TiDelete size={14} style={{ color: 'red' }} />}</td>\n <td className='tags' dangerouslySetInnerHTML={{ __html: pressetTag(object.tags) }} />\n <td>\n <div className='divDelete'>\n <button className='buttonTraining' onClick={() => handleOpenModalTraining(object.tags)}>{t.buttons.training}</button>\n <button className='buttonDelete' onClick={() => handleOpenModalDelete(object.name)}>{t.buttons.delete}</button>\n </div>\n </td>\n </tr>\n ))}\n </tbody>\n </Table>\n }\n <Modal\n isopen={modal}\n maxwidth=\"600px\"\n maxheight=\"max-content\"\n onClose={handleOpenModal}\n title={t.fileArea.modal.uploadFile}\n >\n <ModalContent>\n <div className='choose-file'>\n <AreaUpload\n setFile={setUploadFile}\n file={uploadFile?.properties.name}\n />\n </div>\n <div className='presset'>\n <p>{t.fileArea.presset}</p>\n <MultiSelect setOptions={setOptionsPresset} options={optionsPresset} presset={presset} setPresset={setPresset} modal={modal} language={language} hasAddNewOptions={true} />\n </div> \n </ModalContent>\n <ModalFooter>\n <button className='button cancel' onClick={handleOpenModal}>\n {t.buttons.cancel}\n </button>\n <button onClick={() => handleUploadFile()} className='button send' type=\"submit\" form=\"form-tts\">\n {t.buttons.send}\n </button>\n </ModalFooter>\n \n </Modal>\n <Modal\n isopen={modalDelete}\n maxwidth=\"600px\"\n maxheight=\"max-content\"\n onClose={() => handleOpenModalDelete('')}\n title={t.fileArea.modal.deleteFileTitle}\n >\n <ModalContent>\n <p id='warning'>{t.fileArea.modal.deleteFile}</p>\n </ModalContent>\n <ModalFooter>\n <button className='button cancel' onClick={() => handleOpenModalDelete('')}>\n {t.buttons.cancel}\n </button>\n <button className='button delete' type=\"submit\" form=\"form-tts\" onClick={deleteFile}>\n {t.buttons.delete}\n </button>\n </ModalFooter>\n </Modal>\n <Modal\n isopen={modalTraining}\n maxwidth=\"600px\"\n maxheight=\"max-content\"\n onClose={() => handleOpenModalTraining(undefined)}\n title={t.fileArea.modal.trainingTitle}\n >\n <ModalContent>\n <p id='info'>{t.fileArea.modal.trainingDescription}</p>\n <div className='presset'>\n <p>{t.fileArea.presset}</p>\n <MultiSelect setOptions={setOptionsPresset} options={optionsPresset} presset={presset} setPresset={setPresset} modal={modal} language={language} hasAddNewOptions={false} />\n </div>\n </ModalContent>\n <ModalFooter>\n <button className='button cancel' onClick={() => handleOpenModalTraining(undefined)}>\n {t.buttons.cancel}\n </button>\n <button onClick={() => handleTrain()} className='button send' type=\"submit\" form=\"form-tts\">\n {t.buttons.send}\n </button>\n </ModalFooter>\n \n </Modal>\n </S.Container>\n );\n }\n\n return (\n <SharedPropsProvider id={id} language={language} token={token} propTags={{ tags: [] }} personas={[{name: '', description: ''}]}>\n <S.Container>\n {renderFiles()}\n </S.Container>\n </SharedPropsProvider>\n );\n};\n","import styled, { css } from 'styled-components';\n\ninterface ContainerProps {\n isloading?: boolean;\n}\n\n\nexport const Container = styled.div<ContainerProps>`\n ${(props) =>\n props.isloading &&\n css`\n #loading {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgb(151,154,165, 0.7);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 9999;\n }\n\n #loading::after {\n content: \"\";\n border: 4px solid #f3f3f3; /* Cor do símbolo de carregamento */\n border-top: 4px solid #5a5d68; /* Cor do símbolo de carregamento */\n border-radius: 50%;\n width: 13px;\n height: 13px;\n animation: spin 1s linear infinite;\n }\n\n @keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n `}\n\n`;\n\nexport const Header = styled.div`\n display: flex;\n flex-direction: column;\n .infos {\n display: flex;\n flex-direction: column;\n padding: 14px 0;\n\n h2 {\n font-size: 20px\n }\n\n p {\n font-size: 14px\n }\n }\n`\n\nexport const Inputs = styled.div`\n display: flex;\n justify-content: space-between;\n margin-bottom: 10px;\n\n button {\n background: #102693;\n padding: 10px 20px;\n color: white;\n border-radius: 4px;\n width: 190px;\n height: 45px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n svg {\n width: 23px;\n height: 23px;\n }\n }\n`\n\nexport const Result = styled.div`\n display: flex;\n justify-content: left;\n background: #F3F5F9;\n padding: 15px;\n border-radius: 5px;\n margin-top: 15px;\n\n .text{\n margin-left: 5px;\n font-size: 14px;\n line-height: 1.5;\n }\n\n .icon {\n display: flex;\n justify-content: center;\n align-items: center;\n margin-right: 5px;\n\n svg {\n width: 35px;\n height: 35px;\n }\n }\n\n`","import styled from 'styled-components';\n\nexport const Container = styled.div`\n position: relative;\n width: 50%;\n margin-right: 5px;\n\n .custom-select {\n position: relative;\n width: 100%;\n cursor: pointer;\n\n .selected-option {\n padding: 12px;\n border-radius: 4px;\n border: 1px solid #979AA5;\n height: 45px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n font-size: 14px;\n }\n\n .options {\n position: absolute;\n top: 100%;\n left: 0;\n width: 100%;\n border: 1px solid #979AA5;\n border-top: none;\n border-radius: 0 0 4px 4px;\n background-color: #fff;\n\n .option {\n padding: 12px;\n cursor: pointer;\n transition: background-color 0.1s;\n letter-spacing: 0.5px;\n font-size: 14px;\n\n &:hover {\n background-color: #6690ff;\n color: white;\n }\n }\n }\n }\n`;\n","import React, { useState } from 'react';\nimport * as S from './styles';\n\ninterface SelectOption {\n value: string | number;\n label: string;\n}\n\ninterface SelectProps {\n options: SelectOption[];\n onSelect: (value: string) => void;\n placeholder?: string;\n}\n\nconst CustomSelect: React.FC<SelectProps> = ({ options, onSelect, placeholder }) => {\n const [isOpen, setIsOpen] = useState(false);\n const [selectedValue, setSelectedValue] = useState<string | number>('');\n\n const handleSelectOption = (value: string | number) => {\n const selected = String(value);\n setSelectedValue(selected);\n onSelect(selected);\n setIsOpen(false);\n };\n\n return (\n <S.Container>\n <div className=\"custom-select\" onClick={() => setIsOpen(!isOpen)}>\n <div className=\"selected-option\">\n {selectedValue || placeholder}\n <span className=\"arrow\">&#9660;</span>\n </div>\n {isOpen && (\n <div className=\"options\">\n {options.map(option => (\n <div\n key={option.value}\n style={{ background: option.value === selectedValue ? '#a0b7f5' : undefined,\n color: option.value === selectedValue ? 'white' : undefined }}\n className=\"option\"\n onClick={() => handleSelectOption(option.value)}\n >\n {option.label}\n </div>\n ))}\n </div>\n )}\n </div>\n </S.Container>\n );\n};\n\nexport default CustomSelect;\n","import styled from 'styled-components';\n\nexport const Container = styled.div`\n position: relative;\n width: 100%;\n margin-right: 5px;\n`;\n\nexport const StyledInput = styled.input`\n padding-left: 10px;\n padding-right: 40px;\n border-radius: 5px;\n border: 1px solid #ccc;\n height: 45px;\n width: 100%;\n\n &:focus {\n outline: none;\n box-shadow: 0 0 0 3px #6690ff;\n }\n`;\n\nexport const RecordAudioButton = styled.div`\n position: absolute;\n top: 14px;\n right: 10px;\n cursor: pointer;\n`;\n","import React from 'react';\nimport * as S from './styles';\n\ninterface InputTestProps {\n placeholder: string;\n onChange: (value: string) => void;\n}\n\nconst InputTest: React.FC<InputTestProps> = ({ placeholder, onChange }) => {\n return (\n <S.Container>\n <S.StyledInput\n type=\"text\"\n onChange={(e: any) => onChange(e.target.value)}\n placeholder={placeholder}\n />\n </S.Container>\n );\n};\n\nexport default InputTest;\n","import React, { useState } from 'react';\nimport { getLanguage } from '../../utils/getLanguage'\nimport * as S from './styles';\nimport Select from '../Select'\nimport InputTest from './components/InputTest'\nimport { PiWaveformBold } from 'react-icons/pi';\nimport { FaList } from 'react-icons/fa';\nimport EmptyState from '../EmptyState';\nimport { SharedPropsProvider, useSharedProps } from '../../contexts/SharedPropsProvider';\nimport { MdPerson2 } from \"react-icons/md\";\nimport { useDispatch, useSelector } from 'react-redux';\nimport { testAction } from '../../store/modules/actions';\n\nexport const TestArea = () => {\n const { id, language, personas, propTags, token } = useSharedProps();\n const t = getLanguage(language)\n const results = useSelector((state: any) => state.message);\n const isloading = useSelector((state: any) => state.isloading);\n const [search, setSearch] = useState('');\n const [profile, setProfile] = useState('');\n const [presset, setPresset] = useState('');\n const dispatch = useDispatch();\n const tags = propTags ? propTags.tags : [];\n\n\n const optionsPersona = personas && personas.map(persona => {\n return { label: persona.name, value: persona.name }\n })\n\n const optionsPresset = tags.map(tag => {\n return { label: tag, value: tag }\n })\n\n const handleSelectPersona = (value: string) => {\n setProfile(value);\n };\n\n const handleSelectPresset = (value: string) => {\n setPresset(value);\n };\n\n const handleSearch = (value: string) => {\n setSearch(value);\n };\n\n const handleTest = () => {\n dispatch(testAction(search, profile, presset, id, token))\n };\n\n const returnTest = () => { \n return (\n <S.Container isloading={isloading}>\n <div id='loading' />\n <S.Header>\n <div className='infos'>\n <h2>{t.test}</h2>\n <p>{t.testArea.description}</p>\n </div>\n </S.Header>\n <S.Inputs>\n <InputTest placeholder={t.testArea.typeSentence} onChange={handleSearch} />\n <Select placeholder={t.testArea.selectPersona} options={optionsPersona} onSelect={handleSelectPersona} />\n <Select placeholder={t.testArea.selectPresset} options={optionsPresset} onSelect={handleSelectPresset} />\n <button onClick={handleTest}><PiWaveformBold /> {t.buttons.test}</button>\n </S.Inputs>\n {\n !results ? (\n <EmptyState\n icon={<FaList></FaList>}\n title={t.testArea.emptyState.title}\n description={t.testArea.emptyState.description}\n activeButton={false}\n />\n ) : <S.Result>\n <div className='icon'>\n <MdPerson2 />\n </div>\n <div className='text'>{results}</div>\n </S.Result>\n }\n </S.Container>\n )\n }\n\n return (\n <SharedPropsProvider id={id} token={token} language={language} propTags={{ tags: [] }} personas={[{name: '', description: ''}]}>\n <S.Container>\n {returnTest()}\n </S.Container>\n </SharedPropsProvider>\n );\n};","import React, { useMemo, Suspense } from 'react';\nimport { Route, useLocation, useRouteMatch, useHistory, Switch as SwitchRoute } from 'react-router-dom';\n\n\nimport type { Props } from './index';\nimport { Tab, Tabs } from './components/Tabs'\nimport { getLanguage } from './utils/getLanguage'\nimport { FileArea } from './components/FileArea';\nimport { TestArea } from './components/TestArea';\n\nimport { SharedPropsProvider } from './contexts/SharedPropsProvider';\n\nexport const Leia = (props: Props) => {\n const match = useRouteMatch();\n const { pathname } = useLocation();\n const history = useHistory();\n\n const t = getLanguage(props.language)\n\n const activeTab = useMemo(() => {\n return pathname.split('/')[5] || 'files';\n }, [pathname]);\n\n return (\n <SharedPropsProvider propTags={{ tags: [] }} personas={[{name: '', description: ''}]} {...props}>\n <>\n <Tabs\n value={activeTab}\n onChange={(value) => history.push(`${match.url}/${value}`)}\n >\n <Tab value=\"files\">{t.files}</Tab>\n <Tab value=\"test\">{t.test}</Tab>\n </Tabs>\n <Suspense fallback={props.loading}>\n <SwitchRoute>\n <Route path={`${match.path}`} exact component={FileArea} />\n <Route path={`${match.path}/files`} component={FileArea} />\n <Route path={`${match.path}/test`} component={TestArea} />\n </SwitchRoute>\n </Suspense>\n </>\n </SharedPropsProvider>\n );\n};\n","import { produce } from 'immer';\nimport types from './types'\n\nconst INITIAL_STATE = {\n files: [],\n message: '',\n isloading: false,\n isChanging: false,\n isOffline: true,\n}\n\nexport default function filesReducer(state = INITIAL_STATE, action: any) {\n return produce(state, (draft) => {\n switch (action.type) {\n case types.GET_FILES_SUCCESS:\n draft.files = action.payload.files;\n break;\n case types.DELETE_FILES_SUCCESS:\n draft.files = action.payload.files;\n break;\n case types.TEST_SUCCESS:\n draft.message = action.payload.message;\n break;\n case types.LOADING_START:\n draft.isloading = true;\n break;\n case types.LOADING_FINISH:\n draft.isloading = false;\n break;\n case types.CHANGING_START:\n draft.isChanging = true;\n break;\n case types.CHANGING_FINISH:\n draft.isChanging = false;\n break;\n case types.NETWORK_ONLINE:\n draft.isOffline = false;\n break;\n case types.NETWORK_OFFLINE:\n draft.isOffline = true;\n break;\n default:\n return action.payload;\n }\n });\n}\n","import React from 'react';\nimport { toast as reactToast } from 'react-toastify';\n\nimport { CustomContainerToast } from './styles';\n\ninterface CustomToastContentProps {\n title: String;\n description?: String;\n}\n\nconst CustomToastContent: React.FC<CustomToastContentProps> = ({\n title,\n description\n}) => {\n return (\n <>\n <div className=\"custom-toastify-content\">\n <strong className=\"custom-toastify-title\">{title}</strong>\n {description && (\n <p className=\"custom-toastify-description\">{description}</p>\n )}\n </div>\n </>\n );\n};\n\nconst toast = {\n default: ({ title, description }: CustomToastContentProps) =>\n reactToast(\n <CustomToastContent\n title={title}\n description={description}\n />\n ),\n success: ({ title, description }: CustomToastContentProps) =>\n reactToast.success(\n <CustomToastContent\n title={title}\n description={description}\n />\n ),\n error: ({ title, description }: CustomToastContentProps) =>\n reactToast.error(\n <CustomToastContent\n title={title}\n description={description}\n />\n ),\n warn: ({ title, description }: CustomToastContentProps) =>\n reactToast.warn(\n <CustomToastContent\n title={title}\n description={description}\n />\n ),\n};\n\nconst ContainerToast: React.FC = () => {\n return <CustomContainerToast autoClose={4000} />;\n};\n\nexport { ContainerToast, toast };\n","import { takeLatest, all, put, call } from 'redux-saga/effects';\nimport api from '../../service/Api'\nimport Types from './types'\nimport { getFilesActionSuccess, \n deleteFilesActionSuccess, \n testActionSuccess, \n uploadFilesActionSuccess, \n commonLoadingStart,\n commonLoadingFinish, } from './actions'\nimport { toast } from '../../components/CustomToast'\nimport { getLanguage } from '../../utils/getLanguage'\n\nexport function* getFilesSaga(action: any) {\n try {\n yield put(commonLoadingStart());\n const { id, token } = action.payload\n const { data } = yield call(api.get, `/training/${id}?token=${token}`);\n yield put(getFilesActionSuccess({ files: data.files}));\n } catch (error) {\n console.log('-----------getFiles.error------------------->', error);\n } finally {\n yield put(commonLoadingFinish());\n }\n}\n\nexport function* deleteFilesSaga(action: any) {\n const t = getLanguage(action.payload.language)\n try {\n yield put(commonLoadingStart());\n const { id, name, token } = action.payload\n\n yield call(api.delete, `/delete/${id}/${name}?token=${token}`);\n const { data } = yield call(api.get, `/training/${id}?token=${token}`);\n yield put(deleteFilesActionSuccess({ files: data.files, success: true }));\n } catch (error) {\n toast.error({title: t.toast.deleteFile.fail.title, description: t.toast.deleteFile.fail.description});\n console.log('-----------deleteFilesSaga.error------------------->', error);\n } finally {\n yield put(commonLoadingFinish());\n }\n}\n\nexport function* testSaga(action: any) {\n try {\n yield put(commonLoadingStart());\n const { question, profile, presset, files_directory, token } = action.payload\n const { data } = yield call(api.post, `/ask`, { question, profile, tag: presset, files_directory, token });\n yield put(testActionSuccess({ message: data.message }));\n } catch (error) {\n console.log('-----------testSaga.error------------------->', error);\n } finally {\n yield put(commonLoadingFinish());\n }\n}\n\nexport function* uploadFilesSaga(action: any) {\n const t = getLanguage(action.payload.language);\n try {\n yield put(commonLoadingStart());\n const { id, file, pressets, token } = action.payload;\n\n const blob = new Blob([file.content]);\n const formData = new FormData();\n formData.append('file', blob, file.properties.path);\n\n const queryParams = pressets.length\n ? new URLSearchParams({ tags: pressets.join(',') }).toString()\n : '';\n\n const url = queryParams\n ? `/upload/${id}?token=${token}&${queryParams}`\n : `/upload/${id}?token=${token}`;\n\n yield call(api.post, url, formData, {\n headers: {\n 'Content-Type': 'multipart/form-data',\n },\n });\n\n const { data } = yield call(api.get, `/training/${id}?token=${token}`);\n yield put(uploadFilesActionSuccess({ files: data.files }));\n } catch (error) {\n toast.error({\n title: t.toast.uploadFile.fail.title,\n description: t.toast.uploadFile.fail.description,\n });\n console.log('-----------uploadFilesSaga.error------------------->', error);\n } finally {\n yield put(commonLoadingFinish());\n }\n}\n\n\nexport function* TrainingSaga(action: any) {\n const t = getLanguage(action.payload.language)\n try {\n yield put(commonLoadingStart());\n const { id, pressets, token } = action.payload;\n const tag = pressets.join(',');\n\n const queryParams = new URLSearchParams({ tag }).toString();\n\n yield call(api.post, pressets.length > 0 ? `/training?${queryParams}` : `/training`,{ files_directory: id, token });\n\n const { data } = yield call(api.get, `/training/${id}?token=${token}`);\n yield put(uploadFilesActionSuccess({ files: data.files }));\n toast.success({title: t.toast.Train.success.title, description: t.toast.Train.success.description});\n } catch (error) {\n toast.error({title: t.toast.Train.fail.title, description: t.toast.Train.fail.description});\n console.log('-----------TrainingSaga.error------------------->', error);\n } finally {\n yield put(commonLoadingFinish());\n }\n}\n\nexport default function* filesSagas() {\n yield all([\n takeLatest(Types.GET_FILES_REQUEST, getFilesSaga),\n takeLatest(Types.DELETE_FILES_REQUEST, deleteFilesSaga),\n takeLatest(Types.UPLOAD_FILES_REQUEST, uploadFilesSaga),\n takeLatest(Types.TEST_REQUEST, testSaga),\n takeLatest(Types.TRAINING_REQUEST, TrainingSaga)\n ]);\n}\n","import { createStore, applyMiddleware } from 'redux';\nimport createSagaMiddleware from 'redux-saga';\nimport Reducer from './modules/reducer';\nimport Sagas from './modules/sagas';\n\nconst sagaMiddleware = createSagaMiddleware();\n\nconst store = createStore(Reducer, applyMiddleware(sagaMiddleware));\n\nsagaMiddleware.run(Sagas);\n\nexport default store;\n\n","import type { PropsWithChildren, ReactElement } from 'react';\nimport { Provider } from 'react-redux';\nimport React from 'react';\nimport { Leia } from './Leia';\nimport store from './store';\n\nexport type Props = PropsWithChildren<{\n id: string;\n activeTab: string;\n language: \"en\" | \"pt-br\" | \"es\";\n loading: ReactElement\n token: string;\n}>;\n\nexport function Code7(props: Props) {\n return <Provider store={store}>\n <Leia {...props} />\n </Provider>;\n}"],"names":["TabsPane","styled","ul","_templateObject","_taggedTemplateLiteralLoose","Tab","li","_templateObject2","_ref","active","children","rest","_objectWithoutPropertiesLoose","_excluded","React","S","className","cc","propTypes","PropTypes","oneOfType","string","element","node","isRequired","onChange","func","value","bool","defaultProps","Tabs","_ref2","childrenProp","_excluded2","Children","map","child","_child$props2","isValidElement","Array","isArray","_child$props","props","cloneElement","_child$props3","onClick","_child$props4","number","enTranslation","files","test","fileArea","description","fileName","status","presset","actions","search","fileUpload","training","emptyState","title","modal","descriptionUpload","chooseFile","uploadFile","deleteFileTitle","deleteFile","trainingTitle","trainingDescription","buttons","cancel","send","delete","addNewPresset","addPresset","testArea","typeSentence","selectPersona","selectPresset","toast","success","fail","Test","Train","ptTranslation","esTranslation","getLanguage","language","Container","div","isloading","css","Header","_templateObject3","TableWrapper","Table","table","TableLoadingWrapper","SpinnerWrapper","span","color","Spinner","_ref$size","size","_ref$color","forwardRef","ref","_ref$isloading","_ref$className","oneOf","InputContainer","Input","input","IconContainer","SearchInput","setFiles","initialFiles","type","e","searchTerm","target","trim","normalizedSearchTerm","unorm","nfkd","toLowerCase","newFiles","filter","file","name","includes","searchName","placeholder","FaSearch","FullScreen","isopen","isfixed","_ref3","zindex","Modal","_ref4","maxwidth","ModalContainer","_ref5","maxheight","ModalHeader","header","_templateObject4","ModalTitle","_templateObject5","ModalButtonClose","button","_templateObject6","ModalContentWrapper","_templateObject7","_ref6","overflowy","_ref7","ModalFooterWrapper","_templateObject8","ModalFooter","ModalContent","_ref$maxheight","_ref$overflowy","style","onClose","contentStyle","modalRef","useRef","handleKeyUp","useCallback","keys","27","preventDefault","window","removeEventListener","keyCode","handleOutsideClick","current","parentNode","document","useEffect","addEventListener","String","MdClose","objectOf","any","hasborder","backgroundcolor","backgroundicon","EmptyState","icon","activeButton","iconButton","descriptionButton","widthButton","backgroundIcon","backgroundColor","MultiSelectWrapper","SelectBox","OverSelect","Checkboxes","CheckboxLabel","label","SelectedValues","SelectedValue","MultiSelect","options","setPresset","setOptions","hasAddNewOptions","_useState","useState","expanded","setExpanded","_useState2","newOption","setNewOption","t","option","index","key","event","onKeyPress","trimmedOption","some","prevOptions","concat","prevPresset","display","htmlFor","id","checked","val","isDragAccept","isDragReject","isDragActive","getColor","AreaUpload","formatFile","_ref$formatFile","_ref$multipleFile","multipleFile","_ref$initialFiles","_ref$setFile","setFile","_ref$file","_ref$onChange","myFiles","setMyFiles","onDrop","acceptedFiles","fileRejections","length","console","error","filesWithId","item","lastModified","forEach","reader","FileReader","onload","content","result","properties","readAsArrayBuffer","_useDropzone","useDropzone","accept","noClick","noKeyboard","multiple","getRootProps","getInputProps","open","arrayOf","object","removeItem","hasListFiles","axios","defaults","baseURL","create","SharedPropsContext","createContext","undefined","useSharedProps","context","useContext","Error","SharedPropsProvider","tags","setTags","personas","setPersonas","fetchData","_asyncToGenerator","_regeneratorRuntime","mark","_callee","data","wrap","_context","prev","next","api","get","sent","t0","stop","apply","arguments","_callee2","_context2","sharedProps","_extends","propTags","Provider","uploadFilesActionSuccess","payload","FileArea","_useSharedProps","token","setInitialFiles","_useState3","setUploadFile","_useState4","setModal","_useState5","modalDelete","setModalDelete","_useState6","modalTraining","setModalTraining","_useState7","fileDelete","setFileDelete","_useState8","optionsPresset","setOptionsPresset","_useState9","dispatch","useDispatch","initFiles","useSelector","state","getFilesAction","tag","pressetTag","checkIcon","trained","renderToString","TiDelete","join","handleOpenModal","handleOpenModalDelete","log","handleOpenModalTraining","pressets","push","Search","FaUpload","GiWeightLiftingUp","FaList","dangerouslySetInnerHTML","__html","link","FaFile","FaCheck","uploadFilesAction","form","deleteFilesAction","trainingAction","Inputs","Result","CustomSelect","onSelect","isOpen","setIsOpen","selectedValue","setSelectedValue","background","selected","StyledInput","InputTest","TestArea","results","message","setSearch","profile","setProfile","optionsPersona","persona","Select","question","files_directory","testAction","PiWaveformBold","MdPerson2","Leia","match","useRouteMatch","pathname","useLocation","history","useHistory","activeTab","useMemo","split","url","Suspense","fallback","loading","SwitchRoute","Route","path","exact","component","INITIAL_STATE","isChanging","isOffline","filesReducer","action","produce","draft","CustomToastContent","reactToast","getFilesSaga","_marked2","deleteFilesSaga","_marked3","testSaga","_marked4","uploadFilesSaga","_marked5","TrainingSaga","_marked6","filesSagas","_action$payload","put","call","finish","_marked","_action$payload2","_action$payload3","_context3","post","_action$payload4","blob","formData","queryParams","_context4","Blob","FormData","append","URLSearchParams","toString","headers","Content-Type","_action$payload5","_context5","_context6","all","takeLatest","sagaMiddleware","createSagaMiddleware","store","createStore","Reducer","applyMiddleware","run","Sagas"],"mappings":"+xPAYO,IAAMA,EAAWC,EAAOC,GAAEC,IAAAA,EAAAC,2HAOpBC,EAAMJ,EAAOK,GAAEC,IAAAA,EAAAH,0pBCDfC,EAAM,SAAHG,OAAMC,EAAMD,EAANC,OAAQC,EAAQF,EAARE,SAAaC,EAAIC,EAAAJ,EAAAK,GAC7C,OACEC,gBAACC,iBAAMC,UAAWC,EAAG,CAAER,OAAAA,KAAeE,GACnCD,IAKPL,EAAIa,UAAY,CACdR,SAAUS,EAAUC,UAAU,CAC5BD,EAAUE,OACVF,EAAUG,QACVH,EAAUI,OACTC,WACHC,SAAUN,EAAUO,KACpBC,MAAOR,EAAUE,OACjBZ,OAAQU,EAAUS,MAGpBvB,EAAIwB,aAAe,CACjBJ,SAAU,aACVE,MAAO,GACPlB,QAAQ,GAGH,IAAMqB,EAAO,SAAHC,OAAgBC,EAAYD,EAAtBrB,SAAwBiB,EAAKI,EAALJ,MAAOF,EAAQM,EAARN,SAAad,EAAIC,EAAAmB,EAAAE,GAC/DvB,EAAWI,EAAMoB,SAASC,IAAIH,GAAc,SAACI,WAKPC,EAJ1C,OAAKvB,EAAMwB,eAAeF,GAItBG,MAAMC,eAAOC,EAACL,EAAMM,cAAND,EAAa/B,UACtBI,EAAM6B,aAAaP,EAAkC,CAC1D3B,eAAQ4B,EAAAD,EAAMM,cAANL,EAAaV,SAAUA,EAC/BA,MAAAA,EACAF,SAAAA,IAIGX,EAAM6B,aAAaP,EAAkC,CAC1D3B,eAAQmC,EAAAR,EAAMM,cAANE,EAAajB,SAAUA,EAC/BkB,QAAS,WAAA,IAAAC,EAAA,OAAMrB,SAAQqB,EAACV,EAAMM,cAANI,EAAanB,UAb9B,QAiBX,OAAOb,gBAACC,mBAAeJ,GAAOD,IAGhCoB,EAAKZ,UAAY,CACfR,SAAUS,EAAUI,KAAKC,WACzBG,MAAOR,EAAUC,UAAU,CAACD,EAAUE,OAAQF,EAAU4B,SAASvB,WACjEC,SAAUN,EAAUO,KAAKF,oCCnEdwB,EAA0B,CACrCC,MAAO,QACPC,KAAM,OACNC,SAAU,CACRC,YAAa,4EACbC,SAAU,YACVC,OAAQ,SACRC,QAAS,UACTC,QAAS,UACTC,OAAQ,SACRC,WAAY,cACZC,SAAU,eACVC,WAAY,CACVC,MAAO,UACPT,YAAa,8DAEfU,MAAO,CACLC,kBAAmB,8BACnBC,WAAY,gBACZC,WAAY,gBACZC,gBAAiB,gBACjBC,WAAY,0GACZC,cAAe,mBACfC,oBAAqB,0GAGzBC,QAAS,CACPC,OAAQ,SACRC,KAAM,OACNC,OAAQ,SACRvB,KAAM,OACNwB,cAAe,kBACfC,WAAY,cACZhB,SAAU,YAEZiB,SAAU,CACRxB,YAAa,kDACbyB,aAAc,kBACdC,cAAe,mBACfC,cAAe,mBACfnB,WAAY,CACVC,MAAO,uBACPT,YAAa,0CAGjB4B,MAAO,CACLb,WAAY,CACRc,QAAS,CACLpB,MAAO,UACPT,YAAa,8BAEjB8B,KAAM,CACFrB,MAAO,UACPT,YAAa,6BAGrBa,WAAY,CACRgB,QAAS,CACLpB,MAAO,UACPT,YAAa,+BAEjB8B,KAAM,CACFrB,MAAO,UACPT,YAAa,8BAGrB+B,KAAM,CACFD,KAAM,CACFrB,MAAO,UACPT,YAAa,wBAGrBgC,MAAO,CACHF,KAAM,CACFrB,MAAO,UACPT,YAAa,wBAEjB6B,QAAS,CACLpB,MAAO,UACPT,YAAa,wCC/EZiC,EAA0B,CACrCpC,MAAO,WACPC,KAAM,QACNC,SAAU,CACRC,YAAa,8FACbC,SAAU,kBACVC,OAAQ,SACRC,QAAS,eACTC,QAAS,QACTC,OAAQ,YACRC,WAAY,iBACZC,SAAU,uBACVC,WAAY,CACVC,MAAO,YACPT,YAAa,2EAEfU,MAAO,CACLC,kBAAmB,sCACnBC,WAAY,qBACZC,WAAY,oBACZC,gBAAiB,qBACjBC,WAAY,yGACZC,cAAe,8BACfC,oBAAqB,0IAGzBC,QAAS,CACPC,OAAQ,WACRC,KAAM,SACNC,OAAQ,UACRvB,KAAM,QACNwB,cAAe,8BACfC,WAAY,yBACZhB,SAAU,eAEZiB,SAAU,CACRxB,YAAa,0DACbyB,aAAc,mBACdC,cAAe,wBACfC,cAAe,6BACfnB,WAAY,CACVC,MAAO,yBACPT,YAAa,gDAGjB4B,MAAO,CACLb,WAAY,CACRc,QAAS,CACLpB,MAAO,UACPT,YAAa,iCAEjB8B,KAAM,CACFrB,MAAO,QACPT,YAAa,+BAGrBa,WAAY,CACRgB,QAAS,CACLpB,MAAO,UACPT,YAAa,gCAEjB8B,KAAM,CACFrB,MAAO,QACPT,YAAa,8BAGrB+B,KAAM,CACFD,KAAM,CACFrB,MAAO,QACPT,YAAa,yBAGrBgC,MAAO,CACHF,KAAM,CACFrB,MAAO,QACPT,YAAa,2BAEjB6B,QAAS,CACPpB,MAAO,UACPT,YAAa,+CC/EVkC,EAA0B,CACrCrC,MAAO,WACPC,KAAM,SACNC,SAAU,CACRC,YAAa,0FACbC,SAAU,qBACVC,OAAQ,SACRC,QAAS,mBACTC,QAAS,WACTC,OAAQ,SACRC,WAAY,gBACZC,SAAU,4BACVC,WAAY,CACVC,MAAO,YACPT,YAAa,4EAEfU,MAAO,CACLC,kBAAmB,wCACnBC,WAAY,oBACZC,WAAY,mBACZC,gBAAiB,sBACjBC,WAAY,6FACZC,cAAe,oCACfC,oBAAqB,gJAGzBC,QAAS,CACPC,OAAQ,WACRC,KAAM,SACNC,OAAQ,WACRvB,KAAM,SACNwB,cAAe,iCACfC,WAAY,2BACZhB,SAAU,gBAEZiB,SAAU,CACRxB,YAAa,4DACbyB,aAAc,sBACdC,cAAe,0BACfC,cAAe,mCACfnB,WAAY,CACVC,MAAO,6BACPT,YAAa,0DAGjB4B,MAAO,CACLb,WAAY,CACRc,QAAS,CACLpB,MAAO,QACPT,YAAa,qCAEjB8B,KAAM,CACFrB,MAAO,QACPT,YAAa,kCAGrBa,WAAY,CACRgB,QAAS,CACLpB,MAAO,QACPT,YAAa,kCAEjB8B,KAAM,CACFrB,MAAO,QACPT,YAAa,+BAGrB+B,KAAM,CACFD,KAAM,CACFrB,MAAO,QACPT,YAAa,0BAGrBgC,MAAO,CACHF,KAAM,CACFrB,MAAO,QACPT,YAAa,2BAEjB6B,QAAS,CACPpB,MAAO,QACPT,YAAa,+CC5EVmC,EAAc,SAACC,GAC1B,OAAQA,GACN,IAAK,KACH,OAAOxC,EACT,IAAK,QACH,OAAOqC,EACT,IAAK,KACH,OAAOC,EACT,QACE,OAAOtC,ICRAyC,EAAYxF,EAAOyF,IAAGvF,IAAAA,EAAAC,85CAC/B,SAACsC,GAAK,OACNA,EAAMiD,WACNC,MAAGrF,IAAAA,EAAAH,2vBA2HMyF,EAAS5F,EAAOyF,IAAGI,IAAAA,EAAA1F,mgBClInB2F,EAAe9F,EAAOyF,IAAGvF,IAAAA,EAAAC,gGAOzB4F,GAAQ/F,EAAOgG,MAAK1F,IAAAA,EAAAH,0jBAwCpB8F,GAAsBjG,EAAOyF,IAAGI,IAAAA,EAAA1F,2LC/ChC+F,GAAiBlG,EAAOmG,KAAIjG,IAAAA,EAAAC,09BAgCrB,SAACsC,GAAK,eAAcA,EAAM2D,aC3BxCC,GAAkC,SAA3B9F,WAA8B6F,MAAmBE,EAAA/F,EAAEgG,KAC9D,OACE1F,gBAACC,IACCsF,eAH0CI,EAAG,YAAWA,EAIxDzF,UAAWC,EAAG,uBAJgDsF,EAAG,KAAIA,GAAW/F,EAATQ,aAMvEF,6BACAA,6BACAA,6BACAA,8ECPAkF,GAAQU,cACZ,SAAAlG,EAAyFmG,WAAtFH,KAAAA,WAAID,EAAG,SAAQA,EAAE7F,EAAQF,EAARE,SAAQkG,EAAApG,EAAEmF,UAAAA,WAASiB,GAAQA,EAAAC,EAAArG,EAAEQ,UAAAA,WAAS6F,EAAG,GAAEA,EAAKnE,EAAK9B,EAAAJ,EAAAK,IACvE,OACEC,gBAACC,GAAeC,UAAWA,GACxB2E,EACC7E,gBAACC,QACCD,gBAACwF,UAED,KACJxF,gBAACC,kBAAQC,UAAWC,EAAG,CAACuF,IAAQG,IAAKA,GAASjE,GAC3ChC,OAOXsF,GAAM9E,UAAY,CAChBR,SAAUS,EAAUI,KAAKC,WACzBR,UAAWG,EAAUE,OACrBmF,KAAMrF,EAAU2F,MAAM,CAAC,QAAS,SAAU,UAC1CnB,UAAWxE,EAAUS,MC5BhB,4BAAMmF,GAAiB9G,EAAOyF,IAAGvF,IAAAA,EAAAC,oDAK3B4G,GAAQ/G,EAAOgH,MAAK1G,IAAAA,EAAAH,kMAapB8G,GAAgBjH,EAAOyF,IAAGI,IAAAA,EAAA1F,yFCRjC+G,GAA0C,SAA/B3G,OAEf4G,EAAQ5G,EAAR4G,SACAC,EAAY7G,EAAZ6G,aAcA,OACEvG,gBAACiG,QACCjG,gBAACkG,IACCM,KAAK,OACL7F,SAAU,SAAC8F,GAAM,OAhBJ,SAACA,GAClB,IAAMC,EAAaD,EAAEE,OAAO9F,MAAM+F,OAC5BC,EAAuBC,EAAMC,KAAKL,GAAYM,cAE9CC,EAAWV,EAAaW,QAAO,SAACC,GAEpC,OAD2BL,EAAMC,KAAKI,EAAKC,MAAMJ,cACvBK,SAASR,MAGrCP,EAAwB,KAAfI,EAAoBO,EAAWV,GAOde,CAAWb,IACjCc,YArBK7H,EAAX6H,cAuBIvH,gBAACoG,QACCpG,gBAACwH,oBC7BIC,GAAatI,EAAOyF,IAAGvF,KAAAA,GAAAC,6aACvB,SAAAI,GAAS,OAAmB,IAAnBA,EAANgI,OAA6B,OAAS,UAC1C,SAAAzG,GAAU,OAAoB,IAApBA,EAAP0G,QAA+B,UAAY,aAS7C,SAAAC,GAAS,OAAAA,EAANC,UAoBHC,GAAQ3I,EAAOyF,IAAGnF,KAAAA,GAAAH,maAMhB,SAAAyI,GAAW,OAAAA,EAARC,YAwBLC,GAAiB9I,EAAOyF,IAAGI,KAAAA,GAAA1F,qEAGxB,SAAA4I,GAAY,OAAAA,EAATC,aAGNC,GAAcjJ,EAAOkJ,OAAMC,KAAAA,GAAAhJ,mKAQ3BiJ,GAAapJ,EAAOyF,IAAG4D,KAAAA,GAAAlJ,8JASvBmJ,GAAmBtJ,EAAOuJ,OAAMC,KAAAA,GAAArJ,wFAchCsJ,GAAsBzJ,EAAOyF,IAAGiE,KAAAA,GAAAvJ,yGAE7B,SAAAwJ,GAAY,OAAAA,EAATC,aACH,SAAAC,GAAY,OAAAA,EAATb,aAINc,GAAqB9J,EAAOyF,IAAGsE,KAAAA,GAAA5J,2MCxGtC6J,GAA0C,SAA/BzJ,OAAkCE,EAAQF,EAARE,SAAaC,EAAIC,EAAAJ,EAAAK,IAClE,OAAOC,gBAACiJ,oBAAuBpJ,GAAOD,IAGxCuJ,GAAY/I,UAAY,CACtBR,SAAUS,EAAUI,KAAKC,wDCHrB0I,GAA4C,SAAhC1J,OAAmCE,EAAQF,EAARE,SAAQyJ,EAAA3J,EAAEyI,UAAAA,WAASkB,EAAG,cAAaA,EAAAC,EAAA5J,EAAEqJ,UAAAA,WAASO,EAAG,UAASA,EAAKzJ,EAAIC,EAAAJ,EAAAK,IACtH,OACEC,gBAAC4I,kBAAoBT,UAAWA,EAAWY,UAAWA,GAAelJ,GAClED,IAKPwJ,GAAahJ,UAAY,CACvBR,SAAUS,EAAUI,KAAKC,WACzByH,UAAW9H,EAAUE,OACrBwI,UAAW1I,EAAUE,QCGvB,OAAMuH,GAA8B,SAAzBpI,OACTgI,EAAMhI,EAANgI,OACA6B,EAAK7J,EAAL6J,MACAvB,EAAQtI,EAARsI,SACAG,EAASzI,EAATyI,UACAjI,EAASR,EAATQ,UACA6C,EAAKrD,EAALqD,MACAnD,EAAQF,EAARE,SACA4J,EAAO9J,EAAP8J,QACAC,EAAY/J,EAAZ+J,aACA9B,EAAOjI,EAAPiI,QACAE,EAAMnI,EAANmI,OAEM6B,EAAWC,SAAuB,MAElCC,EAAcC,eAClB,SAACpD,GACC,IAAMqD,EAAsC,CAE1CC,GAAI,WACFtD,EAAEuD,kBACGrC,GAAW6B,GACdA,IAEFS,OAAOC,oBAAoB,QAASN,GAAa,KAIjDE,EAAKrD,EAAE0D,UAAYzC,GACrBoC,EAAKrD,EAAE0D,aAGX,CAACX,EAAS9B,EAAQC,IAGdyC,EAAqBP,eACzB,SAACpD,GACKiD,EAASW,SAAWX,EAASW,QAAQC,aAAe7D,EAAEE,UACnDgB,GAAW6B,GACdA,IAEFe,SAASL,oBAAoB,QAASE,GAAoB,MAG9D,CAACZ,EAAS7B,IAaZ,OAVA6C,aAAU,WAIR,OAHAP,OAAOQ,iBAAiB,QAASb,GAAa,GAC9CW,SAASE,iBAAiB,QAASL,GAAoB,GAEhD,WACLH,OAAOC,oBAAoB,QAASN,GAAa,GACjDW,SAASL,oBAAoB,QAASE,GAAoB,MAE3D,CAACR,EAAaQ,IAGfpK,gBAACC,IAAa0H,QAASA,EAAU,EAAI,EAAGD,OAAQA,EAAS,EAAI,EAAGG,aAAQA,EAAAA,EAAU,GAChF7H,gBAACC,IAAQ4F,IAAK6D,EAAUH,MAAOA,EAAOvB,SAAUA,EAAU9H,UAAWA,GACnEF,gBAACC,IAAiBC,UAAU,eAAeiI,UAAWA,EAAWoB,MAAOE,GACpEzJ,gBAACC,QACCD,gBAACC,QAAcyK,OAAO3H,IACtB/C,gBAACC,IAAmBuG,KAAK,SAASzE,QAASyH,GACzCxJ,gBAAC2K,WAAQpF,MAAM,UAAUG,KAAM,OAGpC9F,MAOXkI,GAAM1H,UAAY,CAChBsH,OAAQrH,EAAUS,KAAKJ,WACvBqC,MAAO1C,EAAUC,UAAU,CACzBD,EAAUG,QACVH,EAAUE,OACVF,EAAUO,OAEZhB,SAAUS,EAAUI,KAAKC,WACzB8I,QAASnJ,EAAUO,KACnB2I,MAAOlJ,EAAUuK,SAASvK,EAAUwK,KACpCpB,aAAcpJ,EAAUuK,SAASvK,EAAUwK,KAC3C3K,UAAWG,EAAUE,OACrByH,SAAU3H,EAAUE,OACpB4H,UAAW9H,EAAUE,OACrBoH,QAAStH,EAAUS,KACnB+G,OAAQxH,EAAU4B,QAGpB6F,GAAM/G,aAAe,CACnBgC,MAAO,GACPwG,MAAO,GACPE,aAAc,GACdvJ,UAAW,GACX8H,SAAU,QACVG,UAAW,cACXR,SAAS,EACT6B,QAAS,aACT3B,OAAQ,MC9HV,yBAQalD,GAAYxF,EAAOyF,IAAGvF,KAAAA,GAAAC,spCAWnB,SAAAI,GAAY,OAAAA,EAAToL,gUAaG,SAAA7J,GAAkB,OAAAA,EAAf8J,mBAgBC,SAAAnD,GAAiB,OAAAA,EAAdoD,0KC9BvBC,GAAkC,SAAxBvL,OACdwL,EAAIxL,EAAJwL,KACAnI,EAAKrD,EAALqD,MACAT,EAAW5C,EAAX4C,YACA6I,EAAYzL,EAAZyL,aACAC,EAAU1L,EAAV0L,WACAC,EAAiB3L,EAAjB2L,kBACAC,EACM5L,EAANgJ,OACA6C,EAAc7L,EAAd6L,eACAC,EAAe9L,EAAf8L,gBACAV,EAASpL,EAAToL,UACGjL,EAAIC,EAAAJ,EAAAK,IAEP,OACEC,gBAACC,kBACC+K,eAAgBO,EAChBR,gBAAiBS,EACjBV,UAAWA,GACPjL,GAEJG,uBAAKE,UAAU,WACbF,uBAAKE,UAAU,QACZgL,GAEHlL,uBAAKE,UAAU,eACbF,8BAAM+C,GAEN/C,yBAAIsC,GAEH6I,EACCnL,8BACGoL,MAAaC,GAEd,KAEH3C,MAOXuC,GAAW7K,UAAY,CACrB8K,KAAM7K,EAAUC,UAAU,CAACD,EAAUE,OAAQF,EAAUG,UACvDuC,MAAO1C,EAAUE,OACjB+B,YAAajC,EAAUE,OACvB4K,aAAc9K,EAAUS,KACxBsK,WAAY/K,EAAUG,QACtB6K,kBAAmBhL,EAAUE,OAC7B+K,YAAajL,EAAUE,OACvBmI,OAAQrI,EAAUG,QAClB+K,eAAgBlL,EAAUE,OAC1BiL,gBAAiBnL,EAAUE,OAC3BuK,UAAWzK,EAAUS,MAGvBmK,GAAWlK,aAAe,CACxBmK,KAAM,GACNnI,MAAO,GACPT,YAAa,GACb6I,cAAc,EACdE,kBAAmB,GACnBC,YAAa,QACbC,eAAgB,mBAChBC,gBAAiB,wBACjBV,WAAW,GClFN,OAAMW,GAAqBtM,EAAOyF,IAAGvF,KAAAA,GAAAC,6CAK/BoM,GAAYvM,EAAOyF,IAAGnF,KAAAA,GAAAH,4IAWtBqM,GAAaxM,EAAOyF,IAAGI,KAAAA,GAAA1F,oSAqBvBsM,GAAazM,EAAOyF,IAAG0D,KAAAA,GAAAhJ,oJAYvBuM,GAAgB1M,EAAO2M,MAAKtD,KAAAA,GAAAlJ,mFAQ5ByM,GAAiB5M,EAAOyF,IAAG+D,KAAAA,GAAArJ,2HAS3B0M,GAAgB7M,EAAOyF,IAAGiE,KAAAA,GAAAvJ,8KChDjC2M,GAA0C,SAA/BvM,OAAkCwM,EAAOxM,EAAPwM,QAASzJ,EAAO/C,EAAP+C,QAAS0J,EAAUzM,EAAVyM,WAAYC,EAAU1M,EAAV0M,WAAYpJ,EAAKtD,EAALsD,MAAO0B,EAAQhF,EAARgF,SAAU2H,EAAgB3M,EAAhB2M,iBAC5GC,EAAgCC,YAAS,GAAlCC,EAAQF,KAAEG,EAAWH,KAC5BI,EAAkCH,WAAS,IAApCI,EAASD,KAAEE,EAAYF,KACxBG,EAAIpI,EAAYC,GAoCtB,OAlCA8F,aAAU,WACRiC,GAAY,KACX,CAACzJ,IAiCFhD,4BACEA,gBAACC,QACCD,gBAACC,IAAY8B,QAvBI,WACrB0K,GAAaD,KAuBPxM,8BACGkM,EAAQ7K,KAAI,SAACyL,EAAQC,GAAK,OACzB/M,0BAAQgN,IAAKD,EAAOlM,MAAOiM,EAAOjM,OAAQiM,EAAOhB,WAGrD9L,gBAACC,QACCD,gBAACC,QACEwC,EAAQpB,KAAI,SAACR,EAAOkM,GAAK,OACxB/M,gBAACC,IAAgB+M,IAAKD,GAAQlM,OAGlCb,yBACEwG,KAAK,OACLe,YAAa8E,EAAmBQ,EAAErJ,QAAQI,cAAgBiJ,EAAErJ,QAAQK,WACpEhD,MAAO8L,EACPhM,SAnCc,SAACsM,GACzBL,EAAaK,EAAMtG,OAAO9F,QAmChBqM,WAhCgB,SAACD,GAC3B,GAAkB,UAAdA,EAAMD,KAAmBX,EAAkB,CAC7CY,EAAMjD,iBACN,IAAMmD,EAAgBR,EAAU/F,OACV,KAAlBuG,GAAyBjB,EAAQkB,MAAK,SAAAN,GAAM,OAAIA,EAAOjM,QAAUsM,OACnEf,GAAW,SAAAiB,GAAW,SAAAC,OAAQD,GAAa,CAAEvB,MAAOqB,EAAetM,MAAOsM,QAC1EhB,GAAW,SAAAoB,GAAW,SAAAD,OAAQC,GAAaJ,QAE7CP,EAAa,UA4BX5M,gBAACC,IAAasJ,MAAO,CAAEiE,QAAShB,EAAW,QAAU,SAClDN,EAAQ7K,KAAI,SAACyL,EAAQC,GAAK,OACzB/M,gBAACC,IAAgB+M,IAAKD,EAAOU,QAASX,EAAOjM,OAC3Cb,yBACEwG,KAAK,WACLkH,GAAIZ,EAAOjM,MACX8M,QAASlL,EAAQ4E,SAASyF,EAAOjM,OACjCF,SAAU,WAAA,OA7DME,EA6DqBiM,EAAOjM,WA5DxDsL,GAAW,SAAAoB,GACT,OAAIA,EAAYlG,SAASxG,GAChB0M,EAAYrG,QAAO,SAAA0G,GAAG,OAAIA,IAAQ/M,QAEzCyM,OAAWC,GAAa1M,OALD,IAACA,KA+DjBiM,EAAOhB,cCvETnH,GAAYxF,EAAOyF,IAAGvF,KAAAA,GAAAC,giBAUb,SAACsC,GAAK,OAvBX,SAACA,GAChB,OAAIA,EAAMiM,aACD,UAELjM,EAAMkM,aACD,UAELlM,EAAMmM,aACD,UAEF,UAawBC,CAASpM,MCJpCqM,GAAwC,SAA9BvO,WACdwO,WAAAA,WAAUC,EAAG,kBAAiBA,EAAAC,EAAA1O,EAC9B2O,aAAAA,WAAYD,GAAQA,EAAAE,EAAA5O,EACpB6G,aAAAA,WAAY+H,EAAG,GAAEA,EAAAC,EAAA7O,EACjB8O,QAAAA,WAAOD,EAAG,aAAQA,EAAAE,EAAA/O,EAClByH,KAAAA,WAAIsH,EAAG,GAAEA,EAAAC,EAAAhP,EACTiB,SAAAA,WAAQ+N,EAAG,aAAQA,EAEnBpC,EAA8BC,WAAiB,IAAxCoC,EAAOrC,KAAEsC,EAAUtC,KACpBO,EAAIpI,EAAY,SAEtB+F,aAAU,WACRoE,KAAUtB,OAAK/G,EAAiBoI,MAC/B,IAEH,IAAME,EAAShF,eACb,SAACiF,EAAuBC,GAClBA,GAAkBA,EAAeC,OAAS,GAC5CC,QAAQC,MAAM,uBAAwBH,GAGxCpO,EAASmO,GAET,IACMK,KADK7B,OAAOqB,EAAYG,GACJzN,KAAI,SAAC+N,EAAMrC,GAAK,MAAM,CAC9CW,GAAIX,EAAQ,EACZsC,aAAcD,EAAKC,aACnBjI,KAAMgI,EAAKhI,KACX1B,KAAM0J,EAAK1J,KACXc,KAAM4I,EAAK5I,SAEboI,EAAWO,GAEXL,EAAcQ,SAAQ,SAACnI,GACrB,IAAMoI,EAAS,IAAIC,WAEnBD,EAAOE,OAAS,WAEdjB,EAAQ,CAAEkB,QADQH,EAAOI,OACoBC,WAAYzI,KAE3DoI,EAAOM,kBAAkB1I,QAG7B,CAACwH,IAGHmB,EAOIC,cAAY,CACdC,OAAQ9B,EACR+B,SAAS,EACTC,YAAY,EACZC,SAAU9B,EACVQ,OAAAA,IAXAuB,EAAYN,EAAZM,aACAC,EAAaP,EAAbO,cACAC,EAAIR,EAAJQ,KACAvC,EAAY+B,EAAZ/B,aACAF,EAAYiC,EAAZjC,aACAC,EAAYgC,EAAZhC,aASF,OACE9N,gCACIqO,GAAoC,WAApBM,SAAAA,EAASK,UAAkB7H,EAC3CnH,gBAAC2E,oBACKyL,EAAa,CAAErC,aAAAA,EAAcF,aAAAA,EAAcC,aAAAA,KAE/C9N,yCAAWqQ,MAEXrQ,4BACEA,yBACG6M,EAAExK,SAASW,MAAMC,oBAGtBjD,0BAAQwG,KAAK,SAASzE,QAASuO,GAC5BzD,EAAExK,SAASW,MAAME,aAItBlD,gBAAC2E,oBACKyL,EAAa,CAAErC,aAAAA,EAAcF,aAAAA,EAAcC,aAAAA,KAE/C9N,yBAAImH,MAOd8G,GAAW7N,UAAY,CACrB8N,WAAY7N,EAAUE,OACtB8N,aAAchO,EAAUS,KACxByF,aAAclG,EAAUkQ,QAAQlQ,EAAUmQ,QAC1CC,WAAYpQ,EAAUO,KACtB4N,QAASnO,EAAUO,KACnBD,SAAUN,EAAUO,KACpB8P,aAAcrQ,EAAUS,MAG1BmN,GAAWlN,aAAe,CACxBmN,WAAY,mBACZG,cAAc,EACd9H,aAAc,GACdkK,WAAY,aACZjC,QAAS,aACT7N,SAAU,aACV+P,cAAc,GC/HhBC,EAAMC,SAASC,QAFH,wCAIZ,+BAAeF,EAAMG,yBCQfC,GAAqBC,qBAAkDC,GAEhEC,GAAiB,WAC5B,IAAMC,EAAUC,aAAWL,IAC3B,IAAKI,EACH,MAAM,IAAIE,MAAM,kEAElB,OAAOF,EAAQvP,OAGJ0P,GAAuC,SAApB5R,OAAuBE,EAAQF,EAARE,SAAagC,EAAK9B,EAAAJ,EAAAK,IAC/D2N,EAAiB9L,EAAjB8L,GAAIhJ,EAAa9C,EAAb8C,SACZ4H,EAAwBC,WAAc,MAA/BgF,EAAIjF,KAAEkF,EAAOlF,KACpBI,EAAgCH,WAAc,MAAvCkF,EAAQ/E,KAAEgF,EAAWhF,KAE5BlC,aAAU,WACR,IAAMmH,aAAS,IAAA1Q,EAAA2Q,EAAAC,IAAAC,MAAG,SAAAC,IAAA,IAAAC,EAAA,OAAAH,IAAAI,eAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OAAA,OAAAF,EAAAC,OAAAD,EAAAE,OAESC,GAAIC,aAAa5E,GAAK,QAArCsE,EAAqCE,EAAAK,KAArCP,MAGNR,EAAQQ,GAER/C,QAAQC,MAAM,+BACfgD,EAAAE,QAAA,MAAA,OAAAF,EAAAC,OAAAD,EAAAM,GAAAN,WAEDjD,QAAQC,MAAM,+BAA8BgD,EAAAM,IAAS,QAAA,UAAA,OAAAN,EAAAO,UAAAV,oBAExD,kBAZc,OAAA9Q,EAAAyR,WAAAC,eAcTlB,aAAQ,IAAA7J,EAAAgK,EAAAC,IAAAC,MAAG,SAAAc,IAAA,IAAAZ,EAAA,OAAAH,IAAAI,eAAAY,GAAA,cAAAA,EAAAV,KAAAU,EAAAT,MAAA,OAAA,OAAAS,EAAAV,OAAAU,EAAAT,OAEUC,GAAIC,0BAA0B5N,GAAW,QAAxDsN,EAAwDa,EAAAN,KAAxDP,MAGNN,EAAYM,GAEZ/C,QAAQC,MAAM,+BACf2D,EAAAT,QAAA,MAAA,OAAAS,EAAAV,OAAAU,EAAAL,GAAAK,WAED5D,QAAQC,MAAM,+BAA8B2D,EAAAL,IAAS,QAAA,UAAA,OAAAK,EAAAJ,UAAAG,oBAExD,kBAZa,OAAAhL,EAAA8K,WAAAC,eAcdhB,IACAF,MACC,CAAC/D,IAEJ,IAAMoF,EAAWC,KACZnR,GACHoR,SAAUzB,EACVE,SAAAA,IAGF,OACEzR,gBAAC+Q,GAAmBkC,UAASpS,MAAO,CAAEe,MAAOkR,IAC1ClT,ICnCMsT,GAA2B,SAAHtL,GACjC,MAAO,CACHpB,KCjCgB,uBDkChB2M,QAAS,CAAEhR,MAH6ByF,EAALzF,SEb9BiR,GAAW,WACtB,IAAAC,EAA0CnC,KAAlCxD,EAAE2F,EAAF3F,GAAIhJ,EAAQ2O,EAAR3O,SAAUsO,EAAQK,EAARL,SAAUM,EAAKD,EAALC,MAChChH,EAA0BC,WAAqB,IAAxCpK,EAAKmK,KAAEhG,EAAQgG,KACtBI,EAAwCH,WAAqB,IAAtDhG,EAAYmG,KAAE6G,EAAe7G,KACpC8G,EAAoCjH,aAA7BpJ,EAAUqQ,KAAEC,EAAaD,KAChCE,EAA0BnH,YAAS,GAA5BvJ,EAAK0Q,KAAEC,EAAQD,KACtBE,EAAsCrH,YAAS,GAAxCsH,EAAWD,KAAEE,EAAcF,KAClCG,EAA0CxH,YAAS,GAA5CyH,EAAaD,KAAEE,EAAgBF,KACtCG,EAAoC3H,WAAS,IAAtC4H,EAAUD,KAAEE,EAAaF,KAChCG,EAA4C9H,WAAwC,IAA7E+H,EAAcD,KAAEE,EAAiBF,KACxCG,EAA8BjI,WAAmB,IAA1C9J,EAAO+R,KAAErI,EAAUqI,KACpB3H,EAAIpI,EAAYC,GAChB+P,EAAWC,gBACXC,EAAYC,eAAY,SAACC,GAAU,OAAKA,EAAM1S,SAC9C0C,EAAY+P,eAAY,SAACC,GAAU,OAAKA,EAAMhQ,aAC9C0M,EAAOyB,EAAWA,EAASzB,KAAO,GAExC/G,aAAU,WACRiK,EFxC0B,SAAC/G,EAAY4F,GACvC,MAAO,CACH9M,KCHa,oBDIb2M,QAAS,CAAEzF,GAAAA,EAAI4F,MAAAA,IEqCVwB,CAAepH,EAAI4F,MAC3B,CAAC5F,IAEJlD,aAAU,WACR,GAAG+G,EAAKvC,OAAS,EAAE,CACjB,IAAM9C,EAAUqF,EAAKlQ,KAAI,SAAC0T,GACxB,MAAO,CAAEjJ,MAAOiJ,EAAKlU,MAAOkU,MAE9BR,EAAkBrI,QACXoI,EAAetF,OAAS,GAC/BuF,EAAkB,MAGnB,CAAChD,IAEJ/G,aAAU,WACR,IAAIxH,EAAM,CACR,IAAMkJ,EAAUqF,EAAKlQ,KAAI,SAAC0T,GACxB,MAAO,CAAEjJ,MAAOiJ,EAAKlU,MAAOkU,MAE9BR,EAAkBrI,MAEnB,CAAClJ,IAEJwH,aAAU,WACHmK,IACHrO,EAASqO,GACTpB,EAAgBoB,MAEjB,CAACA,IAEJ,IAAMK,EAAa,SAACzD,GASlB,MARW,GAEHA,EAAKlQ,KAAI,SAAA0T,GACf,IAAME,EAAYF,EAAIG,QAAU,GAAKC,iBAAenV,gBAACoV,YAAS1P,KAAM,MAEpE,wBADiBqP,EAAIG,QAAU,UAAY,SACNH,EAAI3N,SAAQ6N,YAChDI,KAAK,KAKJC,EAAkB,WACnBtS,IACDyQ,OAAcxC,GACd9E,EAAW,KAEbwH,GAAU3Q,IAGNuS,EAAwB,SAACnO,GAC7B6H,QAAQuG,IAAI,8BAA+BpO,GAC3CgN,EAAchN,GACd0M,GAAgBD,IAGZ4B,EAA0B,SAAClE,GAC/B,IAAImE,EAAqB,SACzBnE,GAAAA,EAAMlQ,KAAI,SAAC0T,GACLA,EAAIG,SACNQ,EAASC,KAAKZ,EAAI3N,SAGtB+E,EAAWuJ,GACXzB,GAAkBD,IAyKpB,OACEhU,gBAACsR,IAAoB5D,GAAIA,EAAIhJ,SAAUA,EAAU4O,MAAOA,EAAON,SAAU,CAAEzB,KAAM,IAAME,SAAU,CAAC,CAACrK,KAAM,GAAI9E,YAAa,MACxHtC,gBAACC,OA1IDD,gBAACC,GAAY4E,UAAWA,GACtB7E,uBAAK0N,GAAG,YACR1N,gBAACC,OACCD,uBAAKE,UAAU,SACbF,0BAAK6M,EAAE1K,OACPnC,yBAAI6M,EAAExK,SAASC,cAEjBtC,uBAAKE,UAAU,WACbF,gBAAC4V,IAAOrO,YAAasF,EAAExK,SAASM,OAAQ2D,SAAUA,EAAUC,aAAcA,IAC1EvG,2BACEA,0BAAQ0N,GAAG,gBAAgB3L,QAASuT,GAAiBtV,gBAAC6V,YAASnQ,KAAM,SAAQmH,EAAExK,SAASO,YACxF5C,0BAAQ+B,QAAS,WAAA,OAAM0T,OAAwBxE,KAAYjR,gBAAC8V,qBAAkBpQ,KAAM,SAAQmH,EAAExK,SAASQ,aAK1F,IAAjBV,EAAM6M,OACJhP,gBAACiL,IACCC,KAAMlL,gBAAC+V,eACPhT,MAAO8J,EAAExK,SAASS,WAAWC,MAC7BT,YAAauK,EAAExK,SAASS,WAAWR,YACnC8I,WAAYpL,0BAAQ0N,GAAG,gBAAgB3L,QAASuT,GAAiBtV,gBAAC6V,YAASnQ,KAAM,SAAQmH,EAAExK,SAASO,YACpGyI,kBAAmBwB,EAAExK,SAASO,WAC9B0I,YAAY,UAEZtL,gBAACkF,QACClF,6BACEA,0BACEA,sBAAIgN,IAAI,eAAe9M,UAAU,gBAC9B2M,EAAExK,SAASE,UAEdvC,sBAAIgN,IAAI,eAAe9M,UAAU,aAC9B2M,EAAExK,SAASG,QAEdxC,sBAAIgN,IAAI,cAAc9M,UAAU,eAC/B2M,EAAExK,SAASI,SAEZzC,sBAAIgN,IAAI,aAAa9M,UAAU,cAC9B2M,EAAExK,SAASK,WAKhB1C,6BACGmC,EAAMd,KAAI,SAACmP,GAAM,OAChBxQ,0BACEA,sBAAIgW,wBAAyB,CAAEC,QAxDjCC,EAwDkD1F,EAAO0F,KAxD3C9O,EAwDiDoJ,EAAOpJ,KAvDnF8O,cAEkBA,uBADDf,iBAAenV,gBAACmW,UAAOzQ,KAAM,cACc0B,EAExDA,MAoDWpH,0BAAKwQ,EAAO0E,QAAUlV,gBAACoW,WAAQ1Q,KAAM,GAAK6D,MAAO,CAAEhE,MAAO,WAAgBvF,gBAACoV,YAAS1P,KAAM,GAAK6D,MAAO,CAAEhE,MAAO,UAC/GvF,sBAAIE,UAAU,OAAO8V,wBAAyB,CAAEC,OAAQjB,EAAWxE,EAAOe,SAC1EvR,0BACEA,uBAAKE,UAAU,aACbF,0BAAQE,UAAU,iBAAiB6B,QAAS,WAAA,OAAM0T,EAAwBjF,EAAOe,QAAQ1E,EAAErJ,QAAQX,UACnG7C,0BAAQE,UAAU,eAAe6B,QAAS,WAAA,OAAMwT,EAAsB/E,EAAOpJ,QAAQyF,EAAErJ,mBA9D9F,IAAC0S,EAAc9O,OAsE1BpH,gBAAC8H,IACCJ,OAAQ1E,EACRgF,SAAS,QACTG,UAAU,cACVqB,QAAS8L,EACTvS,MAAO8J,EAAExK,SAASW,MAAMG,YAEtBnD,gBAACoJ,QACCpJ,uBAAKE,UAAU,eACfF,gBAACiO,IACCO,QAASiF,EACTtM,WAAMhE,SAAAA,EAAYyM,WAAWxI,QAG/BpH,uBAAKE,UAAU,WACbF,yBAAI6M,EAAExK,SAASI,SACfzC,gBAACiM,IAAYG,WAAYmI,EAAmBrI,QAASoI,EAAgB7R,QAASA,EAAS0J,WAAYA,EAAYnJ,MAAOA,EAAO0B,SAAUA,EAAU2H,kBAAkB,MAGvKrM,gBAACmJ,QACCnJ,0BAAQE,UAAU,gBAAgB6B,QAASuT,GACxCzI,EAAErJ,QAAQC,QAEbzD,0BAAQ+B,QAAS,WAAA,OAzG3B0S,EFxF6B,SAACtN,EAAWuG,EAAYgI,EAAoBhR,EAAkB4O,GAC3F,MAAO,CACH9M,KC3BgB,uBD4BhB2M,QAAS,CAAEhM,KAAAA,EAAMuG,GAAAA,EAAIgI,SAAAA,EAAUhR,SAAAA,EAAU4O,MAAAA,IEqFpC+C,CAAkBlT,EAAYuK,EAAIjL,EAASiC,EAAU4O,IAC9DK,GAAS,GACTF,OAAcxC,QACd9E,EAAW,KAsG0CjM,UAAU,cAAcsG,KAAK,SAAS8P,KAAK,YACnFzJ,EAAErJ,QAAQE,QAKnB1D,gBAAC8H,IACDJ,OAAQmM,EACR7L,SAAS,QACTG,UAAU,cACVqB,QAAS,WAAA,OAAM+L,EAAsB,KACrCxS,MAAO8J,EAAExK,SAASW,MAAMI,iBAEtBpD,gBAACoJ,QACCpJ,qBAAG0N,GAAG,WAAWb,EAAExK,SAASW,MAAMK,aAEpCrD,gBAACmJ,QACCnJ,0BAAQE,UAAU,gBAAgB6B,QAAS,WAAA,OAAMwT,EAAsB,MACpE1I,EAAErJ,QAAQC,QAEbzD,0BAAQE,UAAU,gBAAgBsG,KAAK,SAAS8P,KAAK,WAAWvU,QArIvD,WACjBkN,QAAQuG,IAAI,oBAAqBrB,GAEjCM,EFjG6B,SAACrN,EAAcsG,EAAYhJ,EAAkB4O,GAC1E,MAAO,CACH9M,KCfgB,uBDgBhB2M,QAAS,CAAE/L,KAAAA,EAAMsG,GAAAA,EAAIhJ,SAAAA,EAAU4O,MAAAA,IE8F1BiD,CAAkBpC,EAAYzG,EAAIhJ,EAAU4O,IACrDQ,GAAe,KAkIJjH,EAAErJ,kBAITxD,gBAAC8H,IACCJ,OAAQsM,EACRhM,SAAS,QACTG,UAAU,cACVqB,QAAS,WAAA,OAAMiM,OAAwBxE,IACvClO,MAAO8J,EAAExK,SAASW,MAAMM,eAEtBtD,gBAACoJ,QACCpJ,qBAAG0N,GAAG,QAAQb,EAAExK,SAASW,MAAMO,qBAC/BvD,uBAAKE,UAAU,WACbF,yBAAI6M,EAAExK,SAASI,SACfzC,gBAACiM,IAAYG,WAAYmI,EAAmBrI,QAASoI,EAAgB7R,QAASA,EAAS0J,WAAYA,EAAYnJ,MAAOA,EAAO0B,SAAUA,EAAU2H,kBAAkB,MAGvKrM,gBAACmJ,QACCnJ,0BAAQE,UAAU,gBAAgB6B,QAAS,WAAA,OAAM0T,OAAwBxE,KACtEpE,EAAErJ,QAAQC,QAEbzD,0BAAQ+B,QAAS,WAAA,OA7I3B0S,EFjF0B,SAAC/G,EAAYgI,EAAoBhR,EAAkB4O,GAC7E,MAAO,CACH9M,KCvCY,mBDwCZ2M,QAAS,CAAEzF,GAAAA,EAAIgI,SAAAA,EAAUhR,SAAAA,EAAU4O,MAAAA,IE8E9BkD,CAAe9I,EAAIjL,EAASiC,EAAU4O,IAC/CW,GAAiB,QACjB9H,EAAW,KA2IqCjM,UAAU,cAAcsG,KAAK,SAAS8P,KAAK,YAC9EzJ,EAAErJ,QAAQE,YCpQdiB,GAAYxF,EAAOyF,IAAGvF,KAAAA,GAAAC,qBAC/B,SAACsC,GAAK,OACNA,EAAMiD,WACNC,MAAGrF,KAAAA,GAAAH,2vBAgCMyF,GAAS5F,EAAOyF,IAAGI,KAAAA,GAAA1F,oOAkBnBmX,GAAStX,EAAOyF,IAAG0D,KAAAA,GAAAhJ,iYAuBnBoX,GAASvX,EAAOyF,IAAG4D,KAAAA,GAAAlJ,wZCjFnBqF,GAAYxF,EAAOyF,IAAGvF,KAAAA,GAAAC,w5BCY7BqX,GAAsC,SAA1BjX,OAA6BwM,EAAOxM,EAAPwM,QAAS0K,EAAQlX,EAARkX,SAAUrP,EAAW7H,EAAX6H,YAChE+E,EAA4BC,YAAS,GAA9BsK,EAAMvK,KAAEwK,EAASxK,KACxBI,EAA0CH,WAA0B,IAA7DwK,EAAarK,KAAEsK,EAAgBtK,KAStC,OACE1M,gBAACC,QACCD,uBAAKE,UAAU,gBAAgB6B,QAAS,WAAA,OAAM+U,GAAWD,KACvD7W,uBAAKE,UAAU,mBACZ6W,GAAiBxP,EAClBvH,wBAAME,UAAU,eAEjB2W,GACC7W,uBAAKE,UAAU,WACZgM,EAAQ7K,KAAI,SAAAyL,GAAM,OACjB9M,uBACEgN,IAAKF,EAAOjM,MACZ0I,MAAO,CAAE0N,WAAYnK,EAAOjM,QAAUkW,EAAgB,eAAY9F,EACzD1L,MAAOuH,EAAOjM,QAAUkW,EAAgB,aAAU9F,GAC3D/Q,UAAU,SACV6B,QAAS,WAAA,OArBfmV,EAAWxM,OAqB6BoC,EAAOjM,OApBrDmW,EAAiBE,GACjBN,EAASM,QACTJ,GAAU,GAJe,IACnBI,IAuBOpK,EAAOhB,cCxCXnH,GAAYxF,EAAOyF,IAAGvF,KAAAA,GAAAC,yEAMtB6X,GAAchY,EAAOgH,MAAK1G,KAAAA,GAAAH,0NCAjC8X,GAAsC,SAA7B1X,OAA6CiB,EAAQjB,EAARiB,SAC1D,OACEX,gBAACC,QACCD,gBAACC,IACCuG,KAAK,OACL7F,SAAU,SAAC8F,GAAM,OAAK9F,EAAS8F,EAAEE,OAAO9F,QACxC0G,YANkD7H,EAAX6H,gBCKlC8P,GAAW,WACtB,IAAAhE,EAAoDnC,KAA5CxD,EAAE2F,EAAF3F,GAAIhJ,EAAQ2O,EAAR3O,SAAU+M,EAAQ4B,EAAR5B,SAAUuB,EAAQK,EAARL,SAAUM,EAAKD,EAALC,MACpCzG,EAAIpI,EAAYC,GAChB4S,EAAU1C,eAAY,SAACC,GAAU,OAAKA,EAAM0C,WAC5C1S,EAAY+P,eAAY,SAACC,GAAU,OAAKA,EAAMhQ,aACpDyH,EAA4BC,WAAS,IAA9B5J,EAAM2J,KAAEkL,EAASlL,KACxBI,EAA8BH,WAAS,IAAhCkL,EAAO/K,KAAEgL,EAAUhL,KAC1B8G,EAA8BjH,WAAS,IAAhC9J,EAAO+Q,KAAErH,EAAUqH,KACpBiB,EAAWC,gBACXnD,EAAOyB,EAAWA,EAASzB,KAAO,GAGlCoG,EAAiBlG,GAAYA,EAASpQ,KAAI,SAAAuW,GAC9C,MAAO,CAAE9L,MAAO8L,EAAQxQ,KAAMvG,MAAO+W,EAAQxQ,SAGzCkN,EAAiB/C,EAAKlQ,KAAI,SAAA0T,GAC9B,MAAO,CAAEjJ,MAAOiJ,EAAKlU,MAAOkU,MAsD9B,OACE/U,gBAACsR,IAAoB5D,GAAIA,EAAI4F,MAAOA,EAAO5O,SAAUA,EAAUsO,SAAU,CAAEzB,KAAM,IAAME,SAAU,CAAC,CAACrK,KAAM,GAAI9E,YAAa,MACxHtC,gBAACC,QAnCDD,gBAACC,IAAY4E,UAAWA,GACtB7E,uBAAK0N,GAAG,YACR1N,gBAACC,QACCD,uBAAKE,UAAU,SACbF,0BAAK6M,EAAEzK,MACPpC,yBAAI6M,EAAE/I,SAASxB,eAGnBtC,gBAACC,QACCD,gBAACoX,IAAU7P,YAAasF,EAAE/I,SAASC,aAAcpD,SAnBpC,SAACE,GACpB2W,EAAU3W,MAmBJb,gBAAC6X,IAAOtQ,YAAasF,EAAE/I,SAASE,cAAekI,QAASyL,EAAgBf,SA5BpD,SAAC/V,GAC3B6W,EAAW7W,MA4BLb,gBAAC6X,IAAOtQ,YAAasF,EAAE/I,SAASG,cAAeiI,QAASoI,EAAgBsC,SAzBpD,SAAC/V,GAC3BsL,EAAWtL,MAyBLb,0BAAQ+B,QAlBG,WACjB0S,ERKsB,SAACqD,EAAkBL,EAAiBhV,EAAiBsV,EAAyBzE,GACpG,MAAO,CACH9M,KC7CQ,eD8CR2M,QAAS,CAAE2E,SAAAA,EAAUL,QAAAA,EAAShV,QAAAA,EAASsV,gBAAAA,EAAiBzE,MAAAA,IQRnD0E,CAAWrV,EAAQ8U,EAAShV,EAASiL,EAAI4F,MAiBftT,gBAACiY,2BAAmBpL,EAAErJ,QAAQpB,OAG1DkV,EAOGtX,gBAACC,QACCD,uBAAKE,UAAU,QACbF,gBAACkY,mBAEHlY,uBAAKE,UAAU,QAAQoX,IAV3BtX,gBAACiL,IACCC,KAAMlL,gBAAC+V,eACPhT,MAAO8J,EAAE/I,SAAShB,WAAWC,MAC7BT,YAAauK,EAAE/I,SAAShB,WAAWR,YACnC6I,cAAc,QC3DfgN,GAAO,SAACvW,GACnB,IAAMwW,EAAQC,kBACNC,EAAaC,gBAAbD,SACFE,EAAUC,eAEV5L,EAAIpI,EAAY7C,EAAM8C,UAEtBgU,EAAYC,WAAQ,WACxB,OAAOL,EAASM,MAAM,KAAK,IAAM,UAChC,CAACN,IAEJ,OACItY,gBAACsR,kBAAoB0B,SAAU,CAAEzB,KAAM,IAAME,SAAU,CAAC,CAACrK,KAAM,GAAI9E,YAAa,MAAUV,GACxF5B,gCACEA,gBAACgB,GACCH,MAAO6X,EACP/X,SAAU,SAACE,GAAK,OAAK2X,EAAQ7C,KAAQyC,EAAMS,QAAOhY,KAElDb,gBAACT,GAAIsB,MAAM,SAASgM,EAAE1K,OACtBnC,gBAACT,GAAIsB,MAAM,QAAQgM,EAAEzK,OAEvBpC,gBAAC8Y,YAASC,SAAUnX,EAAMoX,SACxBhZ,gBAACiZ,cACCjZ,gBAACkZ,SAAMC,QAASf,EAAMe,KAAQC,SAAMC,UAAWjG,KAC/CpT,gBAACkZ,SAAMC,KAASf,EAAMe,cAAcE,UAAWjG,KAC/CpT,gBAACkZ,SAAMC,KAASf,EAAMe,aAAaE,UAAWhC,UClCtDiC,GAAgB,CAClBnX,MAAO,GACPoV,QAAS,GACT1S,WAAW,EACX0U,YAAY,EACZC,WAAW,YAGSC,GAAa5E,EAAuB6E,GACxD,gBADiC7E,IAAAA,EAAQyE,IAClCK,UAAQ9E,GAAO,SAAC+E,GACnB,OAAQF,EAAOlT,MACX,ITZS,oBSeT,ITbY,uBScRoT,EAAMzX,MAAQuX,EAAOvG,QAAQhR,MAC7B,MACJ,ITXI,eSYAyX,EAAMrC,QAAUmC,EAAOvG,QAAQoE,QAC/B,MACJ,ITbK,gBScDqC,EAAM/U,WAAY,EAClB,MACJ,ITfM,iBSgBF+U,EAAM/U,WAAY,EAClB,MACJ,ITjBM,iBSkBF+U,EAAML,YAAa,EACnB,MACJ,ITnBO,kBSoBHK,EAAML,YAAa,EACnB,MACJ,ITrBM,iBSsBFK,EAAMJ,WAAY,EAClB,MACJ,ITvBO,kBSwBHI,EAAMJ,WAAY,EAClB,MACJ,QACI,OAAOE,EAAOvG,YChC9B,IAAM0G,GAAwD,SAAtCna,OAEtB4C,EAAW5C,EAAX4C,YAEA,OACEtC,gCACEA,uBAAKE,UAAU,2BACbF,0BAAQE,UAAU,yBANnBR,EAALqD,OAOOT,GACCtC,qBAAGE,UAAU,+BAA+BoC,MAOhD4B,GAeG,SAAA6D,GAAqB,OAC1B+R,QAAW5K,MACTlP,gBAAC6Z,IACC9W,MAHSgF,EAALhF,MAIJT,YAJsByF,EAAXzF,4BC7BFyX,IAAYC,GAAAnI,IAAAC,KAaZmI,IAAeC,GAAArI,IAAAC,KAiBfqI,IAAQC,GAAAvI,IAAAC,KAaRuI,IAAeC,GAAAzI,IAAAC,KAsCfyI,IAAYC,GAAA3I,IAAAC,KAsBJ2I,aAvGRV,GAAaL,GAAW,IAAAgB,EAAAhN,EAAA4F,EAAAtB,EAAA,OAAAH,IAAAI,eAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OAErC,OAFqCF,EAAAC,OAAAD,EAAAE,OAE/BuI,MZmD+B,CACrCnU,KCxDa,kBWIkB,OAEd,OADTkH,GADuBgN,EACThB,EAAOvG,SAArBzF,GAAI4F,EAAKoH,EAALpH,MAAKpB,EAAAE,OACMwI,OAAKvI,GAAIC,iBAAkB5E,YAAY4F,GAAQ,OACtE,OADQtB,EAA8DE,EAAAK,KAA9DP,KAAIE,EAAAE,QACNuI,MZPC,CACHnU,KCTa,oBDUb2M,QAAS,CAAEhR,MYK0B6P,EAAK7P,SAAQ,QAAA+P,EAAAE,QAAA,MAAA,QAAAF,EAAAC,QAAAD,EAAAM,GAAAN,WAEtDjD,QAAQuG,IAAI,mDAA+CtD,EAAAM,IAAS,QAEpE,OAFoEN,EAAAC,QAAAD,EAAAE,QAE9DuI,MZgDkC,CACxCnU,KC3Dc,mBWUkB,QAAA,OAAA0L,EAAA2I,WAAA,QAAA,UAAA,OAAA3I,EAAAO,UAAAqI,iCAInBb,GAAgBP,GAAW,IAAA7M,EAAAkO,EAAArN,EAAAtG,EAAAkM,EAAAtB,EAAA,OAAAH,IAAAI,eAAAY,GAAA,cAAAA,EAAAV,KAAAU,EAAAT,MAAA,OAGxC,OAFIvF,EAAIpI,EAAYiV,EAAOvG,QAAQzO,UAASmO,EAAAV,OAAAU,EAAAT,OAEtCuI,MZqC+B,CACrCnU,KCxDa,kBWkBkB,OAG/B,OAFQkH,GADuBqN,EACHrB,EAAOvG,SAA3BzF,GAAItG,EAAI2T,EAAJ3T,KAAMkM,EAAKyH,EAALzH,MAAKT,EAAAT,OAEjBwI,OAAKvI,qBAAuB3E,MAAMtG,YAAckM,GAAQ,OAC7C,OAD6CT,EAAAT,OACvCwI,OAAKvI,GAAIC,iBAAkB5E,YAAY4F,GAAQ,OACtE,OADQtB,EAA8Da,EAAAN,KAA9DP,KAAIa,EAAAT,QACNuI,MZTC,CACHnU,KCrBgB,uBDsBhB2M,QAAS,CAAEhR,MYO6B6P,EAAK7P,SAAwB,QAAA0Q,EAAAT,QAAA,MAAA,QAAAS,EAAAV,QAAAU,EAAAL,GAAAK,WAEzE3O,GAAY,CAACnB,MAAO8J,EAAE3I,MAAMb,WAAWe,KAAKrB,MAAOT,YAAauK,EAAE3I,MAAMb,WAAWe,KAAK9B,cACxF2M,QAAQuG,IAAI,0DAAsD3C,EAAAL,IAAS,QAE3E,OAF2EK,EAAAV,QAAAU,EAAAT,QAErEuI,MZ+BkC,CACxCnU,KC3Dc,mBW2BkB,QAAA,OAAAqM,EAAAgI,WAAA,QAAA,UAAA,OAAAhI,EAAAJ,UAAAuH,iCAInBG,GAAST,GAAW,IAAAsB,EAAAlD,EAAAL,EAAAhV,EAAAsV,EAAAzE,EAAAtB,EAAA,OAAAH,IAAAI,eAAAgJ,GAAA,cAAAA,EAAA9I,KAAA8I,EAAA7I,MAAA,OAEjC,OAFiC6I,EAAA9I,OAAA8I,EAAA7I,OAE3BuI,MZqB+B,CACrCnU,KCxDa,kBWkCkB,OAEd,OADTsR,GADuBkD,EACgCtB,EAAOvG,SAA9D2E,SAAUL,EAAOuD,EAAPvD,QAAShV,EAAOuY,EAAPvY,QAASsV,EAAeiD,EAAfjD,gBAAiBzE,EAAK0H,EAAL1H,MAAK2H,EAAA7I,OACnCwI,OAAKvI,GAAI6I,YAAc,CAAEpD,SAAAA,EAAUL,QAAAA,EAAS1C,IAAKtS,EAASsV,gBAAAA,EAAiBzE,MAAAA,IAAQ,OAC1G,OADQtB,EAAkGiJ,EAAA1I,KAAlGP,KAAIiJ,EAAA7I,QACNuI,MZYC,CACHnU,KCnDQ,eDoDR2M,QAAS,CAAEoE,QYdwBvF,EAAKuF,WAAW,QAAA0D,EAAA7I,QAAA,MAAA,QAAA6I,EAAA9I,QAAA8I,EAAAzI,GAAAyI,WAEvDhM,QAAQuG,IAAI,mDAA+CyF,EAAAzI,IAAS,QAEpE,OAFoEyI,EAAA9I,QAAA8I,EAAA7I,QAE9DuI,MZkBkC,CACxCnU,KC3Dc,mBWwCkB,QAAA,OAAAyU,EAAAJ,WAAA,QAAA,UAAA,OAAAI,EAAAxI,UAAAyH,iCAInBG,GAAgBX,GAAW,IAAA7M,EAAAsO,EAAAzN,EAAAvG,EAAAuO,EAAApC,EAAA8H,EAAAC,EAAAC,EAAAzC,EAAA7G,EAAA,OAAAH,IAAAI,eAAAsJ,GAAA,cAAAA,EAAApJ,KAAAoJ,EAAAnJ,MAAA,OAGxC,OAFIvF,EAAIpI,EAAYiV,EAAOvG,QAAQzO,UAAS6W,EAAApJ,OAAAoJ,EAAAnJ,OAEtCuI,MZO+B,CACrCnU,KCxDa,kBWgDkB,OAe/B,OAdQkH,GADuByN,EACOzB,EAAOvG,SAArCzF,GAAIvG,EAAIgU,EAAJhU,KAAMuO,EAAQyF,EAARzF,SAAUpC,EAAK6H,EAAL7H,MAEtB8H,EAAO,IAAII,KAAK,CAACrU,EAAKuI,WACtB2L,EAAW,IAAII,UACZC,OAAO,OAAQN,EAAMjU,EAAKyI,WAAWuJ,MAExCmC,EAAc5F,EAAS1G,OACzB,IAAI2M,gBAAgB,CAAEpK,KAAMmE,EAASL,KAAK,OAAQuG,WAClD,GAEE/C,EAAMyC,aACG5N,YAAY4F,MAASgI,aACrB5N,YAAY4F,EAAOiI,EAAAnJ,QAE5BwI,OAAKvI,GAAI6I,KAAMrC,EAAKwC,EAAU,CAClCQ,QAAS,CACPC,eAAgB,yBAElB,QAEe,OAFfP,EAAAnJ,QAEqBwI,OAAKvI,GAAIC,iBAAkB5E,YAAY4F,GAAQ,QACtE,OADQtB,EAA8DuJ,EAAAhJ,KAA9DP,KAAIuJ,EAAAnJ,QACNuI,MAAIzH,GAAyB,CAAE/Q,MAAO6P,EAAK7P,SAAS,QAAAoZ,EAAAnJ,QAAA,MAAA,QAAAmJ,EAAApJ,QAAAoJ,EAAA/I,GAAA+I,WAE1DrX,GAAY,CACVnB,MAAO8J,EAAE3I,MAAMf,WAAWiB,KAAKrB,MAC/BT,YAAauK,EAAE3I,MAAMf,WAAWiB,KAAK9B,cAEvC2M,QAAQuG,IAAI,0DAAsD+F,EAAA/I,IAAS,QAE3E,OAF2E+I,EAAApJ,QAAAoJ,EAAAnJ,QAErEuI,MZnBkC,CACxCnU,KC3Dc,mBW6EkB,QAAA,OAAA+U,EAAAV,WAAA,QAAA,UAAA,OAAAU,EAAA9I,UAAA2H,iCAKnBG,GAAab,GAAW,IAAA7M,EAAAkP,EAAArO,EAAAgI,EAAApC,EAAAyB,EAAAuG,EAAAtJ,EAAA,OAAAH,IAAAI,eAAA+J,GAAA,cAAAA,EAAA7J,KAAA6J,EAAA5J,MAAA,OAGrC,OAFIvF,EAAIpI,EAAYiV,EAAOvG,QAAQzO,UAASsX,EAAA7J,OAAA6J,EAAA5J,OAEtCuI,MZ/B+B,CACrCnU,KCxDa,kBWsFkB,OAM/B,OALQkH,GADuBqO,EACCrC,EAAOvG,SAA/BzF,GAAc4F,EAAKyI,EAALzI,MAChByB,GADMW,EAAQqG,EAARrG,UACSL,KAAK,KAEpBiG,EAAc,IAAIK,gBAAgB,CAAE5G,IAAAA,IAAO6G,WAAUI,EAAA5J,OAErDwI,OAAKvI,GAAI6I,KAAMxF,EAAS1G,OAAS,eAAkBsM,cAA4B,CAAEvD,gBAAiBrK,EAAI4F,MAAAA,IAAQ,OAEnG,OAFmG0I,EAAA5J,QAE7FwI,OAAKvI,GAAIC,iBAAkB5E,YAAY4F,GAAQ,QACtE,OADQtB,EAA8DgK,EAAAzJ,KAA9DP,KAAIgK,EAAA5J,QACNuI,MAAIzH,GAAyB,CAAE/Q,MAAO6P,EAAK7P,SAAS,QDtE1D2X,QAAW3V,QACTnE,gBAAC6Z,IACC9W,OAHG6E,ECwEO,CAAC7E,MAAO8J,EAAE3I,MAAMI,MAAMH,QAAQpB,MAAOT,YAAauK,EAAE3I,MAAMI,MAAMH,QAAQ7B,cDxE5ES,MAINT,YAJwBsF,EAAXtF,eCwEmF0Z,EAAA5J,QAAA,MAAA,QAAA4J,EAAA7J,QAAA6J,EAAAxJ,GAAAwJ,WAEpG9X,GAAY,CAACnB,MAAO8J,EAAE3I,MAAMI,MAAMF,KAAKrB,MAAOT,YAAauK,EAAE3I,MAAMI,MAAMF,KAAK9B,cAC9E2M,QAAQuG,IAAI,uDAAmDwG,EAAAxJ,IAAS,QAExE,OAFwEwJ,EAAA7J,QAAA6J,EAAA5J,QAElEuI,MZ1CkC,CACxCnU,KC3Dc,mBWoGkB,QAAA,OAAAwV,EAAAnB,WAAA,QAAA,UAAA,OAAAmB,EAAAvJ,OD7EzB,IAAA7K,IC6EyB0S,wBAIpC,SAAyBG,KAAU,OAAA5I,IAAAI,eAAAgK,GAAA,cAAAA,EAAA9J,KAAA8J,EAAA7J,MAAA,OACjC,OADiC6J,EAAA7J,OAC3B8J,MAAI,CACRC,aXpHiB,oBWoHmBpC,IACpCoC,aXnHoB,uBWmHmBlC,IACvCkC,aXlHoB,uBWkHmB9B,IACvC8B,aXhHY,eWgHmBhC,IAC/BgC,aXlHgB,mBWkHmB5B,MACnC,OAAA,UAAA,OAAA0B,EAAAxJ,UAAA+H,ICrHJ,IAAM4B,GAAiBC,IAEjBC,GAAQC,cAAYC,GAASC,kBAAgBL,KAEnDA,GAAeM,IAAIC,2BCKG/a,GACpB,OAAO5B,gBAACiT,YAASqJ,MAAOA,IACdtc,gBAACmY,oBAASvW"}
1
+ {"version":3,"file":"code7-leia.cjs.production.min.js","sources":["../src/components/Tabs/styles.tsx","../src/components/Tabs/index.tsx","../src/utils/languages/en.ts","../src/utils/languages/pt-br.ts","../src/utils/languages/es.ts","../src/utils/getLanguage.tsx","../src/components/FileArea/styles.tsx","../src/components/FileArea/components/Table/styles.tsx","../src/components/FileArea/components/Spinner/styles.tsx","../src/components/FileArea/components/Spinner/index.tsx","../src/components/FileArea/components/Table/index.tsx","../src/components/FileArea/components/Search/styles.tsx","../src/components/FileArea/components/Search/index.tsx","../src/components/FileArea/components/Modal/styles.tsx","../src/components/FileArea/components/Modal/ModalFooter.tsx","../src/components/FileArea/components/Modal/ModalContent.tsx","../src/components/FileArea/components/Modal/index.tsx","../src/components/EmptyState/styles.tsx","../src/components/EmptyState/index.tsx","../src/components/MultiSelect/styles.tsx","../src/components/MultiSelect/index.tsx","../src/components/FileArea/components/AreaUpload/styles.tsx","../src/components/FileArea/components/AreaUpload/index.tsx","../src/service/Api.ts","../src/contexts/SharedPropsProvider.tsx","../src/store/modules/actions.ts","../src/store/modules/types.ts","../src/components/FileArea/index.tsx","../src/components/TestArea/styles.tsx","../src/components/Select/styles.tsx","../src/components/Select/index.tsx","../src/components/TestArea/components/InputTest/styles.tsx","../src/components/TestArea/components/InputTest/index.tsx","../src/components/TestArea/index.tsx","../src/Leia.tsx","../src/store/modules/reducer.ts","../src/components/CustomToast/index.tsx","../src/store/modules/sagas.ts","../src/store/index.ts","../src/index.tsx"],"sourcesContent":["import styled from 'styled-components';\nimport { ReactNode } from 'react';\n\ninterface TabProps {\n children: ReactNode;\n}\n\ninterface OptionProps {\n children: ReactNode;\n onClick: () => void;\n}\n\nexport const TabsPane = styled.ul`\n width: max-content;\n display: flex;\n align-items: center;\n border-bottom: 1px solid var(--neutral-1);\n`;\n\nexport const Tab = styled.li<TabProps>`\n padding: 12px;\n color: var(--neutral-3);\n font-size: 0.875rem;\n font-weight: normal;\n position: relative;\n cursor: pointer;\n\n svg {\n fill: var(--neutral-3) !important;\n margin-left: 8px;\n }\n\n &.active {\n color: var(--primary-700-light);\n\n svg {\n fill: var(--primary-700-light) !important;\n }\n\n ::after {\n content: '';\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 2px;\n background-color: var(--primary-700-light);\n }\n }\n\n &:not(:last-child) {\n margin-right: 8px;\n }\n`;\n\nexport const DropdownContainer = styled.div`\n position: absolute;\n left: 0px;\n top: 40px;\n display: flex;\n flex-direction: column;\n\n background: #ffffff;\n\n border: 1px solid #979aa5;\n box-sizing: border-box;\n box-shadow: 0px 6px 12px -6px rgba(24, 39, 75, 0.12),\n 0px 8px 24px -4px rgba(24, 39, 75, 0.08);\n border-radius: 4px;\n padding: 8px;\n z-index: 2;\n`;\n\nexport const Option = styled.div<OptionProps>`\n padding: 8px;\n font-size: 14px;\n border-radius: 4px;\n cursor: pointer;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n &:hover {\n background-color: var(--primary-800-light);\n color: white;\n }\n`;\n","import React, { ReactNode } from 'react';\nimport PropTypes from 'prop-types';\nimport cc from 'classcat';\n\nimport * as S from './styles';\n\ninterface TabProps {\n children: ReactNode;\n active?: boolean;\n}\n\ninterface ITabsProps {\n children: ReactNode;\n value: string | number;\n onChange: (e: any) => void;\n active?: boolean;\n}\n\nexport const Tab = ({ active, children, ...rest }: TabProps) => {\n return (\n <S.Tab className={cc({ active })} {...rest}>\n {children}\n </S.Tab>\n );\n};\n\nTab.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.element,\n PropTypes.node,\n ]).isRequired,\n onChange: PropTypes.func,\n value: PropTypes.string,\n active: PropTypes.bool,\n};\n\nTab.defaultProps = {\n onChange: () => {},\n value: '',\n active: false,\n};\n\nexport const Tabs = ({ children: childrenProp, value, onChange, ...rest }: ITabsProps) => {\n const children = React.Children.map(childrenProp, (child) => {\n if (!React.isValidElement(child)) {\n return null;\n }\n\n if (Array.isArray(child.props?.children)) {\n return React.cloneElement(child as React.ReactElement<any>, {\n active: child.props?.value === value,\n value,\n onChange,\n });\n }\n\n return React.cloneElement(child as React.ReactElement<any>, {\n active: child.props?.value === value,\n onClick: () => onChange(child.props?.value),\n });\n });\n\n return <S.TabsPane {...rest}>{children}</S.TabsPane>;\n};\n\nTabs.propTypes = {\n children: PropTypes.node.isRequired,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\n onChange: PropTypes.func.isRequired,\n};\n","import { Language } from \"../../interface/Language\";\n\nexport const enTranslation: Language = {\n files: 'Files',\n test: 'Test',\n fileArea: {\n description: 'Manage your files with ease! Add new ones and delete old ones as desired.',\n fileName: 'File name',\n status: 'Status',\n presset: 'Presset',\n actions: 'Actions',\n search: 'Search',\n fileUpload: 'File upload',\n training: 'Train preset',\n emptyState: {\n title: 'No data',\n description: 'No files uploaded yet. Start by adding your documents now!',\n },\n modal: {\n descriptionUpload: 'Drag and drop files here or',\n chooseFile: 'Choose a file',\n uploadFile: 'Upload a file',\n deleteFileTitle: 'Delete a file',\n deleteFile: 'Important! By deleting this file, you will lose all its information and will not be able to recover it.',\n trainingTitle: 'Presset Training',\n trainingDescription: 'Select one or more pressets to be trained. Note: If none are selected, Le-IA will train all pressets.'\n },\n },\n buttons: {\n cancel: 'Cancel',\n send: 'Send',\n delete: 'Delete',\n test: 'Test',\n addNewPresset: 'Add new presset',\n addPresset: 'Add presset',\n training: 'Training'\n },\n testArea: {\n description: 'Type a sentence to test artificial intelligence',\n typeSentence: 'Type a sentence',\n selectPersona: 'Select a Persona',\n selectPresset: 'Select a presset',\n emptyState: {\n title: 'No data for analysis',\n description: 'Do a search, click the \"Test\" button.',\n },\n },\n toast: {\n deleteFile: {\n success: {\n title: 'Success',\n description: 'File deleted successfully!'\n },\n fail: {\n title: 'Failure',\n description: 'Error deleting the file!'\n }\n },\n uploadFile: {\n success: {\n title: 'Success',\n description: 'File uploaded successfully!'\n },\n fail: {\n title: 'Failure',\n description: 'Error uploading the file!'\n }\n },\n Test: {\n fail: {\n title: 'Failure',\n description: 'Error testing Le-IA'\n }\n },\n Train: {\n fail: {\n title: 'Failure',\n description: 'Error training Le-IA'\n },\n success: {\n title: 'Success',\n description: 'Le-IA is in the training process!'\n }\n }\n }\n};","import { Language } from \"../../interface/Language\";\n\nexport const ptTranslation: Language = {\n files: 'Arquivos',\n test: 'Teste',\n fileArea: {\n description: 'Gerencie seus arquivos com facilidade! Adicione novos e exclua os antigos conforme desejar.',\n fileName: 'Nome do arquivo',\n status: 'Status',\n presset: 'Predefinição',\n actions: 'Ações',\n search: 'Pesquisar',\n fileUpload: 'Enviar arquivo',\n training: 'Treinar predefinição',\n emptyState: {\n title: 'Sem dados',\n description: 'Nenhum arquivo enviado ainda. Comece adicionando seus documentos agora!',\n },\n modal: {\n descriptionUpload: 'Arraste e solte os arquivos aqui ou',\n chooseFile: 'Escolha um arquivo',\n uploadFile: 'Enviar um arquivo',\n deleteFileTitle: 'Excluir um arquivo',\n deleteFile: 'Importante! Ao excluir este arquivo, você perderá todas as suas informações e não poderá recuperá-las.',\n trainingTitle: 'Treinamento de predefinição',\n trainingDescription: 'Selecione um ou mais predefinições para serem treinadas. Obs: Caso não selecionada nenhuma a Le-IA irá treinar todas as predefinições'\n },\n },\n buttons: {\n cancel: 'Cancelar',\n send: 'Enviar',\n delete: 'Excluir',\n test: 'Teste',\n addNewPresset: 'Adicionar nova predefinição',\n addPresset: 'Adicionar predefinição',\n training: 'Treinamento'\n },\n testArea: {\n description: 'Digite uma frase para testar a inteligência artificial.',\n typeSentence: 'Digite uma frase',\n selectPersona: 'Selecione uma Persona',\n selectPresset: 'Selecione uma predefinição',\n emptyState: {\n title: 'Sem dados para análise',\n description: 'Faça uma pesquisa, clique no botão \"Teste\".',\n },\n },\n toast: {\n deleteFile: {\n success: {\n title: 'Sucesso',\n description: 'Arquivo excluído com sucesso!'\n },\n fail: {\n title: 'Falha',\n description: 'Erro ao excluir o arquivo!'\n }\n },\n uploadFile: {\n success: {\n title: 'Sucesso',\n description: 'Arquivo enviado com sucesso!'\n },\n fail: {\n title: 'Falha',\n description: 'Erro ao enviar o arquivo!'\n }\n },\n Test: {\n fail: {\n title: 'Falha',\n description: 'Erro ao testar Le-IA'\n }\n },\n Train: {\n fail: {\n title: 'Falha',\n description: 'Erro ao treinar a Le-IA'\n },\n success: {\n title: 'Sucesso',\n description: 'A Le-IA está em processo de treinamento!'\n }\n }\n }\n};\n","import { Language } from \"../../interface/Language\";\n\nexport const esTranslation: Language = {\n files: 'Archivos',\n test: 'Prueba',\n fileArea: {\n description: '¡Administre sus archivos fácilmente! Agregue nuevos y elimine los antiguos según desee.',\n fileName: 'Nombre del archivo',\n status: 'Status',\n presset: 'Preconfiguración',\n actions: 'Acciones',\n search: 'Buscar',\n fileUpload: 'Subir archivo',\n training: 'Entrenar preconfiguración',\n emptyState: {\n title: 'Sin datos',\n description: 'Aún no se han subido archivos. ¡Comience agregando sus documentos ahora!',\n },\n modal: {\n descriptionUpload: 'Arrastre y suelte los archivos aquí o',\n chooseFile: 'Elegir un archivo',\n uploadFile: 'Subir un archivo',\n deleteFileTitle: 'Eliminar un archivo',\n deleteFile: '¡Importante! Al eliminar este archivo, perderá toda su información y no podrá recuperarla.',\n trainingTitle: 'Entrenamiento de preconfiguración',\n trainingDescription: 'Seleccione una o más preconfiguracións para ser entrenadas. Nota: Si no se selecciona ninguna, Le-IA entrenará todas las preconfiguracións.'\n },\n },\n buttons: {\n cancel: 'Cancelar',\n send: 'Enviar',\n delete: 'Eliminar',\n test: 'Prueba',\n addNewPresset: 'Agregar nueva preconfiguración',\n addPresset: 'Agregar preconfiguración',\n training: 'Capacitación'\n },\n testArea: {\n description: 'Escribe una frase para probar la inteligencia artificial.',\n typeSentence: 'Escribe una oración',\n selectPersona: 'Seleccionar una Persona',\n selectPresset: 'Seleccionar una preconfiguración',\n emptyState: {\n title: 'Sin datos para el análisis',\n description: 'Realice una búsqueda, haga clic en el botón \"Prueba\".',\n },\n },\n toast: {\n deleteFile: {\n success: {\n title: 'Éxito',\n description: '¡Archivo eliminado correctamente!'\n },\n fail: {\n title: 'Error',\n description: 'Error al eliminar el archivo!'\n }\n },\n uploadFile: {\n success: {\n title: 'Éxito',\n description: '¡Archivo subido correctamente!'\n },\n fail: {\n title: 'Error',\n description: 'Error al subir el archivo!'\n }\n },\n Test: {\n fail: {\n title: 'Error',\n description: 'Error al probar Le-IA'\n }\n },\n Train: {\n fail: {\n title: 'Error',\n description: 'Error al entrenar Le-IA'\n },\n success: {\n title: 'Éxito',\n description: '¡Le-IA está en proceso de entrenamiento!'\n }\n }\n }\n};\n","import { Language } from '../interface/Language';\nimport { enTranslation } from './languages/en';\nimport { ptTranslation } from './languages/pt-br';\nimport { esTranslation } from './languages/es';\n\nexport const getLanguage = (language: keyof Record<'en' | 'pt-br' | 'es', Language>): Language => {\n switch (language) {\n case 'en':\n return enTranslation;\n case 'pt-br':\n return ptTranslation;\n case 'es':\n return esTranslation;\n default:\n return enTranslation;\n }\n};","import styled, { css } from 'styled-components';\n\ninterface ContainerProps {\n isloading?: boolean;\n}\n\nexport const Container = styled.div<ContainerProps>`\n ${(props) =>\n props.isloading &&\n css`\n #loading {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgb(151,154,165, 0.7);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 9999;\n }\n\n #loading::after {\n content: \"\";\n border: 4px solid #f3f3f3; /* Cor do símbolo de carregamento */\n border-top: 4px solid #5a5d68; /* Cor do símbolo de carregamento */\n border-radius: 50%;\n width: 13px;\n height: 13px;\n animation: spin 1s linear infinite;\n }\n\n @keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n `}\n\n\n .tag {\n padding: 4px 8px 4px 8px;\n background: #C7F9ED;\n border-radius: 4px;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n\n .tags {\n display: flex;\n justify-content: left;\n gap: 4px;\n }\n\n .divDelete {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n gap: 4px;\n }\n\n .buttonDelete {\n color: #5b0a1f;\n background: #fae0d2;\n padding: 12px 20px;\n border-radius: 4px;\n }\n\n .buttonDelete:hover {\n background: #f5bba7;\n }\n\n .buttonTraining {\n color: #023906;\n background: #e3f8cc;\n padding: 12px 20px;\n border-radius: 4px;\n margin-right: 10px;\n }\n\n .buttonTraining:hover {\n background: #90d665;\n }\n\n .button {\n padding: 8px 16px 8px 16px;\n border-radius: 4px;\n gap: 10px;\n }\n\n .cancel {\n background: #F3F5F9;\n color: #5A5D68;\n }\n\n .send {\n background: #102693;\n color: white;\n }\n\n .delete {\n background: #871821;\n color: white;\n }\n\n .presset {\n padding-top: 10px;\n display: flex;\n flex-direction: column;\n\n p {\n font-size: 14px;\n font-weight: 600;\n padding: 4px 0;\n }\n }\n\n #warning {\n padding: 10px;\n background: #FAE0D2;\n color: #871821;\n }\n\n #info {\n padding: 10px;\n background: #c7f9ed;\n color: #00344e;\n }\n\n`;\n\nexport const Header = styled.div`\n display: flex;\n flex-direction: column;\n\n #button-upload {\n margin-right: 10px;\n }\n\n .infos {\n display: flex;\n flex-direction: column;\n padding: 14px 0;\n\n h2 {\n font-size: 20px\n }\n\n p {\n font-size: 14px\n }\n }\n\n .actions {\n display: flex;\n justify-content: space-between;\n padding-bottom: 14px;\n\n button {\n background: #102693;\n padding: 10px 20px;\n color: white;\n border-radius: 4px;\n }\n }\n\n`\n","import styled from 'styled-components';\n\nexport const TableWrapper = styled.div`\n width: 100%;\n height: max-content;\n min-height: 50px;\n position: relative;\n`;\n\nexport const Table = styled.table`\n font-size: 14px;\n line-height: 143%;\n color: black;\n width: 100%;\n border-collapse: collapse;\n border-radius: 4px;\n\n th {\n font-weight: 600;\n font-size: 14px;\n line-height: 143%;\n letter-spacing: 0.018em;\n color: #5A5D68;\n text-align: left;\n padding: 8px;\n border-radius: 4px;\n }\n\n thead tr {\n background: #dadce3;\n }\n\n tbody tr {\n border: 1px solid #dadce3;\n }\n\n &.small td {\n padding: 4px;\n }\n\n &.medium td {\n padding: 8px;\n }\n\n &.large td {\n padding: 16px;\n }\n`;\n\nexport const TableLoadingWrapper = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: #f3f5f961;\n`;\n","import styled from 'styled-components';\n\nexport const SpinnerWrapper = styled.span`\n display: inline-block;\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n\n &.spinner--sm {\n width: 24px;\n height: 24px;\n }\n\n &.spinner--md {\n width: 32px;\n height: 32px;\n }\n\n &.spinner--lg {\n width: 60px;\n height: 60px;\n }\n\n span {\n box-sizing: border-box;\n display: block;\n position: absolute;\n width: 100%;\n height: 100%;\n margin: 8px;\n border: 4px solid #fff;\n border-radius: 50%;\n animation: rotateSpinner 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;\n border-color: ${(props) => `var(--${props.color})`} transparent transparent\n transparent;\n }\n\n & span:nth-child(1) {\n animation-delay: -0.45s;\n }\n\n & span:nth-child(2) {\n animation-delay: -0.3s;\n }\n\n & span:nth-child(3) {\n animation-delay: -0.15s;\n }\n\n @keyframes rotateSpinner {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n`;\n","import React from 'react';\nimport cc from 'classcat';\n\nimport * as S from './styles';\n\nimport { SpinnerProps } from '../../../../interface/Table'\n\nconst Spinner: React.FC<SpinnerProps> = ({ color = 'neutral-3', size = 'md', className }) => {\n return (\n <S.SpinnerWrapper\n color={color}\n className={cc([`spinner--${size}`, className])}\n >\n <span />\n <span />\n <span />\n <span />\n </S.SpinnerWrapper>\n );\n};\n\nexport default Spinner;\n","import React, { forwardRef, Ref } from 'react';\nimport PropTypes from 'prop-types';\nimport cc from 'classcat';\n\nimport * as S from './styles';\nimport Spinner from '../Spinner';\n\nimport { TableProps } from '../../../../interface/Table'\n\nconst Table = forwardRef(\n ({ size = 'medium', children, isloading = false, className = '', ...props }: TableProps, ref: Ref<HTMLTableElement>) => {\n return (\n <S.TableWrapper className={className}>\n {isloading ? (\n <S.TableLoadingWrapper>\n <Spinner />\n </S.TableLoadingWrapper>\n ) : null}\n <S.Table className={cc([size])} ref={ref} {...props}>\n {children}\n </S.Table>\n </S.TableWrapper>\n );\n }\n);\n\nTable.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string,\n size: PropTypes.oneOf(['small', 'medium', 'large']),\n isloading: PropTypes.bool,\n};\n\nexport default Table;\n","import styled from 'styled-components';\n\nexport const InputContainer = styled.div`\n position: relative;\n width: 300px;\n`;\n\nexport const Input = styled.input`\n padding-left: 40px;\n border-radius: 5px;\n border: 1px solid #ccc;\n height: 45px;\n width: 100%;\n\n &:focus {\n outline: none;\n box-shadow: 0 0 0 3px #6690ff;\n }\n`;\n\nexport const IconContainer = styled.div`\n position: absolute;\n top: 14px;\n left: 10px;\n pointer-events: none;\n`;\n","import React from 'react';\nimport unorm from 'unorm';\nimport { FaSearch } from 'react-icons/fa';\nimport { InputContainer, Input, IconContainer } from './styles';\nimport type { FileData } from '../../../../interface/FileData';\n\ninterface SearchInputProps {\n placeholder: string;\n initialFiles: FileData[];\n setFiles: React.Dispatch<React.SetStateAction<FileData[]>>;\n}\n\nconst SearchInput: React.FC<SearchInputProps> = ({\n placeholder,\n setFiles,\n initialFiles,\n}) => {\n const searchName = (e: React.ChangeEvent<HTMLInputElement>) => {\n const searchTerm = e.target.value.trim();\n const normalizedSearchTerm = unorm.nfkd(searchTerm).toLowerCase();\n\n const newFiles = initialFiles.filter((file) => {\n const normalizedFileName = unorm.nfkd(file.name).toLowerCase();\n return normalizedFileName.includes(normalizedSearchTerm);\n });\n\n setFiles(searchTerm !== '' ? newFiles : initialFiles);\n };\n\n return (\n <InputContainer>\n <Input\n type=\"text\"\n onChange={(e: any) => searchName(e)}\n placeholder={placeholder}\n />\n <IconContainer>\n <FaSearch />\n </IconContainer>\n </InputContainer>\n );\n};\n\nexport default SearchInput;\n","import styled from 'styled-components';\n\ninterface FullScreenProps {\n isopen: number;\n isfixed: number;\n zindex: number;\n}\n\nexport const FullScreen = styled.div<FullScreenProps>`\n display: ${({ isopen }) => (isopen === 1 ? 'flex' : 'none')};\n cursor: ${({ isfixed }) => (isfixed === 0 ? 'pointer' : 'default')};\n\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n justify-content: center;\n align-items: center;\n z-index: ${({ zindex }) => zindex};\n animation: fadeIn 380ms ease-in-out 1;\n background-color: #2f3845b8;\n backdrop-filter: blur(2px);\n\n @keyframes fadeIn {\n from {\n background-color: #2f384521;\n }\n to {\n background-color: #2f3845b8;\n }\n }\n`;\n\ninterface ModalProps {\n maxwidth?: string;\n maxheight?: string;\n}\n\nexport const Modal = styled.div<ModalProps>`\n background-color: #fff;\n border-radius: 3px;\n position: relative;\n cursor: default;\n width: 100%;\n max-width: ${({ maxwidth }) => maxwidth};\n animation: slideIn 350ms cubic-bezier(0.42, 0, 0.21, 1) 1;\n\n @keyframes slideIn {\n from {\n transform: translateY(-120px);\n opacity: 0;\n }\n\n 20% {\n opacity: 0;\n }\n\n to {\n transform: translateY(0);\n opacity: 1;\n }\n }\n`;\n\ninterface ModalContainerProps {\n maxheight?: string;\n}\n\nexport const ModalContainer = styled.div<ModalContainerProps>`\n width: 100%;\n overflow-y: auto;\n max-height: ${({ maxheight }) => maxheight};\n`;\n\nexport const ModalHeader = styled.header`\n display: flex;\n justify-content: space-between;\n align-items: center;\n border-bottom: 1px solid #dadce3;\n padding: var(--spacement-medium);\n`;\n\nexport const ModalTitle = styled.div`\n font-style: normal;\n font-weight: normal;\n font-size: 20px;\n line-height: 150%;\n letter-spacing: 0.0075em;\n color: var(--neutral-4);\n`;\n\nexport const ModalButtonClose = styled.button`\n outline: none;\n cursor: pointer;\n\n :hover {\n opacity: 0.7;\n }\n`;\n\ninterface ModalContentWrapperProps {\n overflowy?: string;\n maxheight?: string;\n}\n\nexport const ModalContentWrapper = styled.div<ModalContentWrapperProps>`\n width: 100%;\n overflow-y: ${({ overflowy }) => overflowy};\n max-height: ${({ maxheight }) => maxheight};\n padding: var(--spacement-medium);\n`;\n\nexport const ModalFooterWrapper = styled.div`\n padding: var(--spacement-medium);\n background: var(--neutral-0);\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: var(--spacement-medium);\n`;\n","import React, { ReactNode } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { ModalFooterWrapper } from './styles';\n\ninterface ModalFooterProps {\n children: ReactNode;\n}\n\nconst ModalFooter: React.FC<ModalFooterProps> = ({ children, ...rest }) => {\n return <ModalFooterWrapper {...rest}>{children}</ModalFooterWrapper>;\n};\n\nModalFooter.propTypes = {\n children: PropTypes.node.isRequired,\n};\n\nexport default ModalFooter;\n","import React, { ReactNode } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { ModalContentWrapper } from './styles';\n\ninterface ModalContentProps {\n children: ReactNode;\n maxheight?: string;\n overflowy?: string;\n}\n\nconst ModalContent: React.FC<ModalContentProps> = ({ children, maxheight = 'max-content', overflowy = 'initial', ...rest }) => {\n return (\n <ModalContentWrapper maxheight={maxheight} overflowy={overflowy} {...rest}>\n {children}\n </ModalContentWrapper>\n );\n};\n\nModalContent.propTypes = {\n children: PropTypes.node.isRequired,\n maxheight: PropTypes.string,\n overflowy: PropTypes.string,\n};\n\nexport default ModalContent;\n","import React, { useEffect, useCallback, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { MdClose } from 'react-icons/md';\n\nimport * as S from './styles';\nimport ModalFooter from './ModalFooter';\nimport ModalContent from './ModalContent';\nimport ModalHeader from './ModalHeader';\nimport ModalTitle from './ModalTitle';\nimport ModalButtonClose from './ModalButtonClose';\n\ninterface ModalProps {\n isopen: boolean;\n style?: React.CSSProperties;\n maxwidth?: string;\n maxheight?: string;\n className?: string;\n title?: string | React.ReactElement | React.ComponentType;\n children: React.ReactNode;\n onClose?: () => void;\n contentStyle?: React.CSSProperties;\n isfixed?: boolean;\n zindex?: number;\n}\n\nconst Modal: React.FC<ModalProps> = ({\n isopen,\n style,\n maxwidth,\n maxheight,\n className,\n title,\n children,\n onClose,\n contentStyle,\n isfixed,\n zindex,\n}) => {\n const modalRef = useRef<HTMLDivElement>(null);\n\n const handleKeyUp = useCallback(\n (e: KeyboardEvent) => {\n const keys: { [key: number]: () => void } = {\n // ESC Key\n 27: () => {\n e.preventDefault();\n if (!isfixed && onClose) {\n onClose();\n }\n window.removeEventListener('keyup', handleKeyUp, false);\n },\n };\n\n if (keys[e.keyCode] && isopen) {\n keys[e.keyCode]();\n }\n },\n [onClose, isopen, isfixed]\n );\n\n const handleOutsideClick = useCallback(\n (e: MouseEvent) => {\n if (modalRef.current && modalRef.current.parentNode === e.target) {\n if (!isfixed && onClose) {\n onClose();\n }\n document.removeEventListener('click', handleOutsideClick, false);\n }\n },\n [onClose, isfixed]\n );\n\n useEffect(() => {\n window.addEventListener('keyup', handleKeyUp, false);\n document.addEventListener('click', handleOutsideClick, false);\n\n return () => {\n window.removeEventListener('keyup', handleKeyUp, false);\n document.removeEventListener('click', handleOutsideClick, false);\n };\n }, [handleKeyUp, handleOutsideClick]);\n\n return (\n <S.FullScreen isfixed={isfixed ? 1 : 0} isopen={isopen ? 1 : 0} zindex={zindex ?? 0}>\n <S.Modal ref={modalRef} style={style} maxwidth={maxwidth} className={className}>\n <S.ModalContainer className=\"styleOverlay\" maxheight={maxheight} style={contentStyle}>\n <S.ModalHeader>\n <S.ModalTitle>{String(title)}</S.ModalTitle>\n <S.ModalButtonClose type=\"button\" onClick={onClose}>\n <MdClose color=\"#5A5D68\" size={16} />\n </S.ModalButtonClose>\n </S.ModalHeader>\n {children}\n </S.ModalContainer>\n </S.Modal>\n </S.FullScreen>\n );\n};\n\nModal.propTypes = {\n isopen: PropTypes.bool.isRequired,\n title: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.string,\n PropTypes.func,\n ]),\n children: PropTypes.node.isRequired,\n onClose: PropTypes.func,\n style: PropTypes.objectOf(PropTypes.any),\n contentStyle: PropTypes.objectOf(PropTypes.any),\n className: PropTypes.string,\n maxwidth: PropTypes.string,\n maxheight: PropTypes.string,\n isfixed: PropTypes.bool,\n zindex: PropTypes.number,\n};\n\nModal.defaultProps = {\n title: '',\n style: {},\n contentStyle: {},\n className: '',\n maxwidth: '360px',\n maxheight: 'max-content',\n isfixed: false,\n onClose: () => {},\n zindex: 9999,\n};\n\nexport { ModalHeader, ModalTitle, ModalButtonClose, ModalContent, ModalFooter };\nexport default Modal;\n","import styled from 'styled-components';\n\ninterface ContainerProps {\n hasborder?: boolean;\n backgroundcolor?: string;\n backgroundicon?: string;\n}\n\nexport const Container = styled.div<ContainerProps>`\n width: 100%;\n display: flex;\n justify-content: center;\n padding: 24px 0;\n height: 193px;\n \n p {\n margin: 10px 0;\n }\n\n background: ${({ hasborder }) =>\n hasborder &&\n `linear-gradient(\n to right,\n #dadce3 50%,\n rgba(255, 255, 255, 0) 0%\n ),\n linear-gradient(#dadce3 50%, rgba(255, 255, 255, 0) 0%),\n linear-gradient(to right, #dadce3 50%, rgba(255, 255, 255, 0) 0%),\n linear-gradient(#dadce3 50%, rgba(255, 255, 255, 0) 0%)`};\n background-position: top, right, bottom, left;\n background-repeat: repeat-x, repeat-y;\n background-size: 40px 1px, 1px 40px;\n background-color: ${({ backgroundcolor }) => backgroundcolor};\n\n button {\n background: #102693;\n color: white;\n width: fit-content;\n padding: 10px 20px;\n border-radius: 4px;\n }\n\n & .content {\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n & > .icon {\n background-color: ${({ backgroundicon }) => backgroundicon};\n border-radius: 16px;\n width: 145px;\n height: 145px;\n\n display: flex;\n justify-content: center;\n\n & svg {\n width: 100%;\n height: 70%;\n margin: 20px;\n }\n }\n\n & .description {\n max-width: 600px;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n padding: 8px 0 8px 24px;\n\n .button-add {\n cursor: pointer;\n }\n\n .start-icon {\n display: flex;\n align-items: center;\n }\n }\n }\n`;\n","import React, { FC, ReactElement } from 'react';\nimport PropTypes from 'prop-types';\nimport * as S from './styles';\n\ninterface EmptyStateProps {\n icon?: string | ReactElement;\n title?: string;\n description?: string;\n activeButton?: boolean;\n iconButton?: ReactElement;\n descriptionButton?: string;\n widthButton?: string;\n button?: ReactElement;\n backgroundIcon?: string;\n backgroundColor?: string;\n hasborder?: boolean;\n}\n\nconst EmptyState: FC<EmptyStateProps> = ({\n icon,\n title,\n description,\n activeButton,\n iconButton,\n descriptionButton,\n widthButton,\n button,\n backgroundIcon,\n backgroundColor,\n hasborder,\n ...rest\n}) => {\n return (\n <S.Container\n backgroundicon={backgroundIcon}\n backgroundcolor={backgroundColor}\n hasborder={hasborder}\n {...rest}\n >\n <div className=\"content\">\n <div className=\"icon\">\n {icon}\n </div>\n <div className=\"description\">\n <h5> {title}</h5>\n\n <p>{description}</p>\n\n {activeButton ? (\n <button>\n {iconButton} {descriptionButton}\n </button>\n ) : null}\n\n {button}\n </div>\n </div>\n </S.Container>\n );\n};\n\nEmptyState.propTypes = {\n icon: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),\n title: PropTypes.string,\n description: PropTypes.string,\n activeButton: PropTypes.bool,\n iconButton: PropTypes.element,\n descriptionButton: PropTypes.string,\n widthButton: PropTypes.string,\n button: PropTypes.element,\n backgroundIcon: PropTypes.string,\n backgroundColor: PropTypes.string,\n hasborder: PropTypes.bool,\n};\n\nEmptyState.defaultProps = {\n icon: '',\n title: '',\n description: '',\n activeButton: false,\n descriptionButton: '',\n widthButton: '140px',\n backgroundIcon: 'var(--neutral-0)',\n backgroundColor: 'var(--absolute-white)',\n hasborder: true,\n};\n\nexport default EmptyState;\n","import styled from 'styled-components';\n\nexport const MultiSelectWrapper = styled.div`\n width: 100%;\n height: 45px;\n`;\n\nexport const SelectBox = styled.div`\n position: relative;\n\n select {\n width: 100%;\n font-weight: bold;\n height: 45px;\n border-radius: 4px;\n }\n`;\n\nexport const OverSelect = styled.div`\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n display: flex;\n\n input {\n height: 43px;\n width: calc(100% - 30px);\n border: none;\n margin: 1px;\n\n &:focus {\n outline: none;\n box-shadow: 0 0 0 3px #6690ff;\n }\n }\n`;\n\nexport const Checkboxes = styled.div`\n display: none;\n background: white;\n position: absolute;\n width: 95%;\n z-index: 10;\n\n label {\n padding: 10px 5px;\n }\n`;\n\nexport const CheckboxLabel = styled.label`\n display: block;\n\n &:hover {\n background-color: #6690ff;\n }\n`;\n\nexport const SelectedValues = styled.div`\n position: absolute;\n top: 9px;\n display: flex;\n flex-wrap: wrap;\n margin-left: 5px;\n right: 30px;\n`;\n\nexport const SelectedValue = styled.div`\n background-color: #254EDB;\n color: white;\n border-radius: 15px;\n padding: 5px 10px;\n margin-right: 5px;\n margin-bottom: 5px;\n white-space: nowrap;\n`;","import React, { useEffect, useState } from 'react';\nimport * as S from './styles';\nimport { getLanguage } from '../../utils/getLanguage'\nimport { Language } from '../../interface/Language';\n\ninterface Option {\n label: string;\n value: string;\n}\n\ninterface MultiSelectProps {\n options: Option[];\n presset: string[];\n setPresset: React.Dispatch<React.SetStateAction<string[]>>;\n setOptions: React.Dispatch<React.SetStateAction<Option[]>>;\n modal: boolean;\n hasAddNewOptions: boolean;\n language: keyof Record<'en' | 'pt-br' | 'es', Language>;\n}\n\nconst MultiSelect: React.FC<MultiSelectProps> = ({ options, presset, setPresset, setOptions, modal, language, hasAddNewOptions }) => {\n const [expanded, setExpanded] = useState(false);\n const [newOption, setNewOption] = useState('');\n const t = getLanguage(language)\n\n useEffect(() => {\n setExpanded(false)\n }, [modal])\n\n const handleCheckboxChange = (value: string) => {\n setPresset(prevPresset => {\n if (prevPresset.includes(value)) {\n return prevPresset.filter(val => val !== value);\n } else {\n return [...prevPresset, value];\n }\n });\n }\n\n const showCheckboxes = () => {\n setExpanded(!expanded);\n }\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setNewOption(event.target.value);\n }\n\n const handleInputKeyPress = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter' && hasAddNewOptions) {\n event.preventDefault();\n const trimmedOption = newOption.trim();\n if (trimmedOption !== '' && !options.some(option => option.value === trimmedOption)) {\n setOptions(prevOptions => [...prevOptions, { label: trimmedOption, value: trimmedOption }]);\n setPresset(prevPresset => [...prevPresset, trimmedOption]);\n }\n setNewOption('');\n }\n }\n\n return (\n <form>\n <S.MultiSelectWrapper>\n <S.SelectBox onClick={showCheckboxes}>\n <select>\n {options.map((option, index) => (\n <option key={index} value={option.value}>{option.label}</option>\n ))}\n </select>\n <S.OverSelect>\n <S.SelectedValues>\n {presset.map((value, index) => (\n <S.SelectedValue key={index}>{value}</S.SelectedValue>\n ))}\n </S.SelectedValues>\n <input\n type=\"text\"\n placeholder={hasAddNewOptions ? t.buttons.addNewPresset : t.buttons.addPresset}\n value={newOption}\n onChange={handleInputChange}\n onKeyPress={handleInputKeyPress}\n />\n </S.OverSelect>\n </S.SelectBox>\n <S.Checkboxes style={{ display: expanded ? 'block' : 'none' }}>\n {options.map((option, index) => (\n <S.CheckboxLabel key={index} htmlFor={option.value}>\n <input\n type=\"checkbox\"\n id={option.value}\n checked={presset.includes(option.value)}\n onChange={() => handleCheckboxChange(option.value)}\n />\n {option.label}\n </S.CheckboxLabel>\n ))}\n </S.Checkboxes>\n </S.MultiSelectWrapper>\n </form>\n );\n}\n\nexport default MultiSelect;\n","import styled from 'styled-components';\n\ninterface ContainerProps {\n isDragAccept?: boolean;\n isDragReject?: boolean;\n isDragActive?: boolean;\n}\n\nconst getColor = (props: ContainerProps) => {\n if (props.isDragAccept) {\n return '#6690ff';\n }\n if (props.isDragReject) {\n return '#e18976';\n }\n if (props.isDragActive) {\n return '#6690ff';\n }\n return '#979aa5';\n};\n\nexport const Container = styled.div<ContainerProps>`\n background-color: #f3f5f9;\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n padding: 20px;\n border-width: 2px;\n border-radius: 4px;\n border-color: var(${(props) => getColor(props)});\n border-style: dashed;\n color: #5a5d68;\n outline: none;\n transition: border 0.24s ease-in-out;\n\n & > span {\n margin: 8px 10px 0 0;\n display: flex;\n }\n\n button {\n padding: 8px 16px 8px 16px;\n border-radius: 4px;\n border: 2px #102693 solid;\n margin-top: 10px;\n }\n`;\n\nexport const ListFiles = styled.div`\n &.horizontal-itens {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n\n & button {\n margin: 4px;\n white-space: nowrap;\n }\n\n .tag-file {\n display: flex;\n gap: 8px;\n padding: 10px 24px !important;\n color: #102693 !important;\n font-size: 14px;\n letter-spacing: 0px;\n }\n\n .tag-icon {\n cursor: pointer;\n }\n }\n`;\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { getLanguage } from '../../../../utils/getLanguage'\nimport { useDropzone, FileRejection } from 'react-dropzone';\nimport PropTypes from 'prop-types';\n\nimport { Container} from './styles';\n\ninterface FileProperties {\n id: number;\n lastModified: number;\n lastModifiedDate: Date;\n name: string;\n size: number;\n type: string;\n}\n\ninterface AreaUploadProps {\n formatFile?: string;\n multipleFile?: boolean;\n initialFiles?: File[];\n removeItem?: (file: FileProperties) => void;\n setFile?: (file: { content: ArrayBuffer | string; properties: File }) => void;\n file: string | undefined;\n onChange?: (files: File[]) => void;\n hasListFiles?: boolean;\n}\n\nconst AreaUpload: React.FC<AreaUploadProps> = ({\n formatFile = 'application/pdf',\n multipleFile = false,\n initialFiles = [],\n setFile = () => {},\n file = '',\n onChange = () => {},\n}) => {\n const [myFiles, setMyFiles] = useState<File[]>([]);\n const t = getLanguage('pt-br')\n\n useEffect(() => {\n setMyFiles([...initialFiles, ...myFiles]);\n }, []);\n\n const onDrop = useCallback(\n (acceptedFiles: File[], fileRejections: FileRejection[]) => {\n if (fileRejections && fileRejections.length > 0) {\n console.error('Arquivos rejeitados:', fileRejections);\n }\n\n onChange(acceptedFiles);\n\n const files = [...myFiles, ...acceptedFiles];\n const filesWithId = files.map((item, index) => ({\n id: index + 1,\n lastModified: item.lastModified,\n name: item.name,\n size: item.size,\n type: item.type,\n }));\n setMyFiles(filesWithId as unknown as File[]);\n\n acceptedFiles.forEach((file) => {\n const reader = new FileReader();\n\n reader.onload = () => {\n const binaryStr = reader.result;\n setFile({ content: binaryStr as ArrayBuffer, properties: file });\n };\n reader.readAsArrayBuffer(file);\n });\n },\n [myFiles]\n );\n\n const {\n getRootProps,\n getInputProps,\n open,\n isDragActive,\n isDragAccept,\n isDragReject,\n } = useDropzone({\n accept: formatFile as any,\n noClick: true,\n noKeyboard: true,\n multiple: multipleFile,\n onDrop,\n });\n\n return (\n <>\n {(multipleFile || myFiles?.length === 0) || !file ? (\n <Container\n {...getRootProps({ isDragActive, isDragAccept, isDragReject })}\n >\n <input {...getInputProps()} />\n\n <span>\n <p>\n {t.fileArea.modal.descriptionUpload}\n </p>\n </span>\n <button type=\"button\" onClick={open}>\n {t.fileArea.modal.chooseFile}\n </button>\n </Container>\n ) : (\n <Container\n {...getRootProps({ isDragActive, isDragAccept, isDragReject })}\n >\n <p>{file}</p>\n </Container>\n )}\n </>\n );\n};\n\nAreaUpload.propTypes = {\n formatFile: PropTypes.string,\n multipleFile: PropTypes.bool,\n initialFiles: PropTypes.arrayOf(PropTypes.object as any),\n removeItem: PropTypes.func,\n setFile: PropTypes.func,\n onChange: PropTypes.func,\n hasListFiles: PropTypes.bool,\n};\n\nAreaUpload.defaultProps = {\n formatFile: 'application/json',\n multipleFile: false,\n initialFiles: [],\n removeItem: () => {},\n setFile: () => {},\n onChange: () => {},\n hasListFiles: true,\n};\n\nexport default AreaUpload;\n","import axios from 'axios';\n\nexport const API_TOKEN = 'API_TOKEN';\n\nconst url = 'https://api.leia.digitalcontact.cloud';\n\naxios.defaults.baseURL = `${url}`;\n\nexport default axios.create();","import React, { createContext, useContext, useEffect, useState } from 'react';\nimport api from '../service/Api';\n\ninterface Props {\n id: string;\n language: \"en\" | \"pt-br\" | \"es\";\n propTags: { tags: [] }\n personas: [{ name: string, description: string }];\n token: string;\n children?: React.ReactNode;\n}\n\ninterface SharedPropsContextType {\n props: Props;\n}\n\nconst SharedPropsContext = createContext<SharedPropsContextType | undefined>(undefined);\n\nexport const useSharedProps = () => {\n const context = useContext(SharedPropsContext);\n if (!context) {\n throw new Error('useSharedProps deve ser usado dentro de um SharedPropsProvider');\n }\n return context.props;\n};\n\nexport const SharedPropsProvider: React.FC<Props> = ({ children, ...props }) => {\n const { id, language } = props;\n const [tags, setTags] = useState<any>(null);\n const [personas, setPersonas] = useState<any>(null);\n\n useEffect(() => {\n const fetchData = async () => {\n try {\n const { data } = await api.get(`/tags/${id}`);\n\n if (data) {\n setTags(data);\n } else {\n console.error('Erro ao fazer a solicitação');\n }\n } catch (error) {\n console.error('Erro ao fazer a solicitação:', error);\n }\n };\n\n const personas = async () => {\n try {\n const { data } = await api.get(`/personas?language=${language}`);\n\n if (data) {\n setPersonas(data);\n } else {\n console.error('Erro ao fazer a solicitação');\n }\n } catch (error) {\n console.error('Erro ao fazer a solicitação:', error);\n }\n };\n\n fetchData();\n personas();\n }, [id]);\n\n const sharedProps = {\n ...props,\n propTags: tags,\n personas,\n };\n\n return (\n <SharedPropsContext.Provider value={{ props: sharedProps }}>\n {children}\n </SharedPropsContext.Provider>\n );\n};\n","import types from './types'\n\nexport const getFilesAction = (id: string, token: string) => {\n return {\n type: types.GET_FILES_REQUEST,\n payload: { id, token }\n }\n}\n\nexport const getFilesActionSuccess = ({ files }: any) => {\n return {\n type: types.GET_FILES_SUCCESS,\n payload: { files }\n }\n}\n\nexport const deleteFilesAction = (name: string, id: string, language: string, token: string) => {\n return {\n type: types.DELETE_FILES_REQUEST,\n payload: { name, id, language, token }\n }\n}\n\nexport const deleteFilesActionSuccess = ({ files }: any) => {\n return {\n type: types.DELETE_FILES_SUCCESS,\n payload: { files }\n }\n}\n\nexport const uploadFilesAction = (file: any, id: string, pressets: string[], language: string, token: string) => {\n return {\n type: types.UPLOAD_FILES_REQUEST,\n payload: { file, id, pressets, language, token }\n }\n}\n\nexport const uploadFilesActionSuccess = ({ files }: any) => {\n return {\n type: types.UPLOAD_FILES_SUCCESS,\n payload: { files }\n }\n}\n\nexport const trainingAction = (id: string, pressets: string[], language: string, token: string) => {\n return {\n type: types.TRAINING_REQUEST,\n payload: { id, pressets, language, token }\n }\n}\n\nexport const testAction = (question: string, profile: string, presset: string, files_directory: string, token: string) => {\n return {\n type: types.TEST_REQUEST,\n payload: { question, profile, presset, files_directory, token }\n }\n}\n\nexport const testActionSuccess = ({ message }: any) => {\n return {\n type: types.TEST_SUCCESS,\n payload: { message }\n }\n}\n\nexport const commonLoadingStart = () => ({\n type: types.LOADING_START,\n });\n \n export const commonLoadingFinish = () => ({\n type: types.LOADING_FINISH,\n });\n \n export const commonChangingStart = () => ({\n type: types.CHANGING_START,\n });\n \n export const commonChangingFinish = () => ({\n type: types.CHANGING_FINISH,\n });\n \n export const commonNetworkOnline = () => ({\n type: types.NETWORK_ONLINE,\n });\n \n export const commonNetworkOffline = () => ({\n type: types.NETWORK_OFFLINE,\n });","const Types = {\n GET_FILES_REQUEST: 'GET_FILES_REQUEST',\n GET_FILES_SUCCESS: 'GET_FILES_SUCCESS',\n DELETE_FILES_REQUEST: 'DELETE_FILES_REQUEST',\n DELETE_FILES_SUCCESS: 'DELETE_FILES_SUCCESS',\n UPLOAD_FILES_REQUEST: 'UPLOAD_FILES_REQUEST',\n UPLOAD_FILES_SUCCESS: 'UPLOAD_FILES_SUCCESS',\n TRAINING_REQUEST: 'TRAINING_REQUEST',\n TEST_REQUEST: 'TEST_REQUEST',\n TEST_SUCCESS: 'TEST_SUCCESS',\n LOADING_START: 'LOADING_START',\n LOADING_FINISH: 'LOADING_FINISH',\n CHANGING_START: 'CHANGING_START',\n CHANGING_FINISH: 'CHANGING_FINISH',\n NETWORK_ONLINE: 'NETWORK_ONLINE',\n NETWORK_OFFLINE: 'NETWORK_OFFLINE',\n};\n\nexport default Types;\n","import React, { useEffect, useState} from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { renderToString } from 'react-dom/server';\n\nimport { FaUpload, FaList, FaCheck, FaFile } from 'react-icons/fa';\nimport { GiWeightLiftingUp } from \"react-icons/gi\";\nimport { TiDelete } from \"react-icons/ti\";\n\nimport type { FileData, tag } from '../../interface/FileData'\n\nimport { getLanguage } from '../../utils/getLanguage'\n\nimport * as S from './styles';\nimport Table from './components/Table';\nimport Search from './components/Search';\nimport Modal from './components/Modal'\nimport ModalFooter from './components/Modal/ModalFooter'\nimport ModalContent from './components/Modal/ModalContent'\nimport EmptyState from '../EmptyState';\nimport MultiSelect from '../MultiSelect';\nimport AreaUpload from './components/AreaUpload';\nimport { SharedPropsProvider, useSharedProps } from '../../contexts/SharedPropsProvider';\nimport { deleteFilesAction, getFilesAction, uploadFilesAction, trainingAction } from '../../store/modules/actions';\n\nexport const FileArea = () => {\n const { id, language, propTags, token } = useSharedProps();\n const [files, setFiles] = useState<FileData[]>([]);\n const [initialFiles, setInitialFiles] = useState<FileData[]>([]);\n const [uploadFile, setUploadFile] = useState<{ content: ArrayBuffer | string; properties: File }>();\n const [modal, setModal] = useState(false)\n const [modalDelete, setModalDelete] = useState(false)\n const [modalTraining, setModalTraining] = useState(false)\n const [fileDelete, setFileDelete] = useState('')\n const [optionsPresset, setOptionsPresset] = useState<{ label: any; value: any; }[]>([])\n const [presset, setPresset] = useState<string[]>([]);\n const t = getLanguage(language)\n const dispatch = useDispatch();\n const initFiles = useSelector((state: any) => state.files);\n const isloading = useSelector((state: any) => state.isloading);\n const tags = propTags ? propTags.tags : [];\n\n useEffect(() => {\n dispatch(getFilesAction(id, token))\n }, [id])\n\n useEffect(() => {\n if(tags.length > 0){\n const options = tags.map((tag: any) => {\n return { label: tag, value: tag }\n })\n setOptionsPresset(options)\n }else if(optionsPresset.length > 0){\n setOptionsPresset([])\n }\n \n }, [tags])\n\n useEffect(() => {\n if(!modal){\n const options = tags.map((tag: any) => {\n return { label: tag, value: tag }\n })\n setOptionsPresset(options)\n }\n }, [modal])\n\n useEffect(() => {\n if(!!initFiles){\n setFiles(initFiles)\n setInitialFiles(initFiles)\n }\n }, [initFiles])\n\n const pressetTag = (tags: [tag]) => {\n let html = '';\n \n html += tags.map(tag => {\n const checkIcon = tag.trained ? '' : renderToString(<TiDelete size={14} />);\n const tagClass = tag.trained ? 'trained' : '';\n return `<p class='tag ${tagClass}'>${tag.name} ${checkIcon}</p>`;\n }).join('');\n \n return html;\n }\n\n const handleOpenModal = () => {\n if(modal){\n setUploadFile(undefined)\n setPresset([])\n }\n setModal(!modal)\n }\n\n const handleOpenModalDelete = (name: string) => {\n setFileDelete(name)\n setModalDelete(!modalDelete)\n }\n\n const handleOpenModalTraining = (tags?: [tag]) => {\n let pressets: string[] = [] \n tags?.map((tag) => {\n if(!tag.trained){\n pressets.push(tag.name)\n }\n })\n setPresset(pressets)\n setModalTraining(!modalTraining)\n }\n\n const deleteFile = () => {\n dispatch(deleteFilesAction(fileDelete, id, language, token))\n setModalDelete(false)\n }\n\n const handleUploadFile = () => {\n dispatch(uploadFilesAction(uploadFile, id, presset, language, token))\n setModal(false)\n setUploadFile(undefined)\n setPresset([])\n };\n\n const handleTrain = () => {\n dispatch(trainingAction(id, presset, language, token))\n setModalTraining(false)\n setPresset([])\n };\n\n const viewFile = (link: string, name: string) => {\n if(link){\n const checkIcon = renderToString(<FaFile size={14} />);\n return `<a href='${link}' target='_blank'>${checkIcon}</a> ${name}`;\n }\n return name\n };\n\n const renderFiles = () => { \n return (\n <S.Container isloading={isloading}>\n <div id='loading' />\n <S.Header>\n <div className='infos'>\n <h2>{t.files}</h2>\n <p>{t.fileArea.description}</p>\n </div>\n <div className='actions'>\n <Search placeholder={t.fileArea.search} setFiles={setFiles} initialFiles={initialFiles}></Search>\n <div> \n <button id='button-upload' onClick={handleOpenModal}><FaUpload size={14} /> {t.fileArea.fileUpload}</button>\n <button onClick={() => handleOpenModalTraining(undefined)}><GiWeightLiftingUp size={14} /> {t.fileArea.training}</button>\n </div>\n </div>\n </S.Header>\n {\n files.length === 0 ? (\n <EmptyState\n icon={<FaList></FaList>}\n title={t.fileArea.emptyState.title}\n description={t.fileArea.emptyState.description}\n iconButton={<button id='button-upload' onClick={handleOpenModal}><FaUpload size={14} /> {t.fileArea.fileUpload}</button>}\n descriptionButton={t.fileArea.fileUpload}\n widthButton=\"230px\"\n />\n ) : <Table>\n <thead>\n <tr>\n <th key=\"th_file_name\" className=\"th_file_name\">\n {t.fileArea.fileName}\n </th>\n <th key=\"th_file_name\" className=\"th_status\">\n {t.fileArea.status}\n </th>\n <th key=\"th_pressets\" className=\"th_pressets\">\n {t.fileArea.presset}\n </th>\n <th key=\"th_actions\" className=\"th_actions\">\n {t.fileArea.actions}\n </th>\n </tr>\n </thead>\n\n <tbody>\n {files.map((object) => (\n <tr>\n <td dangerouslySetInnerHTML={{ __html: viewFile(object.link, object.name) }} />\n <td>{object.trained ? <FaCheck size={14} style={{ color: 'green' }} /> : <TiDelete size={14} style={{ color: 'red' }} />}</td>\n <td className='tags' dangerouslySetInnerHTML={{ __html: pressetTag(object.tags) }} />\n <td>\n <div className='divDelete'>\n <button className='buttonTraining' onClick={() => handleOpenModalTraining(object.tags)}>{t.buttons.training}</button>\n <button className='buttonDelete' onClick={() => handleOpenModalDelete(object.name)}>{t.buttons.delete}</button>\n </div>\n </td>\n </tr>\n ))}\n </tbody>\n </Table>\n }\n <Modal\n isopen={modal}\n maxwidth=\"600px\"\n maxheight=\"max-content\"\n onClose={handleOpenModal}\n title={t.fileArea.modal.uploadFile}\n >\n <ModalContent>\n <div className='choose-file'>\n <AreaUpload\n setFile={setUploadFile}\n file={uploadFile?.properties.name}\n />\n </div>\n <div className='presset'>\n <p>{t.fileArea.presset}</p>\n <MultiSelect setOptions={setOptionsPresset} options={optionsPresset} presset={presset} setPresset={setPresset} modal={modal} language={language} hasAddNewOptions={true} />\n </div> \n </ModalContent>\n <ModalFooter>\n <button className='button cancel' onClick={handleOpenModal}>\n {t.buttons.cancel}\n </button>\n <button onClick={() => handleUploadFile()} className='button send' type=\"submit\" form=\"form-tts\">\n {t.buttons.send}\n </button>\n </ModalFooter>\n \n </Modal>\n <Modal\n isopen={modalDelete}\n maxwidth=\"600px\"\n maxheight=\"max-content\"\n onClose={() => handleOpenModalDelete('')}\n title={t.fileArea.modal.deleteFileTitle}\n >\n <ModalContent>\n <p id='warning'>{t.fileArea.modal.deleteFile}</p>\n </ModalContent>\n <ModalFooter>\n <button className='button cancel' onClick={() => handleOpenModalDelete('')}>\n {t.buttons.cancel}\n </button>\n <button className='button delete' type=\"submit\" form=\"form-tts\" onClick={deleteFile}>\n {t.buttons.delete}\n </button>\n </ModalFooter>\n </Modal>\n <Modal\n isopen={modalTraining}\n maxwidth=\"600px\"\n maxheight=\"max-content\"\n onClose={() => handleOpenModalTraining(undefined)}\n title={t.fileArea.modal.trainingTitle}\n >\n <ModalContent>\n <p id='info'>{t.fileArea.modal.trainingDescription}</p>\n <div className='presset'>\n <p>{t.fileArea.presset}</p>\n <MultiSelect setOptions={setOptionsPresset} options={optionsPresset} presset={presset} setPresset={setPresset} modal={modal} language={language} hasAddNewOptions={false} />\n </div>\n </ModalContent>\n <ModalFooter>\n <button className='button cancel' onClick={() => handleOpenModalTraining(undefined)}>\n {t.buttons.cancel}\n </button>\n <button onClick={() => handleTrain()} className='button send' type=\"submit\" form=\"form-tts\">\n {t.buttons.send}\n </button>\n </ModalFooter>\n \n </Modal>\n </S.Container>\n );\n }\n\n return (\n <SharedPropsProvider id={id} language={language} token={token} propTags={{ tags: [] }} personas={[{name: '', description: ''}]}>\n <S.Container>\n {renderFiles()}\n </S.Container>\n </SharedPropsProvider>\n );\n};\n","import styled, { css } from 'styled-components';\n\ninterface ContainerProps {\n isloading?: boolean;\n}\n\n\nexport const Container = styled.div<ContainerProps>`\n ${(props) =>\n props.isloading &&\n css`\n #loading {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgb(151,154,165, 0.7);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 9999;\n }\n\n #loading::after {\n content: \"\";\n border: 4px solid #f3f3f3; /* Cor do símbolo de carregamento */\n border-top: 4px solid #5a5d68; /* Cor do símbolo de carregamento */\n border-radius: 50%;\n width: 13px;\n height: 13px;\n animation: spin 1s linear infinite;\n }\n\n @keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n `}\n\n`;\n\nexport const Header = styled.div`\n display: flex;\n flex-direction: column;\n .infos {\n display: flex;\n flex-direction: column;\n padding: 14px 0;\n\n h2 {\n font-size: 20px\n }\n\n p {\n font-size: 14px\n }\n }\n`\n\nexport const Inputs = styled.div`\n display: flex;\n justify-content: space-between;\n margin-bottom: 10px;\n\n button {\n background: #102693;\n padding: 10px 20px;\n color: white;\n border-radius: 4px;\n width: 190px;\n height: 45px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n\n svg {\n width: 23px;\n height: 23px;\n }\n }\n`\n\nexport const Result = styled.div`\n display: flex;\n justify-content: left;\n background: #F3F5F9;\n padding: 15px;\n border-radius: 5px;\n margin-top: 15px;\n\n .text{\n margin-left: 5px;\n font-size: 14px;\n line-height: 1.5;\n }\n\n .icon {\n display: flex;\n justify-content: center;\n align-items: center;\n margin-right: 5px;\n\n svg {\n width: 35px;\n height: 35px;\n }\n }\n\n`","import styled from 'styled-components';\n\nexport const Container = styled.div`\n position: relative;\n width: 50%;\n margin-right: 5px;\n\n .custom-select {\n position: relative;\n width: 100%;\n cursor: pointer;\n\n .selected-option {\n padding: 12px;\n border-radius: 4px;\n border: 1px solid #979AA5;\n height: 45px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n font-size: 14px;\n }\n\n .options {\n position: absolute;\n top: 100%;\n left: 0;\n width: 100%;\n border: 1px solid #979AA5;\n border-top: none;\n border-radius: 0 0 4px 4px;\n background-color: #fff;\n\n .option {\n padding: 12px;\n cursor: pointer;\n transition: background-color 0.1s;\n letter-spacing: 0.5px;\n font-size: 14px;\n\n &:hover {\n background-color: #6690ff;\n color: white;\n }\n }\n }\n }\n`;\n","import React, { useState } from 'react';\nimport * as S from './styles';\n\ninterface SelectOption {\n value: string | number;\n label: string;\n}\n\ninterface SelectProps {\n options: SelectOption[];\n onSelect: (value: string) => void;\n placeholder?: string;\n}\n\nconst CustomSelect: React.FC<SelectProps> = ({ options, onSelect, placeholder }) => {\n const [isOpen, setIsOpen] = useState(false);\n const [selectedValue, setSelectedValue] = useState<string | number>('');\n\n const handleSelectOption = (value: string | number) => {\n const selected = String(value);\n setSelectedValue(selected);\n onSelect(selected);\n setIsOpen(false);\n };\n\n return (\n <S.Container>\n <div className=\"custom-select\" onClick={() => setIsOpen(!isOpen)}>\n <div className=\"selected-option\">\n {selectedValue || placeholder}\n <span className=\"arrow\">&#9660;</span>\n </div>\n {isOpen && (\n <div className=\"options\">\n {options.map(option => (\n <div\n key={option.value}\n style={{ background: option.value === selectedValue ? '#a0b7f5' : undefined,\n color: option.value === selectedValue ? 'white' : undefined }}\n className=\"option\"\n onClick={() => handleSelectOption(option.value)}\n >\n {option.label}\n </div>\n ))}\n </div>\n )}\n </div>\n </S.Container>\n );\n};\n\nexport default CustomSelect;\n","import styled from 'styled-components';\n\nexport const Container = styled.div`\n position: relative;\n width: 100%;\n margin-right: 5px;\n`;\n\nexport const StyledInput = styled.input`\n padding-left: 10px;\n padding-right: 40px;\n border-radius: 5px;\n border: 1px solid #ccc;\n height: 45px;\n width: 100%;\n\n &:focus {\n outline: none;\n box-shadow: 0 0 0 3px #6690ff;\n }\n`;\n\nexport const RecordAudioButton = styled.div`\n position: absolute;\n top: 14px;\n right: 10px;\n cursor: pointer;\n`;\n","import React from 'react';\nimport * as S from './styles';\n\ninterface InputTestProps {\n placeholder: string;\n onChange: (value: string) => void;\n}\n\nconst InputTest: React.FC<InputTestProps> = ({ placeholder, onChange }) => {\n return (\n <S.Container>\n <S.StyledInput\n type=\"text\"\n onChange={(e: any) => onChange(e.target.value)}\n placeholder={placeholder}\n />\n </S.Container>\n );\n};\n\nexport default InputTest;\n","import React, { useState } from 'react';\nimport { getLanguage } from '../../utils/getLanguage'\nimport * as S from './styles';\nimport Select from '../Select'\nimport InputTest from './components/InputTest'\nimport { PiWaveformBold } from 'react-icons/pi';\nimport { FaList } from 'react-icons/fa';\nimport EmptyState from '../EmptyState';\nimport { SharedPropsProvider, useSharedProps } from '../../contexts/SharedPropsProvider';\nimport { MdPerson2 } from \"react-icons/md\";\nimport { useDispatch, useSelector } from 'react-redux';\nimport { testAction } from '../../store/modules/actions';\n\nexport const TestArea = () => {\n const { id, language, personas, propTags, token } = useSharedProps();\n const t = getLanguage(language)\n const results = useSelector((state: any) => state.message);\n const isloading = useSelector((state: any) => state.isloading);\n const [search, setSearch] = useState('');\n const [profile, setProfile] = useState('');\n const [presset, setPresset] = useState('');\n const dispatch = useDispatch();\n const tags = propTags ? propTags.tags : [];\n\n\n const optionsPersona = personas && personas.map(persona => {\n return { label: persona.name, value: persona.name }\n })\n\n const optionsPresset = tags.map(tag => {\n return { label: tag, value: tag }\n })\n\n const handleSelectPersona = (value: string) => {\n setProfile(value);\n };\n\n const handleSelectPresset = (value: string) => {\n setPresset(value);\n };\n\n const handleSearch = (value: string) => {\n setSearch(value);\n };\n\n const handleTest = () => {\n dispatch(testAction(search, profile, presset, id, token))\n };\n\n const returnTest = () => { \n return (\n <S.Container isloading={isloading}>\n <div id='loading' />\n <S.Header>\n <div className='infos'>\n <h2>{t.test}</h2>\n <p>{t.testArea.description}</p>\n </div>\n </S.Header>\n <S.Inputs>\n <InputTest placeholder={t.testArea.typeSentence} onChange={handleSearch} />\n <Select placeholder={t.testArea.selectPersona} options={optionsPersona} onSelect={handleSelectPersona} />\n <Select placeholder={t.testArea.selectPresset} options={optionsPresset} onSelect={handleSelectPresset} />\n <button onClick={handleTest}><PiWaveformBold /> {t.buttons.test}</button>\n </S.Inputs>\n {\n !results ? (\n <EmptyState\n icon={<FaList></FaList>}\n title={t.testArea.emptyState.title}\n description={t.testArea.emptyState.description}\n activeButton={false}\n />\n ) : <S.Result>\n <div className='icon'>\n <MdPerson2 />\n </div>\n <div className='text'>{results}</div>\n </S.Result>\n }\n </S.Container>\n )\n }\n\n return (\n <SharedPropsProvider id={id} token={token} language={language} propTags={{ tags: [] }} personas={[{name: '', description: ''}]}>\n <S.Container>\n {returnTest()}\n </S.Container>\n </SharedPropsProvider>\n );\n};","import React, { useMemo, Suspense } from 'react';\nimport { Route, useLocation, useRouteMatch, useHistory, Switch as SwitchRoute } from 'react-router-dom';\n\n\nimport type { Props } from './index';\nimport { Tab, Tabs } from './components/Tabs'\nimport { getLanguage } from './utils/getLanguage'\nimport { FileArea } from './components/FileArea';\nimport { TestArea } from './components/TestArea';\n\nimport { SharedPropsProvider } from './contexts/SharedPropsProvider';\n\nexport const Leia = (props: Props) => {\n const match = useRouteMatch();\n const { pathname } = useLocation();\n const history = useHistory();\n\n const t = getLanguage(props.language)\n\n const activeTab = useMemo(() => {\n return pathname.split('/')[5] || 'files';\n }, [pathname]);\n\n return (\n <SharedPropsProvider propTags={{ tags: [] }} personas={[{name: '', description: ''}]} {...props}>\n <>\n <Tabs\n value={activeTab}\n onChange={(value) => history.push(`${match.url}/${value}`)}\n >\n <Tab value=\"files\">{t.files}</Tab>\n <Tab value=\"test\">{t.test}</Tab>\n </Tabs>\n <Suspense fallback={props.loading}>\n <SwitchRoute>\n <Route path={`${match.path}`} exact component={FileArea} />\n <Route path={`${match.path}/files`} component={FileArea} />\n <Route path={`${match.path}/test`} component={TestArea} />\n </SwitchRoute>\n </Suspense>\n </>\n </SharedPropsProvider>\n );\n};\n","import { produce } from 'immer';\nimport types from './types'\n\nconst INITIAL_STATE = {\n files: [],\n message: '',\n isloading: false,\n isChanging: false,\n isOffline: true,\n}\n\nexport default function filesReducer(state = INITIAL_STATE, action: any) {\n return produce(state, (draft) => {\n switch (action.type) {\n case types.GET_FILES_SUCCESS:\n draft.files = action.payload.files;\n break;\n case types.DELETE_FILES_SUCCESS:\n draft.files = action.payload.files;\n break;\n case types.TEST_SUCCESS:\n draft.message = action.payload.message;\n break;\n case types.LOADING_START:\n draft.isloading = true;\n break;\n case types.LOADING_FINISH:\n draft.isloading = false;\n break;\n case types.CHANGING_START:\n draft.isChanging = true;\n break;\n case types.CHANGING_FINISH:\n draft.isChanging = false;\n break;\n case types.NETWORK_ONLINE:\n draft.isOffline = false;\n break;\n case types.NETWORK_OFFLINE:\n draft.isOffline = true;\n break;\n default:\n return action.payload;\n }\n });\n}\n","import React from 'react';\nimport { toast as reactToast } from 'react-toastify';\n\nimport { CustomContainerToast } from './styles';\n\ninterface CustomToastContentProps {\n title: String;\n description?: String;\n}\n\nconst CustomToastContent: React.FC<CustomToastContentProps> = ({\n title,\n description\n}) => {\n return (\n <>\n <div className=\"custom-toastify-content\">\n <strong className=\"custom-toastify-title\">{title}</strong>\n {description && (\n <p className=\"custom-toastify-description\">{description}</p>\n )}\n </div>\n </>\n );\n};\n\nconst toast = {\n default: ({ title, description }: CustomToastContentProps) =>\n reactToast(\n <CustomToastContent\n title={title}\n description={description}\n />\n ),\n success: ({ title, description }: CustomToastContentProps) =>\n reactToast.success(\n <CustomToastContent\n title={title}\n description={description}\n />\n ),\n error: ({ title, description }: CustomToastContentProps) =>\n reactToast.error(\n <CustomToastContent\n title={title}\n description={description}\n />\n ),\n warn: ({ title, description }: CustomToastContentProps) =>\n reactToast.warn(\n <CustomToastContent\n title={title}\n description={description}\n />\n ),\n};\n\nconst ContainerToast: React.FC = () => {\n return <CustomContainerToast autoClose={4000} />;\n};\n\nexport { ContainerToast, toast };\n","import { takeLatest, all, put, call } from 'redux-saga/effects';\nimport api from '../../service/Api'\nimport Types from './types'\nimport { getFilesActionSuccess, \n deleteFilesActionSuccess, \n testActionSuccess, \n uploadFilesActionSuccess, \n commonLoadingStart,\n commonLoadingFinish, } from './actions'\nimport { toast } from '../../components/CustomToast'\nimport { getLanguage } from '../../utils/getLanguage'\n\nexport function* getFilesSaga(action: any) {\n try {\n yield put(commonLoadingStart());\n const { id, token } = action.payload\n const { data } = yield call(api.get, `/training/${id}?token=${token}`);\n yield put(getFilesActionSuccess({ files: data.files}));\n } catch (error) {\n console.log('-----------getFiles.error------------------->', error);\n } finally {\n yield put(commonLoadingFinish());\n }\n}\n\nexport function* deleteFilesSaga(action: any) {\n const t = getLanguage(action.payload.language)\n try {\n yield put(commonLoadingStart());\n const { id, name, token } = action.payload\n\n yield call(api.delete, `/delete/${id}/${name}?token=${token}`);\n const { data } = yield call(api.get, `/training/${id}?token=${token}`);\n yield put(deleteFilesActionSuccess({ files: data.files, success: true }));\n } catch (error) {\n toast.error({title: t.toast.deleteFile.fail.title, description: t.toast.deleteFile.fail.description});\n console.log('-----------deleteFilesSaga.error------------------->', error);\n } finally {\n yield put(commonLoadingFinish());\n }\n}\n\nexport function* testSaga(action: any) {\n try {\n yield put(commonLoadingStart());\n const { question, profile, presset, files_directory, token } = action.payload\n const { data } = yield call(api.post, `/ask`, { question, profile, tag: presset, files_directory, token });\n yield put(testActionSuccess({ message: data.message }));\n } catch (error) {\n console.log('-----------testSaga.error------------------->', error);\n } finally {\n yield put(commonLoadingFinish());\n }\n}\n\nexport function* uploadFilesSaga(action: any) {\n const t = getLanguage(action.payload.language);\n try {\n yield put(commonLoadingStart());\n const { id, file, pressets, token } = action.payload;\n\n const blob = new Blob([file.content]);\n const formData = new FormData();\n const sanitizedPath = file.properties.path.replace(/^\\/+|\\/+$/g, '');\n formData.append('file', blob, sanitizedPath || 'default_filename');\n\n const queryParams = pressets.length\n ? new URLSearchParams({ tags: pressets.join(',') }).toString()\n : '';\n\n const url = queryParams\n ? `/upload/${id}?token=${token}&${queryParams}`\n : `/upload/${id}?token=${token}`;\n\n yield call(api.post, url, formData, {\n headers: {\n 'Content-Type': 'multipart/form-data',\n },\n });\n\n const { data } = yield call(api.get, `/training/${id}?token=${token}`);\n yield put(uploadFilesActionSuccess({ files: data.files }));\n } catch (error) {\n toast.error({\n title: t.toast.uploadFile.fail.title,\n description: t.toast.uploadFile.fail.description,\n });\n console.log('-----------uploadFilesSaga.error------------------->', error);\n } finally {\n yield put(commonLoadingFinish());\n }\n}\n\n\nexport function* TrainingSaga(action: any) {\n const t = getLanguage(action.payload.language)\n try {\n yield put(commonLoadingStart());\n const { id, pressets, token } = action.payload;\n const tag = pressets.join(',');\n\n const queryParams = new URLSearchParams({ tag }).toString();\n\n yield call(api.post, pressets.length > 0 ? `/training?${queryParams}` : `/training`,{ files_directory: id, token });\n\n const { data } = yield call(api.get, `/training/${id}?token=${token}`);\n yield put(uploadFilesActionSuccess({ files: data.files }));\n toast.success({title: t.toast.Train.success.title, description: t.toast.Train.success.description});\n } catch (error) {\n toast.error({title: t.toast.Train.fail.title, description: t.toast.Train.fail.description});\n console.log('-----------TrainingSaga.error------------------->', error);\n } finally {\n yield put(commonLoadingFinish());\n }\n}\n\nexport default function* filesSagas() {\n yield all([\n takeLatest(Types.GET_FILES_REQUEST, getFilesSaga),\n takeLatest(Types.DELETE_FILES_REQUEST, deleteFilesSaga),\n takeLatest(Types.UPLOAD_FILES_REQUEST, uploadFilesSaga),\n takeLatest(Types.TEST_REQUEST, testSaga),\n takeLatest(Types.TRAINING_REQUEST, TrainingSaga)\n ]);\n}\n","import { createStore, applyMiddleware } from 'redux';\nimport createSagaMiddleware from 'redux-saga';\nimport Reducer from './modules/reducer';\nimport Sagas from './modules/sagas';\n\nconst sagaMiddleware = createSagaMiddleware();\n\nconst store = createStore(Reducer, applyMiddleware(sagaMiddleware));\n\nsagaMiddleware.run(Sagas);\n\nexport default store;\n\n","import type { PropsWithChildren, ReactElement } from 'react';\nimport { Provider } from 'react-redux';\nimport React from 'react';\nimport { Leia } from './Leia';\nimport store from './store';\n\nexport type Props = PropsWithChildren<{\n id: string;\n activeTab: string;\n language: \"en\" | \"pt-br\" | \"es\";\n loading: ReactElement\n token: string;\n}>;\n\nexport function Code7(props: Props) {\n return <Provider store={store}>\n <Leia {...props} />\n </Provider>;\n}"],"names":["TabsPane","styled","ul","_templateObject","_taggedTemplateLiteralLoose","Tab","li","_templateObject2","_ref","active","children","rest","_objectWithoutPropertiesLoose","_excluded","React","S","className","cc","propTypes","PropTypes","oneOfType","string","element","node","isRequired","onChange","func","value","bool","defaultProps","Tabs","_ref2","childrenProp","_excluded2","Children","map","child","_child$props2","isValidElement","Array","isArray","_child$props","props","cloneElement","_child$props3","onClick","_child$props4","number","enTranslation","files","test","fileArea","description","fileName","status","presset","actions","search","fileUpload","training","emptyState","title","modal","descriptionUpload","chooseFile","uploadFile","deleteFileTitle","deleteFile","trainingTitle","trainingDescription","buttons","cancel","send","delete","addNewPresset","addPresset","testArea","typeSentence","selectPersona","selectPresset","toast","success","fail","Test","Train","ptTranslation","esTranslation","getLanguage","language","Container","div","isloading","css","Header","_templateObject3","TableWrapper","Table","table","TableLoadingWrapper","SpinnerWrapper","span","color","Spinner","_ref$size","size","_ref$color","forwardRef","ref","_ref$isloading","_ref$className","oneOf","InputContainer","Input","input","IconContainer","SearchInput","setFiles","initialFiles","type","e","searchTerm","target","trim","normalizedSearchTerm","unorm","nfkd","toLowerCase","newFiles","filter","file","name","includes","searchName","placeholder","FaSearch","FullScreen","isopen","isfixed","_ref3","zindex","Modal","_ref4","maxwidth","ModalContainer","_ref5","maxheight","ModalHeader","header","_templateObject4","ModalTitle","_templateObject5","ModalButtonClose","button","_templateObject6","ModalContentWrapper","_templateObject7","_ref6","overflowy","_ref7","ModalFooterWrapper","_templateObject8","ModalFooter","ModalContent","_ref$maxheight","_ref$overflowy","style","onClose","contentStyle","modalRef","useRef","handleKeyUp","useCallback","keys","27","preventDefault","window","removeEventListener","keyCode","handleOutsideClick","current","parentNode","document","useEffect","addEventListener","String","MdClose","objectOf","any","hasborder","backgroundcolor","backgroundicon","EmptyState","icon","activeButton","iconButton","descriptionButton","widthButton","backgroundIcon","backgroundColor","MultiSelectWrapper","SelectBox","OverSelect","Checkboxes","CheckboxLabel","label","SelectedValues","SelectedValue","MultiSelect","options","setPresset","setOptions","hasAddNewOptions","_useState","useState","expanded","setExpanded","_useState2","newOption","setNewOption","t","option","index","key","event","onKeyPress","trimmedOption","some","prevOptions","concat","prevPresset","display","htmlFor","id","checked","val","isDragAccept","isDragReject","isDragActive","getColor","AreaUpload","formatFile","_ref$formatFile","_ref$multipleFile","multipleFile","_ref$initialFiles","_ref$setFile","setFile","_ref$file","_ref$onChange","myFiles","setMyFiles","onDrop","acceptedFiles","fileRejections","length","console","error","filesWithId","item","lastModified","forEach","reader","FileReader","onload","content","result","properties","readAsArrayBuffer","_useDropzone","useDropzone","accept","noClick","noKeyboard","multiple","getRootProps","getInputProps","open","arrayOf","object","removeItem","hasListFiles","axios","defaults","baseURL","create","SharedPropsContext","createContext","undefined","useSharedProps","context","useContext","Error","SharedPropsProvider","tags","setTags","personas","setPersonas","fetchData","_asyncToGenerator","_regeneratorRuntime","mark","_callee","data","wrap","_context","prev","next","api","get","sent","t0","stop","apply","arguments","_callee2","_context2","sharedProps","_extends","propTags","Provider","uploadFilesActionSuccess","payload","FileArea","_useSharedProps","token","setInitialFiles","_useState3","setUploadFile","_useState4","setModal","_useState5","modalDelete","setModalDelete","_useState6","modalTraining","setModalTraining","_useState7","fileDelete","setFileDelete","_useState8","optionsPresset","setOptionsPresset","_useState9","dispatch","useDispatch","initFiles","useSelector","state","getFilesAction","tag","pressetTag","checkIcon","trained","renderToString","TiDelete","join","handleOpenModal","handleOpenModalDelete","handleOpenModalTraining","pressets","push","Search","FaUpload","GiWeightLiftingUp","FaList","dangerouslySetInnerHTML","__html","link","FaFile","FaCheck","uploadFilesAction","form","deleteFilesAction","trainingAction","Inputs","Result","CustomSelect","onSelect","isOpen","setIsOpen","selectedValue","setSelectedValue","background","selected","StyledInput","InputTest","TestArea","results","message","setSearch","profile","setProfile","optionsPersona","persona","Select","question","files_directory","testAction","PiWaveformBold","MdPerson2","Leia","match","useRouteMatch","pathname","useLocation","history","useHistory","activeTab","useMemo","split","url","Suspense","fallback","loading","SwitchRoute","Route","path","exact","component","INITIAL_STATE","isChanging","isOffline","filesReducer","action","produce","draft","CustomToastContent","reactToast","getFilesSaga","_marked2","deleteFilesSaga","_marked3","testSaga","_marked4","uploadFilesSaga","_marked5","TrainingSaga","_marked6","filesSagas","_action$payload","put","call","log","finish","_marked","_action$payload2","_action$payload3","_context3","post","_action$payload4","blob","formData","sanitizedPath","queryParams","_context4","Blob","FormData","replace","append","URLSearchParams","toString","headers","Content-Type","_action$payload5","_context5","_context6","all","takeLatest","sagaMiddleware","createSagaMiddleware","store","createStore","Reducer","applyMiddleware","run","Sagas"],"mappings":"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"}