code7-leia 0.1.112 → 0.1.113

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/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/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/Select/styles.tsx","../src/components/Select/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/components/FileArea/index.tsx","../src/store/modules/actions.ts","../src/store/modules/types.ts","../src/components/TestArea/styles.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/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","\nimport { Language } from '../interface/Language'\n\nconst defaultLanguage: Language = {\n files: 'Files',\n test: 'Test',\n fileArea: {\n description: 'bla bla bla bla bla',\n fileName: 'File name',\n presset: 'Presset',\n actions: 'Actions',\n search: 'Search',\n fileUpload: 'File upload',\n emptyState: {\n title: 'No data',\n description: 'bla bla bla bla bla',\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 },\n },\n buttons: {\n cancel: 'Cancel',\n send: 'Send',\n delete: 'Delete',\n test: 'Test',\n },\n testArea: {\n description: 'bla bla bla bla bla',\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};\n\nexport const getLanguage = (language: keyof Record<'en' | 'pt-br' | 'es', Language>): Language => {\n const languages = {\n en: defaultLanguage,\n 'pt-br': {\n files: 'Arquivos',\n test: 'Teste',\n fileArea: {\n ...defaultLanguage.fileArea,\n fileName: 'Nome do arquivo',\n presset: 'Presset',\n actions: 'Ações',\n search: 'Pesquisar',\n fileUpload: 'Upload de arquivo',\n emptyState: {\n ...defaultLanguage.fileArea.emptyState,\n title: 'Sem dados',\n },\n modal: {\n ...defaultLanguage.fileArea.modal,\n descriptionUpload: 'Arraste e solte os arquivos aqui ou',\n chooseFile: 'Escolha um arquivo',\n uploadFile: 'Enviar um arquivo',\n deleteFileTitle: 'Deletar um arquivo',\n deleteFile: 'Importante! Ao deletar esse arquivo você perderá todas as informações dele e não terá como recuperá-las.'\n },\n },\n buttons: {\n ...defaultLanguage.buttons,\n cancel: 'Cancelar',\n send: 'Enviar',\n delete: 'Excluir',\n test: 'Testar',\n },\n testArea: {\n ...defaultLanguage.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 ...defaultLanguage.testArea.emptyState,\n title: 'Sem dados para análise',\n description: 'Faça uma pesquisa, clique no botão \"Teste\".',\n },\n },\n },\n es: {\n ...defaultLanguage,\n files: 'Archivos',\n test: 'Prueba',\n fileArea: {\n ...defaultLanguage.fileArea,\n fileName: 'Nombre del archivo',\n presset: 'Presset',\n actions: 'Acciones',\n search: 'Buscar',\n fileUpload: 'Carga de archivos',\n emptyState: {\n ...defaultLanguage.fileArea.emptyState,\n title: 'Sin datos',\n },\n modal: {\n ...defaultLanguage.fileArea.modal,\n descriptionUpload: 'Arrastre y suelte los archivos aquí o',\n chooseFile: 'Elegir un archivo',\n deleteFileTitle: 'Eliminar un archivo',\n deleteFile: '¡Importante! Al borrar este archivo perderás toda la información contenida en él y no podrás recuperarla.'\n },\n },\n buttons: {\n ...defaultLanguage.buttons,\n cancel: 'Cancelar',\n send: 'Enviar',\n delete: 'Eliminar',\n test: 'Probar',\n },\n testArea: {\n ...defaultLanguage.testArea,\n description: 'bla bla bla bla bla',\n typeSentence: 'Escribe una oración',\n selectPersona: 'Seleccionar una Persona',\n selectPresset: 'Seleccionar una configuración preestablecida',\n emptyState: {\n ...defaultLanguage.testArea.emptyState,\n title: 'Sin datos para el análisis',\n description: 'Realiza una búsqueda, haz clic en el botón \"Prueba\".',\n },\n },\n },\n };\n\n return languages[language] || defaultLanguage;\n};\n","import styled from 'styled-components';\n\nexport const Container = styled.div`\n .tag {\n padding: 4px 8px 4px 8px;\n background: #C7F9ED;\n border-radius: 4px;\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: center;\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 .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\n #warning {\n padding: 10px;\n background: #FAE0D2;\n color: #871821;\n }\n`;\n\nexport const Header = styled.div`\n display: flex;\n flex-direction: column;\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 React from 'react';\nimport unorm from 'unorm';\nimport { FaSearch } from 'react-icons/fa';\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> = ({ placeholder, setFiles, 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\n return (\n <div style={{ position: 'relative', width: '300px' }}>\n <input\n type=\"text\"\n onChange={(e) => searchName(e)}\n placeholder={placeholder}\n style={{\n paddingLeft: '40px',\n borderRadius: '5px',\n border: '1px solid #ccc',\n height: '40px',\n width: '100%',\n }}\n />\n <div\n style={{\n position: 'absolute',\n top: '10px',\n left: '10px',\n pointerEvents: 'none', \n }}\n >\n <FaSearch />\n </div>\n </div>\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 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 & .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 {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 Container = styled.div`\n position: relative;\n width: 50%;\n margin-right: 5px;\n select {\n padding: 12px;\n border-radius: 4px;\n border: 1px solid #979AA5;\n width: 100%;\n height: 40px;\n \n &:focus {\n outline: none;\n box-shadow: 0 0 0 3px #6690ff;\n }\n\n option {\n background: white;\n font-size: 14px;\n color: #5a5d68;\n }\n\n option:checked, option:hover {\n background: #6690ff;\n font-size: 14px;\n color: white;\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 Select: React.FC<SelectProps> = ({ options, onSelect, placeholder }) => {\n const [selectedValue, setSelectedValue] = useState<string | number>('');\n\n const handleSelectChange = (event: React.ChangeEvent<HTMLSelectElement>) => {\n const selectedOption = event.target.value;\n setSelectedValue(selectedOption);\n onSelect(selectedOption);\n };\n\n return (\n <S.Container>\n <select value={selectedValue} onChange={handleSelectChange}>\n <option value=\"\" disabled hidden>\n {placeholder}\n </option>\n {options.map(option => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}\n </select>\n </S.Container>\n );\n};\n\nexport default Select;\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 ? (\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 = 'http://localhost:5000';\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 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 } = 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`);\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 React, { useEffect, useState} from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { FaUpload, FaList, FaPlus } from 'react-icons/fa';\n\nimport type { FileData } 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 Select from '../Select'\nimport AreaUpload from './components/AreaUpload';\nimport { SharedPropsProvider, useSharedProps } from '../../contexts/SharedPropsProvider';\nimport { deleteFilesAction, getFilesAction, uploadFilesAction } from '../../store/modules/actions';\n\nexport const FileArea = () => {\n const { id, language, propTags, personas } = 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 [fileDelete, setFileDelete] = useState('')\n const [presset, setPresset] = useState('');\n const t = getLanguage(language)\n const dispatch = useDispatch();\n const initFiles = useSelector((state: any) => state.files);\n const tags = propTags ? propTags.tags : [];\n\n useEffect(() => {\n dispatch(getFilesAction(id))\n }, [id])\n\n useEffect(() => {\n if(!!initFiles){\n setFiles(initFiles)\n setInitialFiles(initFiles)\n }\n }, [initFiles])\n\n const optionsPresset = tags.map((tag: any) => {\n return { label: tag, value: tag }\n })\n\n const pressetTag = (tags: string) => {\n const tagsSplit = tags.split(',');\n let html = '';\n\n html += tagsSplit.map(tag => {\n return `<p class='tag'>${tag}</p>`;\n }).join('');\n\n return html;\n }\n\n const handleOpenModal = () => {\n setModal(!modal)\n }\n\n const handleOpenModalDelete = (name: string) => {\n setFileDelete(name + '.pdf')\n setModalDelete(!modalDelete)\n\n }\n\n const deleteFile = () => {\n dispatch(deleteFilesAction(fileDelete, id))\n }\n\n const handleUploadFile = () => {\n dispatch(uploadFilesAction(uploadFile, id, [presset]))\n };\n\n const renderFiles = () => { \n return (\n <S.Container>\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 <button onClick={handleOpenModal}><FaUpload /> {t.fileArea.fileUpload}</button>\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 activeButton\n iconButton={<FaPlus style={{ width: '15px', height: '15px' }} />}\n descriptionButton={t.fileArea.modal.chooseFile}\n widthButton=\"230px\"\n />\n ) : <Table>\n <thead>\n <tr>\n <th className=\"th_file_name\">\n {t.fileArea.fileName}\n </th>\n <th className=\"th_pressets\">\n {t.fileArea.presset}\n </th>\n <th className=\"th_actions\">\n {t.fileArea.actions}\n </th>\n </tr>\n </thead>\n\n <tbody>\n {files.map((object) => (\n <tr>\n <td>{object.name}</td>\n <td className='tags' dangerouslySetInnerHTML={{ __html: pressetTag(object.tags) }} />\n <td>\n <div className='divDelete'>\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>Presset</p>\n <Select placeholder={t.testArea.selectPresset} options={optionsPresset} onSelect={setPresset} />\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 </S.Container>\n );\n }\n\n return (\n <SharedPropsProvider id={id} language={language} propTags={{ tags: [] }} personas={personas}>\n <S.Container>\n {renderFiles()}\n </S.Container>\n </SharedPropsProvider>\n );\n};\n","import types from './types'\n\nexport const getFilesAction = (id: string) => {\n return {\n type: types.GET_FILES_REQUEST,\n payload: { id }\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) => {\n return {\n type: types.DELETE_FILES_REQUEST,\n payload: { name, id }\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]) => {\n return {\n type: types.UPLOAD_FILES_REQUEST,\n payload: { file, id, pressets }\n }\n}\n\nexport const uploadFilesActionSuccess = ({ files }: any) => {\n return {\n type: types.UPLOAD_FILES_SUCCESS,\n payload: { files }\n }\n}\n\nexport const testAction = (question: string, profile: string, presset: string, files_directory: string) => {\n return {\n type: types.TEST_REQUEST,\n payload: { question, profile, presset, files_directory }\n }\n}\n\nexport const testActionSuccess = ({ message }: any) => {\n return {\n type: types.TEST_SUCCESS,\n payload: { message }\n }\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 TEST_REQUEST: 'TEST_REQUEST',\n TEST_SUCCESS: 'TEST_SUCCESS'\n};\n\nexport default Types;\n","import styled from 'styled-components';\n\nexport const Container = styled.div`\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: 40px;\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';\nimport { FaMicrophone } from 'react-icons/fa';\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: 40px;\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: 10px;\n right: 10px;\n cursor: pointer;\n`;\n\nexport const StyledMicrophoneIcon = styled(FaMicrophone)`\n pointer-events: none;\n`;\n","import React from 'react';\nimport * as S from './styles';\n\ninterface InputTestProps {\n placeholder: string;\n onChange: (value: string) => void;\n onRecordAudio: () => void;\n}\n\nconst InputTest: React.FC<InputTestProps> = ({ placeholder, onChange, onRecordAudio }) => {\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.RecordAudioButton onClick={onRecordAudio}>\n <S.StyledMicrophoneIcon />\n </S.RecordAudioButton>\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 } = useSharedProps();\n const t = getLanguage(language)\n const results = useSelector((state: any) => state.message);\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 const optionsPersona = 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 handleRecordAudio = () => {\n console.log('Iniciando gravação de áudio...');\n };\n\n const handleTest = () => {\n dispatch(testAction(search, profile, presset, id))\n };\n\n return (\n <SharedPropsProvider id={id} language={language} propTags={{ tags: [] }} personas={personas}>\n <S.Container>\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} onRecordAudio={handleRecordAudio} />\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 </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}\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 default:\n return action.payload;\n }\n });\n}\n","import { takeLatest, all, put, call } from 'redux-saga/effects';\nimport api from '../../service/Api'\nimport Types from './types'\nimport { getFilesActionSuccess, deleteFilesActionSuccess, testActionSuccess, uploadFilesActionSuccess } from './actions'\n\nexport function* getFilesSaga(action: any) {\n try {\n const { id } = action.payload\n const { data } = yield call(api.get, `/files/${id}`);\n yield put(getFilesActionSuccess({ files: data.files}));\n } catch (error) {\n console.log('-----------getFiles.error------------------->', error);\n }\n}\n\nexport function* deleteFilesSaga(action: any) {\n try {\n const { id, name } = action.payload\n yield call(api.delete, `/delete/${id}/${name}`);\n const { data } = yield call(api.get, `/files/${id}`);\n yield put(deleteFilesActionSuccess({ files: data.files }));\n } catch (error) {\n console.log('-----------deleteFilesSaga.error------------------->', error);\n }\n}\n\nexport function* testSaga(action: any) {\n try {\n const { question, profile, presset, files_directory } = action.payload\n const { data } = yield call(api.post, `/ask`, { question, profile, tag: presset, files_directory });\n yield put(testActionSuccess({ message: data.message }));\n } catch (error) {\n console.log('-----------testSaga.error------------------->', error);\n }\n}\n\nexport function* uploadFilesSaga(action: any) {\n try {\n const { id, file, pressets } = action.payload;\n const tags = pressets.join(',');\n \n const formData = new FormData();\n formData.append('file', new Blob([file.content]));\n\n const queryParams = new URLSearchParams({ tags }).toString();\n\n yield call(api.post, `/upload/${id}?${queryParams}`, formData, {\n headers: {\n 'Content-Type': 'multipart/form-data',\n },\n });\n\n const { data } = yield call(api.get, `/files/${id}`);\n yield put(uploadFilesActionSuccess({ files: data.files }));\n } catch (error) {\n console.log('-----------uploadFilesSaga.error------------------->', error);\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 ]);\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}>;\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","defaultLanguage","files","test","fileArea","description","fileName","presset","actions","search","fileUpload","emptyState","title","modal","descriptionUpload","chooseFile","uploadFile","deleteFileTitle","deleteFile","buttons","cancel","send","delete","testArea","typeSentence","selectPersona","selectPresset","getLanguage","language","en","pt-br","_extends","es","Container","div","Header","TableWrapper","Table","table","TableLoadingWrapper","_templateObject3","SpinnerWrapper","span","color","Spinner","_ref$size","size","_ref$color","forwardRef","ref","_ref$isLoading","isLoading","_ref$className","oneOf","SearchInput","setFiles","initialFiles","style","position","width","type","e","searchTerm","target","trim","normalizedSearchTerm","unorm","nfkd","toLowerCase","newFiles","filter","file","name","includes","searchName","placeholder","paddingLeft","borderRadius","border","height","top","left","pointerEvents","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","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","Select","options","onSelect","_useState","useState","setSelectedValue","event","selectedOption","disabled","hidden","option","key","label","isDragAccept","isDragReject","isDragActive","getColor","AreaUpload","formatFile","_ref$formatFile","_ref$multipleFile","multipleFile","_ref$initialFiles","_ref$setFile","setFile","_ref$file","_ref$onChange","myFiles","setMyFiles","t","concat","onDrop","acceptedFiles","fileRejections","length","console","error","filesWithId","item","index","id","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","_useState2","personas","setPersonas","fetchData","_asyncToGenerator","_regeneratorRuntime","mark","_callee","data","wrap","_context","prev","next","api","get","sent","t0","stop","apply","arguments","_callee2","_context2","sharedProps","propTags","Provider","FileArea","_useSharedProps","setInitialFiles","_useState3","setUploadFile","_useState4","setModal","_useState5","modalDelete","setModalDelete","_useState6","fileDelete","setFileDelete","_useState7","setPresset","dispatch","useDispatch","initFiles","useSelector","state","payload","getFilesAction","optionsPresset","tag","pressetTag","split","join","handleOpenModal","handleOpenModalDelete","Search","FaUpload","FaList","FaPlus","dangerouslySetInnerHTML","__html","pressets","uploadFilesAction","form","deleteFilesAction","Inputs","Result","StyledInput","input","RecordAudioButton","StyledMicrophoneIcon","FaMicrophone","InputTest","onRecordAudio","TestArea","results","message","setSearch","profile","setProfile","optionsPersona","persona","log","question","files_directory","testAction","PiWaveformBold","MdPerson2","Leia","match","useRouteMatch","pathname","useLocation","history","useHistory","activeTab","useMemo","push","url","Suspense","fallback","loading","SwitchRoute","Route","path","exact","component","INITIAL_STATE","filesReducer","action","produce","draft","getFilesSaga","_marked2","deleteFilesSaga","_marked3","testSaga","_marked4","uploadFilesSaga","_marked5","filesSagas","call","put","_marked","_action$payload","_action$payload2","_context3","post","_action$payload3","formData","queryParams","_context4","FormData","append","Blob","URLSearchParams","toString","headers","Content-Type","_context5","all","takeLatest","sagaMiddleware","createSagaMiddleware","store","createStore","Reducer","applyMiddleware","run","Sagas"],"mappings":"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"}
1
+ {"version":3,"file":"code7-leia.cjs.production.min.js","sources":["../src/components/Tabs/styles.tsx","../src/components/Tabs/index.tsx","../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/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/Select/styles.tsx","../src/components/Select/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/components/FileArea/index.tsx","../src/store/modules/actions.ts","../src/store/modules/types.ts","../src/components/TestArea/styles.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/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","\nimport { Language } from '../interface/Language'\n\nconst defaultLanguage: Language = {\n files: 'Files',\n test: 'Test',\n fileArea: {\n description: 'bla bla bla bla bla',\n fileName: 'File name',\n presset: 'Presset',\n actions: 'Actions',\n search: 'Search',\n fileUpload: 'File upload',\n emptyState: {\n title: 'No data',\n description: 'bla bla bla bla bla',\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 },\n },\n buttons: {\n cancel: 'Cancel',\n send: 'Send',\n delete: 'Delete',\n test: 'Test',\n },\n testArea: {\n description: 'bla bla bla bla bla',\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};\n\nexport const getLanguage = (language: keyof Record<'en' | 'pt-br' | 'es', Language>): Language => {\n const languages = {\n en: defaultLanguage,\n 'pt-br': {\n files: 'Arquivos',\n test: 'Teste',\n fileArea: {\n ...defaultLanguage.fileArea,\n fileName: 'Nome do arquivo',\n presset: 'Presset',\n actions: 'Ações',\n search: 'Pesquisar',\n fileUpload: 'Upload de arquivo',\n emptyState: {\n ...defaultLanguage.fileArea.emptyState,\n title: 'Sem dados',\n },\n modal: {\n ...defaultLanguage.fileArea.modal,\n descriptionUpload: 'Arraste e solte os arquivos aqui ou',\n chooseFile: 'Escolha um arquivo',\n uploadFile: 'Enviar um arquivo',\n deleteFileTitle: 'Deletar um arquivo',\n deleteFile: 'Importante! Ao deletar esse arquivo você perderá todas as informações dele e não terá como recuperá-las.'\n },\n },\n buttons: {\n ...defaultLanguage.buttons,\n cancel: 'Cancelar',\n send: 'Enviar',\n delete: 'Excluir',\n test: 'Testar',\n },\n testArea: {\n ...defaultLanguage.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 ...defaultLanguage.testArea.emptyState,\n title: 'Sem dados para análise',\n description: 'Faça uma pesquisa, clique no botão \"Teste\".',\n },\n },\n },\n es: {\n ...defaultLanguage,\n files: 'Archivos',\n test: 'Prueba',\n fileArea: {\n ...defaultLanguage.fileArea,\n fileName: 'Nombre del archivo',\n presset: 'Presset',\n actions: 'Acciones',\n search: 'Buscar',\n fileUpload: 'Carga de archivos',\n emptyState: {\n ...defaultLanguage.fileArea.emptyState,\n title: 'Sin datos',\n },\n modal: {\n ...defaultLanguage.fileArea.modal,\n descriptionUpload: 'Arrastre y suelte los archivos aquí o',\n chooseFile: 'Elegir un archivo',\n deleteFileTitle: 'Eliminar un archivo',\n deleteFile: '¡Importante! Al borrar este archivo perderás toda la información contenida en él y no podrás recuperarla.'\n },\n },\n buttons: {\n ...defaultLanguage.buttons,\n cancel: 'Cancelar',\n send: 'Enviar',\n delete: 'Eliminar',\n test: 'Probar',\n },\n testArea: {\n ...defaultLanguage.testArea,\n description: 'bla bla bla bla bla',\n typeSentence: 'Escribe una oración',\n selectPersona: 'Seleccionar una Persona',\n selectPresset: 'Seleccionar una configuración preestablecida',\n emptyState: {\n ...defaultLanguage.testArea.emptyState,\n title: 'Sin datos para el análisis',\n description: 'Realiza una búsqueda, haz clic en el botón \"Prueba\".',\n },\n },\n },\n };\n\n return languages[language] || defaultLanguage;\n};\n","import styled from 'styled-components';\n\nexport const Container = styled.div`\n .tag {\n padding: 4px 8px 4px 8px;\n background: #C7F9ED;\n border-radius: 4px;\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: center;\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 .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\n #warning {\n padding: 10px;\n background: #FAE0D2;\n color: #871821;\n }\n`;\n\nexport const Header = styled.div`\n display: flex;\n flex-direction: column;\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 React from 'react';\nimport unorm from 'unorm';\nimport { FaSearch } from 'react-icons/fa';\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> = ({ placeholder, setFiles, 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\n return (\n <div style={{ position: 'relative', width: '300px' }}>\n <input\n type=\"text\"\n onChange={(e) => searchName(e)}\n placeholder={placeholder}\n style={{\n paddingLeft: '40px',\n borderRadius: '5px',\n border: '1px solid #ccc',\n height: '40px',\n width: '100%',\n }}\n />\n <div\n style={{\n position: 'absolute',\n top: '10px',\n left: '10px',\n pointerEvents: 'none', \n }}\n >\n <FaSearch />\n </div>\n </div>\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 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 & .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 {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 Container = styled.div`\n position: relative;\n width: 50%;\n margin-right: 5px;\n select {\n padding: 12px;\n border-radius: 4px;\n border: 1px solid #979AA5;\n width: 100%;\n height: 40px;\n \n &:focus {\n outline: none;\n box-shadow: 0 0 0 3px #6690ff;\n }\n\n option {\n background: white;\n font-size: 14px;\n color: #5a5d68;\n }\n\n option:checked, option:hover {\n background: #6690ff;\n font-size: 14px;\n color: white;\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 Select: React.FC<SelectProps> = ({ options, onSelect, placeholder }) => {\n const [selectedValue, setSelectedValue] = useState<string | number>('');\n\n const handleSelectChange = (event: React.ChangeEvent<HTMLSelectElement>) => {\n const selectedOption = event.target.value;\n setSelectedValue(selectedOption);\n onSelect(selectedOption);\n };\n\n return (\n <S.Container>\n <select value={selectedValue} onChange={handleSelectChange}>\n <option value=\"\" disabled hidden>\n {placeholder}\n </option>\n {options.map(option => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}\n </select>\n </S.Container>\n );\n};\n\nexport default Select;\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 ? (\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 = 'http://localhost:5000';\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 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 } = 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`);\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 React, { useEffect, useState} from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { FaUpload, FaList, FaPlus } from 'react-icons/fa';\n\nimport type { FileData } 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 Select from '../Select'\nimport AreaUpload from './components/AreaUpload';\nimport { SharedPropsProvider, useSharedProps } from '../../contexts/SharedPropsProvider';\nimport { deleteFilesAction, getFilesAction, uploadFilesAction } from '../../store/modules/actions';\n\nexport const FileArea = () => {\n const { id, language, propTags, personas } = 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 [fileDelete, setFileDelete] = useState('')\n const [presset, setPresset] = useState('');\n const t = getLanguage(language)\n const dispatch = useDispatch();\n const initFiles = useSelector((state: any) => state.files);\n const tags = propTags ? propTags.tags : [];\n\n useEffect(() => {\n dispatch(getFilesAction(id))\n }, [id])\n\n useEffect(() => {\n if(!!initFiles){\n setFiles(initFiles)\n setInitialFiles(initFiles)\n }\n }, [initFiles])\n\n const optionsPresset = tags.map((tag: any) => {\n return { label: tag, value: tag }\n })\n\n const pressetTag = (tags: string) => {\n const tagsSplit = tags.split(',');\n let html = '';\n\n html += tagsSplit.map(tag => {\n return `<p class='tag'>${tag}</p>`;\n }).join('');\n\n return html;\n }\n\n const handleOpenModal = () => {\n setModal(!modal)\n }\n\n const handleOpenModalDelete = (name: string) => {\n setFileDelete(name + '.pdf')\n setModalDelete(!modalDelete)\n\n }\n\n const deleteFile = () => {\n dispatch(deleteFilesAction(fileDelete, id))\n }\n\n const handleUploadFile = () => {\n dispatch(uploadFilesAction(uploadFile, id, [presset]))\n };\n\n const renderFiles = () => { \n return (\n <S.Container>\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 <button onClick={handleOpenModal}><FaUpload /> {t.fileArea.fileUpload}</button>\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 activeButton\n iconButton={<FaPlus style={{ width: '15px', height: '15px' }} />}\n descriptionButton={t.fileArea.modal.chooseFile}\n widthButton=\"230px\"\n />\n ) : <Table>\n <thead>\n <tr>\n <th className=\"th_file_name\">\n {t.fileArea.fileName}\n </th>\n <th className=\"th_pressets\">\n {t.fileArea.presset}\n </th>\n <th className=\"th_actions\">\n {t.fileArea.actions}\n </th>\n </tr>\n </thead>\n\n <tbody>\n {files.map((object) => (\n <tr>\n <td>{object.name}</td>\n <td className='tags' dangerouslySetInnerHTML={{ __html: pressetTag(object.tags) }} />\n <td>\n <div className='divDelete'>\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>Presset</p>\n <Select placeholder={t.testArea.selectPresset} options={optionsPresset} onSelect={setPresset} />\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 </S.Container>\n );\n }\n\n return (\n <SharedPropsProvider id={id} language={language} propTags={{ tags: [] }} personas={personas}>\n <S.Container>\n {renderFiles()}\n </S.Container>\n </SharedPropsProvider>\n );\n};\n","import types from './types'\n\nexport const getFilesAction = (id: string) => {\n return {\n type: types.GET_FILES_REQUEST,\n payload: { id }\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) => {\n return {\n type: types.DELETE_FILES_REQUEST,\n payload: { name, id }\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]) => {\n return {\n type: types.UPLOAD_FILES_REQUEST,\n payload: { file, id, pressets }\n }\n}\n\nexport const uploadFilesActionSuccess = ({ files }: any) => {\n return {\n type: types.UPLOAD_FILES_SUCCESS,\n payload: { files }\n }\n}\n\nexport const testAction = (question: string, profile: string, presset: string, files_directory: string) => {\n return {\n type: types.TEST_REQUEST,\n payload: { question, profile, presset, files_directory }\n }\n}\n\nexport const testActionSuccess = ({ message }: any) => {\n return {\n type: types.TEST_SUCCESS,\n payload: { message }\n }\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 TEST_REQUEST: 'TEST_REQUEST',\n TEST_SUCCESS: 'TEST_SUCCESS'\n};\n\nexport default Types;\n","import styled from 'styled-components';\n\nexport const Container = styled.div`\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: 40px;\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';\nimport { FaMicrophone } from 'react-icons/fa';\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: 40px;\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: 10px;\n right: 10px;\n cursor: pointer;\n`;\n\nexport const StyledMicrophoneIcon = styled(FaMicrophone)`\n pointer-events: none;\n`;\n","import React from 'react';\nimport * as S from './styles';\n\ninterface InputTestProps {\n placeholder: string;\n onChange: (value: string) => void;\n onRecordAudio: () => void;\n}\n\nconst InputTest: React.FC<InputTestProps> = ({ placeholder, onChange, onRecordAudio }) => {\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.RecordAudioButton onClick={onRecordAudio}>\n <S.StyledMicrophoneIcon />\n </S.RecordAudioButton>\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 } = useSharedProps();\n const t = getLanguage(language)\n const results = useSelector((state: any) => state.message);\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 const optionsPersona = 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 handleRecordAudio = () => {\n console.log('Iniciando gravação de áudio...');\n };\n\n const handleTest = () => {\n dispatch(testAction(search, profile, presset, id))\n };\n\n return (\n <SharedPropsProvider id={id} language={language} propTags={{ tags: [] }} personas={personas}>\n <S.Container>\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} onRecordAudio={handleRecordAudio} />\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 </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}\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 default:\n return action.payload;\n }\n });\n}\n","import { takeLatest, all, put, call } from 'redux-saga/effects';\nimport api from '../../service/Api'\nimport Types from './types'\nimport { getFilesActionSuccess, deleteFilesActionSuccess, testActionSuccess, uploadFilesActionSuccess } from './actions'\n\nexport function* getFilesSaga(action: any) {\n try {\n const { id } = action.payload\n const { data } = yield call(api.get, `/files/${id}`);\n yield put(getFilesActionSuccess({ files: data.files}));\n } catch (error) {\n console.log('-----------getFiles.error------------------->', error);\n }\n}\n\nexport function* deleteFilesSaga(action: any) {\n try {\n const { id, name } = action.payload\n yield call(api.delete, `/delete/${id}/${name}`);\n const { data } = yield call(api.get, `/files/${id}`);\n yield put(deleteFilesActionSuccess({ files: data.files }));\n } catch (error) {\n console.log('-----------deleteFilesSaga.error------------------->', error);\n }\n}\n\nexport function* testSaga(action: any) {\n try {\n const { question, profile, presset, files_directory } = action.payload\n const { data } = yield call(api.post, `/ask`, { question, profile, tag: presset, files_directory });\n yield put(testActionSuccess({ message: data.message }));\n } catch (error) {\n console.log('-----------testSaga.error------------------->', error);\n }\n}\n\nexport function* uploadFilesSaga(action: any) {\n try {\n const { id, file, pressets } = action.payload;\n const tags = pressets.join(',');\n\n const blob = new Blob([file.content]);\n \n const formData = new FormData();\n formData.append('file', blob, file.properties.path);\n\n const queryParams = new URLSearchParams({ tags }).toString();\n\n yield call(api.post, `/upload/${id}?${queryParams}`, formData, {\n headers: {\n 'Content-Type': 'multipart/form-data',\n },\n });\n\n const { data } = yield call(api.get, `/files/${id}`);\n yield put(uploadFilesActionSuccess({ files: data.files }));\n } catch (error) {\n console.log('-----------uploadFilesSaga.error------------------->', error);\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 ]);\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}>;\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","defaultLanguage","files","test","fileArea","description","fileName","presset","actions","search","fileUpload","emptyState","title","modal","descriptionUpload","chooseFile","uploadFile","deleteFileTitle","deleteFile","buttons","cancel","send","delete","testArea","typeSentence","selectPersona","selectPresset","getLanguage","language","en","pt-br","_extends","es","Container","div","Header","TableWrapper","Table","table","TableLoadingWrapper","_templateObject3","SpinnerWrapper","span","color","Spinner","_ref$size","size","_ref$color","forwardRef","ref","_ref$isLoading","isLoading","_ref$className","oneOf","SearchInput","setFiles","initialFiles","style","position","width","type","e","searchTerm","target","trim","normalizedSearchTerm","unorm","nfkd","toLowerCase","newFiles","filter","file","name","includes","searchName","placeholder","paddingLeft","borderRadius","border","height","top","left","pointerEvents","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","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","Select","options","onSelect","_useState","useState","setSelectedValue","event","selectedOption","disabled","hidden","option","key","label","isDragAccept","isDragReject","isDragActive","getColor","AreaUpload","formatFile","_ref$formatFile","_ref$multipleFile","multipleFile","_ref$initialFiles","_ref$setFile","setFile","_ref$file","_ref$onChange","myFiles","setMyFiles","t","concat","onDrop","acceptedFiles","fileRejections","length","console","error","filesWithId","item","index","id","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","_useState2","personas","setPersonas","fetchData","_asyncToGenerator","_regeneratorRuntime","mark","_callee","data","wrap","_context","prev","next","api","get","sent","t0","stop","apply","arguments","_callee2","_context2","sharedProps","propTags","Provider","FileArea","_useSharedProps","setInitialFiles","_useState3","setUploadFile","_useState4","setModal","_useState5","modalDelete","setModalDelete","_useState6","fileDelete","setFileDelete","_useState7","setPresset","dispatch","useDispatch","initFiles","useSelector","state","payload","getFilesAction","optionsPresset","tag","pressetTag","split","join","handleOpenModal","handleOpenModalDelete","Search","FaUpload","FaList","FaPlus","dangerouslySetInnerHTML","__html","pressets","uploadFilesAction","form","deleteFilesAction","Inputs","Result","StyledInput","input","RecordAudioButton","StyledMicrophoneIcon","FaMicrophone","InputTest","onRecordAudio","TestArea","results","message","setSearch","profile","setProfile","optionsPersona","persona","log","question","files_directory","testAction","PiWaveformBold","MdPerson2","Leia","match","useRouteMatch","pathname","useLocation","history","useHistory","activeTab","useMemo","push","url","Suspense","fallback","loading","SwitchRoute","Route","path","exact","component","INITIAL_STATE","filesReducer","action","produce","draft","getFilesSaga","_marked2","deleteFilesSaga","_marked3","testSaga","_marked4","uploadFilesSaga","_marked5","filesSagas","call","put","_marked","_action$payload","_action$payload2","_context3","post","_action$payload3","blob","formData","queryParams","_context4","Blob","FormData","append","URLSearchParams","toString","headers","Content-Type","_context5","all","takeLatest","sagaMiddleware","createSagaMiddleware","store","createStore","Reducer","applyMiddleware","run","Sagas"],"mappings":"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"}
@@ -1641,46 +1641,47 @@ function testSaga(action) {
1641
1641
  }, _marked3, null, [[0, 10]]);
1642
1642
  }
1643
1643
  function uploadFilesSaga(action) {
1644
- var _action$payload3, id, file, pressets, tags, formData, queryParams, _yield$call4, data;
1644
+ var _action$payload3, id, file, pressets, tags, blob, formData, queryParams, _yield$call4, data;
1645
1645
  return _regeneratorRuntime().wrap(function uploadFilesSaga$(_context4) {
1646
1646
  while (1) switch (_context4.prev = _context4.next) {
1647
1647
  case 0:
1648
1648
  _context4.prev = 0;
1649
1649
  _action$payload3 = action.payload, id = _action$payload3.id, file = _action$payload3.file, pressets = _action$payload3.pressets;
1650
1650
  tags = pressets.join(',');
1651
+ blob = new Blob([file.content]);
1651
1652
  formData = new FormData();
1652
- formData.append('file', new Blob([file.content]));
1653
+ formData.append('file', blob, file.properties.path);
1653
1654
  queryParams = new URLSearchParams({
1654
1655
  tags: tags
1655
1656
  }).toString();
1656
- _context4.next = 8;
1657
+ _context4.next = 9;
1657
1658
  return call(api.post, "/upload/" + id + "?" + queryParams, formData, {
1658
1659
  headers: {
1659
1660
  'Content-Type': 'multipart/form-data'
1660
1661
  }
1661
1662
  });
1662
- case 8:
1663
- _context4.next = 10;
1663
+ case 9:
1664
+ _context4.next = 11;
1664
1665
  return call(api.get, "/files/" + id);
1665
- case 10:
1666
+ case 11:
1666
1667
  _yield$call4 = _context4.sent;
1667
1668
  data = _yield$call4.data;
1668
- _context4.next = 14;
1669
+ _context4.next = 15;
1669
1670
  return put(uploadFilesActionSuccess({
1670
1671
  files: data.files
1671
1672
  }));
1672
- case 14:
1673
- _context4.next = 19;
1673
+ case 15:
1674
+ _context4.next = 20;
1674
1675
  break;
1675
- case 16:
1676
- _context4.prev = 16;
1676
+ case 17:
1677
+ _context4.prev = 17;
1677
1678
  _context4.t0 = _context4["catch"](0);
1678
1679
  console.log('-----------uploadFilesSaga.error------------------->', _context4.t0);
1679
- case 19:
1680
+ case 20:
1680
1681
  case "end":
1681
1682
  return _context4.stop();
1682
1683
  }
1683
- }, _marked4, null, [[0, 16]]);
1684
+ }, _marked4, null, [[0, 17]]);
1684
1685
  }
1685
1686
  function filesSagas() {
1686
1687
  return _regeneratorRuntime().wrap(function filesSagas$(_context5) {