{"version":3,"sources":["assets/home/back-line-vector.png","assets/icon.png","assets/join-us/img.png","assets/about-us/img.png","assets/home/home-laptop.png","assets/home/sm-home-laptop.png","assets/home/home-back-1.png","assets/home/home-asset-2.png","assets/home/section-3-group-1.png","assets/home/section-3-group-2.png","assets/home/section-3-group-3.png","assets/classes/back.png","assets/video-list/back.png","assets/video-list/play.png","assets/video-detail/video-back.png","assets/layouts/public/sidenav-back-line.png","api/axios.ts","api/Rest.ts","api/clients-configuration/AppServiceConfig.ts","api/services/JoinUsService.ts","helpers/functions.ts","views/JoinUs.tsx","views/AboutUs.tsx","api/queries/subjects.ts","api/queries/levels.ts","api/queries/videos.ts","api/queries/academicSubjects.ts","components/Public/Home/SubjectsPanel.tsx","views/Home.tsx","views/Classes.tsx","components/Public/VideoList/VideoDisplay.tsx","views/VideoList.tsx","api/clients-configuration/YoutubeServiceConfig.ts","api/services/YoutubeService.ts","api/Service.ts","views/VideoDetail.tsx","routes/HomeRoutes.tsx","views/layouts/Public.tsx","routes/Router.tsx","App.tsx","serviceWorker.ts","index.tsx","assets/home/home-asset-3.png"],"names":["module","exports","getAxiosInstance","config","axios","create","Rest","entity","entityName","http","this","get","res","data","id","post","put","delete","params","baseURL","process","headers","allowedCodes","helpers","isAxiosError","object","err","isServerError","undefined","isClientError","code","response","status","GoTo","history","path","push","GoBack","goBack","axiosErrorHandling","error","callbacks","default","toString","indexOf","setFormErrorByResponse","form","getFieldsValue","Object","entries","forEach","entry","key","value","hasOwnProperty","errors","setFields","name","graphqlErrorHandling","graphQLErrors","e","console","log","validationRules","email","required","message","type","phone","validator","_","regex","matches","exec","substring","lastIndex","length","trim","Promise","resolve","reject","JoinUs","useForm","frmJoinUs","useState","isLoading","setIsLoading","sendMail","a","JoinUsService","sendPetition","422","notification","open","description","placement","resData","resetFields","className","initialValues","onFinish","values","then","layout","Item","label","rules","country","htmlType","size","loading","style","marginLeft","icon","faPaperPlane","src","img","alt","backLine","backDots","AboutUs","onClick","image","back","GET_SUBJECTS","gql","GET_SUBJECT_BY_ID","GET_LEVELS_WITH_AS_BY_SUBJECT","GET_VIDEOS_BY_ACADEMIC_SUBJECT","GET_VIDEO","GET_ACADEMIC_SUBJECT","SubjectsPanel","useQuery","subjectsQueries","subjects","spinning","tip","map","s","background","color","abbr","showIcon","Home","location","ScrollToSubjects","document","getElementById","scrollIntoView","behavior","block","useLayoutEffect","hash","addEventListener","readyState","md","section1BackLine","section1BackImage","laptop","smLaptop","section2Back","section2Image","section3Group1","section3Group2","section3Group3","Classes","match","subject_id","subject","setSubject","levels","setLevels","useLazyQuery","getSubject","subjectLoading","subjectData","levelsQueries","getLevels","levelsData","levelsLoading","levelsError","getVideoCount","as","aux","units","u","videos","useEffect","variables","faArrowLeft","align","display","justifyContent","l","lg","xl","sm","span","gutter","grades","g","grade_academic_subjects","academic_subjects","filter","xs","count","title","VideoDisplay","video","xxl","thumbnail","playIcon","backgroundColor","teacher","surname","unit","VideoList","academic_subject_id","academicSubject","setAcademicSubject","setVideos","AcademicSubjectsQueries","getAcademicSubject","isLoadingAs","asData","asError","VideosQueries","getVideos","isLoadingVideos","videosData","videosError","academic_subject","grade","level","v","interceptors","request","use","instanceConfig","assign","part","VideoDetail","video_id","setVideo","videoInfo","setVideoInfo","setGrade","videoNotFound","setVideoNotFound","getVideo","YoutubeService","items","getYoutubeVideo","snippet","frameBorder","HomeRoutes","exact","component","Header","Content","Footer","menuOptions","text","faBook","faChalkboardTeacher","faInfo","Public","drawer","setDrawer","selectedKey","setSelectedKey","OnDrawerClose","pathname","closable","logo","faTimes","onClose","visible","width","height","selectedKeys","o","sidenavBackLine","faBars","mode","Router","PublicLayout","App","onLoadListener","removeEventListener","Boolean","window","hostname","client","ApolloClient","uri","ReactDOM","render","navigator","serviceWorker","ready","registration","unregister","catch"],"mappings":"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","file":"static/js/main.498e8cf6.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/back-line-vector.faedb1db.png\";","module.exports = __webpack_public_path__ + \"static/media/icon.a8e65124.png\";","module.exports = __webpack_public_path__ + \"static/media/img.ca9922f3.png\";","module.exports = __webpack_public_path__ + \"static/media/img.58deeeeb.png\";","module.exports = __webpack_public_path__ + \"static/media/home-laptop.041fa379.png\";","module.exports = __webpack_public_path__ + \"static/media/sm-home-laptop.14d2507e.png\";","module.exports = __webpack_public_path__ + \"static/media/home-back-1.892a59da.png\";","module.exports = __webpack_public_path__ + \"static/media/home-asset-2.72ac7780.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFkAAABqCAYAAADX5f2sAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAgTSURBVHgB7Z3NTxtHFMDfGxsEPYC5VUpwTNpKvQVuvdWokEQKDcmtN8KpJahKOPYUuPVGoiox7QXzF4RIRUqCJTa33jD3NmxJK/UWk0MTYrzTeWucGGpgd2Z2d8bxTyIBafHHj/F8vDfzFsEy8rlCrqvm5TlCjn5mHMtvq1h2/plxwVAQLGHs7E95xPQd8YrzLS/g4FSrMG2ibCskX8wuLXLgt4NcK97Q/NOdmQUwiBQYzqXBwrLoGr4L8Sv5T/sn4I/dtWdgCEa35PHs0i3RD9wFCbi3P1r663sHDICBoeQ/LuQgYBfRCr//NgRjJXd1eXnxXw5kEQMkDZZgAMZK5pCaBFVYahgMIN38A/3lGXZNipHcf3EINAfl95KYFiGDjDCt9hiAF8AA3rVkmiYhS29wFP0gzUXFF33f1Q3bF7OF+Ps3znPQJviST5uHigY1n4joNoF9NfjgWpCJfke0PAyBTQW9uCNaDhQT/k04GOgC/1JES1d/4GXpLzmvjwmgjsvBWwHPc5JcmAjJhW2QmI/qEp3PLGe6+97c8kSXJWYDGYgOFzmuJjFbwrHBpYeI/BpIoCo6n1vMdHs9m1xl0SEDh6KI2C3EJZv5HydJVPtox52rMAaj4o/lQpwg3IhzauoHiMbPLW2IeWkeJFFt0ZdFIN7zYCP2Fl3Hrb6F0ShbtT9PruLr60JVGSRRbdGP3Rk3kRZdJ0et+lL2gXQw6jR8yfSxrbLXox+waPAAF6PqPg7Fk2kg6vJ6N8JO6Y48oM1dh2h1fO7Jzk2pGPZx/C9o3xGtP+DfMjPSEQ0VMRiO6BoMj00/mSRa9JcVIbuM4G0h5xXOmXvoedDL+VsEMHVBDA45VHjN7xDZ7/UXM6OggRNzfCaIloH+OPsev8YAb6l8EnR1G6cmUnV8bJNM049lC/Pi+WVnDe76zswQKBIoW2276PHc/WHu4YZMbERHaw6U49Mxh00yTLruzpaRcan+VUfWO3AitR1Ei+cP/0kSIVeKFIICobLVtosu7czMiyxQBULCBmr9oEDoLQG2ixZN8x6ExHuZ2gUFpPZd2Cx6n70JtWQWWRrHqUyHbv3NSG9usVU0BcPEaOYEvV68P+l4ewOlHUS2iqbQbpDXLBIaC2LVVwRFlLfO/l5Zq+T6rvyJiN+APLFud3UrT958NjDxiHM+INpqi9Usp2X8D6Wd2R9BA4EWI6eRP/PLcFeqtgmKJLUEr9b4sMhz1remcZEpSX206rhq/XAzWiTTC615sA0aSHJlGBVaJBPj2YLi9sD3tJtojVtn5VNXR2m3nUraJHvAtQ5a7SRam2T0YBU00y6itfXJxFj2wcsotlrZ3kdrPs4QPi4QBNtbtFbJFBeQiXIFwWbRWg9L0krqfP/VPZHIvAzRYNxByCBoP5H6fPfX3z7JfJ2H6FL51omO5IhZCvl0lNutbOs6tM4umoljc4ots47IJBMd0XUilUx0RMdQioHizYMDYyvI071CxhcQDUYPhpG35GbGBws3EOFOVK3a1BYda1GR56/WytSqGU+LubSWI2RHMbJFx9qSm6kH+vm8eAlToBnTWnRikhv4smuQ192NmCQ6ccnNjJ0t5JHxG+LbSdAQzTNFtFGSm6GD9QyBDnEqCTdBtLGSG9i+bffg+c3HdtFWSCZsFm2NZMJW0VZJJmwUbZ1kwjbRVkombBJtrWTCFtFWSyZsEG29ZMJ00W0hmTBZdNtIJkwV3VaSCRNFRybZr13sl9blfgSN7qLw9MVN7Ts/W2GaaO2S/bsosPQytH6DLnI+F4dsk0RrlXyRiqsiPjztOiH6+ockWptkqkHf1Q0bEOwNVaqveoZUT3oGwQTR2vbCpbqB6qrlAl6eSff9G1kdtmZMONCpTTLDcKXNqaSwaomDoCQtWt+uzvDl0XNxtWYiSdHaJHMe/oiZaM13xs/cj+0OCiRa9M/ToICMaH0tGb1nIEOKbcQlmronZLgIioQVrU3yPtsrSp4XyZDoKAuSEv7sp29PqfxaM2FEa50nj2V/vo3gSbcUqtTNvdrC+t+z2k63Rl1pPMj0TvuKT7UWsw8HR/y7Uq2CI1vKsVEfP4Yy7qeK1i75oLrgpsY3RrXoyx7WtsTLrTAOrsdrh7olRJYTK80M4+wc3e2HIx+OWuxRThIdSYCI9iGLR16GD4zjREeyP5n2IZ/vn8CI9iCbTMv90ZFtAn++u+Z0RNeJdKd9XfTV3QhPqEZCfVWI4gs+BjkOiY78fnylnW/vAvNGMMLDkzqhOnBvWc+Izhr/saWfojy+oAe/gtZCqamevY760VS1NjbJDfwpHsdlVJ1L66VYZT1zrSpoKYv24F5iidT3RxeSatkUAsCVFIO7FDg66UoV0dT9JJ6tbpRGF8PDFGqKK5wEvWmxfn+0z3qLYWq/yYo2QnIzjZNQnOGk6MzyOlZtXAxeSEWouFdWLaonKbpolORmdMRAqBWVNN1hoUFY0ZQ0NvaWyqYS5hZOIoaySln5jmQJgoimT9E+9vpZmDR0kMKvwwwwQsEwMYZM4UGOU8h1RR+8UmoqCdyRrMhBfeXiSdcY2114nG+BIshB+TF0YG6fzLkDinDYj2WD42kYK7mW2nNUCvlRQCrJ2yg3Y6zk+sCSkt5/JgYgpU2COom1cktYqJDfUP/EAIasXUQF/0sv9N4dUgWjJRPbu2uPw2RYfME7s/NgEMZLJijDMtR3ZQuQfY7HZCv8wA+HadGCi2AYxsYujqP13RSY47jx3ro+DP8B+V6ZUSC2t7oAAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/back.ebbc12e0.png\";","module.exports = __webpack_public_path__ + \"static/media/back.c1a226fe.png\";","module.exports = __webpack_public_path__ + \"static/media/play.3ab50c42.png\";","module.exports = __webpack_public_path__ + \"static/media/video-back.7d9df377.png\";","module.exports = __webpack_public_path__ + \"static/media/sidenav-back-line.7c1e8b57.png\";","import axios, {AxiosInstance, AxiosRequestConfig} from \"axios\";\r\n\r\nfunction getAxiosInstance(config: AxiosRequestConfig): AxiosInstance {\r\n return axios.create(config);\r\n}\r\n\r\nexport default getAxiosInstance;\r\n","import getAxiosInstance from './axios';\r\nimport {AxiosError, AxiosInstance, AxiosRequestConfig, AxiosResponse} from \"axios\";\r\nimport IApiResponse from \"../interfaces/api/IApiResponse\";\r\n\r\n/**\r\n * TODO\r\n * - Estructurar la clase para que únicamente sirva para obtener un cliente HTTP.\r\n * - Eliminar todos los métodos y añadirlos a clase Service.\r\n * */\r\nexport default abstract class Rest {\r\n protected entityName: string;\r\n protected http: AxiosInstance;\r\n\r\n constructor(entity: string, config: AxiosRequestConfig) {\r\n this.entityName = entity;\r\n this.http = getAxiosInstance(config);\r\n }\r\n\r\n public async fetch(): Promise | AxiosError> {\r\n try {\r\n const res: AxiosResponse> = await this.http.get>(this.entityName);\r\n return res.data;\r\n } catch (ex) {\r\n return ex as AxiosError;\r\n }\r\n }\r\n\r\n public async get(id: string): Promise {\r\n try {\r\n const res: AxiosResponse = await this.http.get(`${this.entityName}/${id}`);\r\n return res.data;\r\n } catch (ex) {\r\n return ex as AxiosError;\r\n }\r\n }\r\n\r\n public async store(entity: T): Promise | AxiosError> {\r\n try {\r\n const res: AxiosResponse> = await this.http.post>(`${this.entityName}/`, entity);\r\n return res.data;\r\n } catch (ex) {\r\n return ex as AxiosError;\r\n }\r\n }\r\n\r\n public async update(id: string, entity: T): Promise | AxiosError> {\r\n try {\r\n const res: AxiosResponse> = await this.http.put>(`${this.entityName}/${id}`, entity);\r\n return res.data;\r\n } catch (ex) {\r\n return ex as AxiosError;\r\n }\r\n }\r\n\r\n public async delete(id: string): Promise | AxiosError> {\r\n try {\r\n /**\r\n * TODO: Tipificar función delete\r\n * */\r\n const res: AxiosResponse> = await this.http.delete(`${this.entityName}/${id}`);\r\n return res.data;\r\n } catch (ex) {\r\n return ex as AxiosError;\r\n }\r\n }\r\n\r\n public async search(params: any): Promise | AxiosError> {\r\n try {\r\n const res: AxiosResponse> = await this.http.post>(`${this.entityName}/search`, params);\r\n return res.data;\r\n } catch (ex) {\r\n return ex as AxiosError;\r\n }\r\n }\r\n}","import {AxiosRequestConfig} from \"axios\";\r\n\r\nconst config: AxiosRequestConfig = {\r\n baseURL: `${process.env.REACT_APP_BASE_URL}/api`,\r\n headers: {\r\n 'Accept': 'application/json',\r\n },\r\n};\r\n\r\nexport default config;","import Rest from \"../Rest\";\r\nimport IApiResponse from \"../../interfaces/api/IApiResponse\";\r\nimport config from \"../clients-configuration/AppServiceConfig\";\r\nimport {AxiosError} from \"axios\";\r\n\r\nclass JoinUsService extends Rest{\r\n public async sendPetition(data: object): Promise {\r\n try {\r\n const res = await this.http.post(this.entityName, data);\r\n return res.data;\r\n } catch (e) {\r\n return e as AxiosError;\r\n }\r\n }\r\n}\r\n\r\nexport default new JoinUsService(\"join-us\", config);","import {AxiosError} from \"axios\";\r\nimport IHelpers from \"../interfaces/helpers/IHelpers\";\r\n\r\nconst allowedCodes: Array = [\"400\", \"401\", \"403\", \"404\", \"422\", \"500\"];\r\n\r\nconst helpers: IHelpers = {\r\n isAxiosError: (object: any) => {\r\n const err = object as AxiosError;\r\n\r\n const isServerError = err.isAxiosError !== undefined && err.isAxiosError;\r\n const isClientError = (err.code !== undefined && err.code !== \"200\") || (err.response?.status !== undefined && err.response?.status !== 200);\r\n\r\n return (isServerError || isClientError);\r\n },\r\n GoTo: (history, path) => {\r\n history.push(path);\r\n },\r\n GoBack: (history) => {\r\n history.goBack();\r\n },\r\n axiosErrorHandling: (error, callbacks) => {\r\n /***\r\n * TODO:\r\n * - Tipificar de manera adecuada este método\r\n * - Parametrizar una estructura de error a manejar (Como cuando se regresan objetos que implementan la interfaz IApiResponse)\r\n */\r\n if (error.code !== undefined && error.code === \"500\") {\r\n if (typeof callbacks[\"500\"] === \"function\") {\r\n callbacks[\"500\"](error);\r\n } else if (typeof callbacks.default === \"function\") {\r\n callbacks.default(error);\r\n }\r\n } else {\r\n const status: string | undefined = error.response?.status.toString();\r\n // @ts-ignore\r\n if (status !== undefined && allowedCodes.indexOf(status) !== -1 && typeof callbacks[status] === \"function\") {\r\n // @ts-ignore\r\n callbacks[status](error.response);\r\n } else if (typeof callbacks.default === \"function\") {\r\n callbacks.default(error);\r\n }\r\n }\r\n },\r\n setFormErrorByResponse: (form, response) => {\r\n const data = form.getFieldsValue();\r\n Object.entries(data).forEach(entry => {\r\n const [key, value] = entry;\r\n if (data.hasOwnProperty(key)) {\r\n const errors = response?.data.errors.hasOwnProperty(key) ? response?.data.errors[key] : [];\r\n form.setFields([{\r\n name: key,\r\n value,\r\n errors\r\n }]);\r\n }\r\n });\r\n },\r\n graphqlErrorHandling: (error) => {\r\n if (error !== undefined) {\r\n error.graphQLErrors.forEach(e => {\r\n console.log(e);\r\n });\r\n }\r\n // return (\r\n //

{error.message}

\r\n // )\r\n }\r\n};\r\n\r\nexport default helpers;","import React, {useState} from \"react\";\r\nimport {Button, Form, Input, Layout, notification} from \"antd\";\r\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\r\nimport {faPaperPlane} from \"@fortawesome/free-solid-svg-icons\";\r\nimport {Rule} from \"antd/es/form\";\r\nimport backLine from \"../assets/home/back-line-vector.png\";\r\nimport backDots from \"../assets/home/home-asset-3.png\";\r\nimport img from \"../assets/join-us/img.png\";\r\nimport 'react-phone-input-2/lib/style.css'\r\nimport JoinUsService from \"../api/services/JoinUsService\";\r\nimport helpers from \"../helpers/functions\";\r\nimport {AxiosError} from \"axios\";\r\nimport {useForm} from \"antd/es/form/Form\";\r\nimport IApiResponse from \"../interfaces/api/IApiResponse\";\r\n// @ts-ignore\r\nimport PhoneInput from 'react-phone-input-2';\r\nimport \"../styles/views/JoinUs.less\"\r\n\r\nconst validationRules: { email: Array, phone: Array } = {\r\n email: [\r\n {required: true, message: \"Debes ingresar tu correo electrónico\"},\r\n {type: \"email\", message: \"Debes ingresar un correo electrónico válido\"}\r\n ],\r\n phone: [\r\n {\r\n validator: (_, value: string) => {\r\n const regex = /^(\\+\\d+ )/;\r\n const matches = regex.exec(value);\r\n if (matches !== null && matches[1] !== undefined) {\r\n const _v = value.substring(regex.lastIndex, value.length - 1);\r\n\r\n if (_v.trim().length > 0) {\r\n return Promise.resolve();\r\n } else {\r\n return Promise.reject(\"Debes ingresar un número de teléfono válido\");\r\n }\r\n } else {\r\n return Promise.reject(\"Debes ingresar un número de teléfono válido\");\r\n }\r\n }\r\n },\r\n ]\r\n};\r\n\r\ninterface FormValues {\r\n email: string,\r\n phone: string,\r\n}\r\n\r\nconst JoinUs: React.FC = () => {\r\n const [frmJoinUs] = useForm();\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n const sendMail = async (data: FormValues) => {\r\n setIsLoading(true);\r\n const res = await JoinUsService.sendPetition(data);\r\n setIsLoading(false);\r\n\r\n if (helpers.isAxiosError(res)) {\r\n const err = res as AxiosError;\r\n helpers.axiosErrorHandling(err, {\r\n 422: (response) => helpers.setFormErrorByResponse(frmJoinUs, response),\r\n default: (error) => notification.open({\r\n message: \"Error\",\r\n description: error.response?.data.message,\r\n type: \"error\",\r\n placement: \"bottomLeft\"\r\n }),\r\n })\r\n } else {\r\n const resData = res as IApiResponse;\r\n if (resData.status) {\r\n notification.open({\r\n message: \"La operación ha sido efectuada éxitosamente\",\r\n description: resData.message,\r\n type: \"success\",\r\n placement: \"bottomLeft\"\r\n });\r\n\r\n frmJoinUs.resetFields();\r\n } else {\r\n notification.open({\r\n message: \"Error\",\r\n description: resData.message,\r\n type: \"error\",\r\n placement: \"bottomLeft\"\r\n });\r\n }\r\n }\r\n };\r\n\r\n const onSubmit = (values: any) => {\r\n const data = values as FormValues;\r\n sendMail(data).then();\r\n };\r\n\r\n return (\r\n \r\n
\r\n

¿Eres docente y quieres compartir tus clases?

\r\n

Déjanos tu correo y te contactaremos con las instrucciones para poder subir tu contenido a la\r\n plataforma.

\r\n

Gracias por ayudarnos a llevar la educación a todos los que lo necesitan.

\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \"join-us\"/\r\n
\r\n
\r\n \"join-us-back-line\"/\r\n
\r\n
\r\n \"join-us-back-dots\"/\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default JoinUs;","import React from \"react\";\r\nimport {Button, Layout} from \"antd\";\r\nimport image from \"../assets/about-us/img.png\";\r\nimport back from \"../assets/home/home-asset-3.png\";\r\nimport helpers from \"../helpers/functions\";\r\nimport {RouteComponentProps} from \"react-router\"\r\nimport \"../styles/views/AboutUs.less\";\r\n\r\nconst AboutUs: React.FC = ({history}) => {\r\n return (\r\n \r\n
\r\n
\r\n

¿Qué es ESE Virtual?

\r\n

\r\n ESE Virtual es una plataforma que recopila clases de docentes de todas partes de El Salvador\r\n para el fácil acceso de sus alumnos, alumnos de otras instituciones u otros que estén\r\n interesados en el aprendizaje.\r\n

\r\n
\r\n\r\n
\r\n

¿Por qué lo hacemos?

\r\n

\r\n Nos hemos comprometido a facilitar la educación a todo aquel que la necesite y darles\r\n herramientas actuales a los docentes para educar a una nueva generación que actualmente no puede\r\n estar en las aulas por la alerta del nuevo Coronavirus.\r\n

\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \"about-us\"/\r\n
\r\n
\r\n\r\n
\r\n \"about-us-back\"/\r\n
\r\n\r\n \r\n );\r\n};\r\n\r\nexport default AboutUs;","import { gql } from \"apollo-boost\";\r\n\r\nexport const GET_SUBJECTS = gql`\r\n {\r\n subjects {\r\n id,\r\n name,\r\n color,\r\n image,\r\n }\r\n }\r\n`;\r\n\r\nexport const GET_SUBJECT_BY_ID = gql`\r\n query GetSubject($id: String!, $getAcademicSubjects: Boolean = false) {\r\n subject(id: $id) {\r\n id,\r\n name,\r\n color,\r\n image,\r\n academic_subjects @include (if: $getAcademicSubjects) {\r\n id,\r\n grade {\r\n level_id,\r\n name, \r\n abbr\r\n }\r\n }\r\n }\r\n }\r\n`;","import {gql} from \"apollo-boost\";\r\n\r\nexport const GET_LEVELS_WITH_AS_BY_SUBJECT = gql`\r\n query GetLevelsWithASBySubject($subject_id: String!){\r\n levels(whereHas: [academic_subjects]) {\r\n id,\r\n name,\r\n abbr,\r\n grades {\r\n id,\r\n name,\r\n abbr\r\n academic_subjects (subject_id: $subject_id) {\r\n id,\r\n subject_id,\r\n units {\r\n videos {\r\n id,\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n`;","import {gql} from \"apollo-boost\";\r\n\r\nexport const GET_VIDEOS_BY_ACADEMIC_SUBJECT = gql`\r\n query GetVideosByAcademicSubject($academic_subject_id: String!) {\r\n videos(academic_subject_id: $academic_subject_id)\r\n {\r\n id,\r\n description,\r\n thumbnail,\r\n teacher {\r\n name,\r\n surname,\r\n },\r\n unit {\r\n name,\r\n }\r\n }\r\n }\r\n`;\r\n\r\nexport const GET_VIDEO = gql`\r\n query GetVideo($id: String!) {\r\n video(id: $id) {\r\n id,\r\n description,\r\n unit {\r\n id,\r\n name,\r\n academic_subject_id,\r\n academic_subject {\r\n grade {\r\n id,\r\n name,\r\n level {\r\n id,\r\n name,\r\n }\r\n },\r\n subject {\r\n id,\r\n name,\r\n }\r\n }\r\n }\r\n } \r\n }\r\n`;","import gql from \"graphql-tag\";\r\n\r\nexport const GET_ACADEMIC_SUBJECT = gql`\r\n query GetAcademicSubject($id: String!){\r\n academic_subject(id: $id) {\r\n id,\r\n grade_id,\r\n subject_id,\r\n grade {\r\n id,\r\n name,\r\n abbr,\r\n level {\r\n id,\r\n name,\r\n },\r\n },\r\n subject {\r\n name,\r\n color,\r\n },\r\n }\r\n }\r\n`;","import {Alert, Spin} from \"antd\";\r\nimport React from \"react\";\r\nimport {useQuery} from '@apollo/react-hooks';\r\nimport ISubject from \"../../../interfaces/models/ISubject\";\r\nimport {subjects as subjectsQueries} from \"../../../api/queries\";\r\n\r\ninterface Props {\r\n onClick: (s: ISubject) => void\r\n}\r\n\r\nconst SubjectsPanel: React.FC = ({onClick}) => {\r\n const {loading: isLoading, data, error} = useQuery<{ subjects: Array }>(subjectsQueries.GET_SUBJECTS);\r\n\r\n const subjects = data?.subjects;\r\n\r\n return (\r\n
\r\n {error === undefined && (\r\n \r\n
\r\n {!isLoading && subjects?.map(s =>\r\n onClick(s)}\r\n className=\"subject-card\"\r\n key={s.id}\r\n style={{background: s.color}}\r\n >\r\n
\r\n {`${s.abbr}_back`}/\r\n
\r\n
\r\n {s.abbr}/\r\n {s.name}\r\n
\r\n
\r\n )}\r\n
\r\n
\r\n
\r\n )}\r\n\r\n {!isLoading && error !== undefined && subjects === undefined && (\r\n \r\n

Ocurrió un error al intentar obtener las materias, inténtalo más tarde...

\r\n

{error.message}

\r\n \r\n )}\r\n type=\"error\"\r\n showIcon\r\n />\r\n )}\r\n
\r\n )\r\n};\r\n\r\nexport default SubjectsPanel;","import React, {useLayoutEffect} from \"react\";\r\nimport ISubject from \"../interfaces/models/ISubject\";\r\nimport {RouteComponentProps} from \"react-router-dom\";\r\nimport helpers from \"../helpers/functions\";\r\nimport {Button, Col, Layout, Row} from \"antd\";\r\nimport laptop from \"../assets/home/home-laptop.png\";\r\nimport smLaptop from \"../assets/home/sm-home-laptop.png\";\r\nimport section1BackImage from \"../assets/home/home-back-1.png\";\r\nimport section1BackLine from \"../assets/home/back-line-vector.png\";\r\nimport section2Image from \"../assets/home/home-asset-2.png\";\r\nimport section2Back from \"../assets/home/home-asset-3.png\";\r\nimport section3Group1 from \"../assets/home/section-3-group-1.png\";\r\nimport section3Group2 from \"../assets/home/section-3-group-2.png\";\r\nimport section3Group3 from \"../assets/home/section-3-group-3.png\";\r\nimport \"../styles/views/Home.less\";\r\nimport SubjectsPanel from \"../components/Public/Home/SubjectsPanel\";\r\n\r\nconst Home: React.FC = ({history, location}: RouteComponentProps) => {\r\n const ScrollToSubjects = () => {\r\n const e: HTMLElement | null = document.getElementById(\"subjects\");\r\n e?.scrollIntoView({behavior: \"smooth\", block: \"center\"})\r\n };\r\n\r\n useLayoutEffect(() => {\r\n if (location.hash === \"#subjects\") {\r\n document.addEventListener(\"DOMContentLoaded\", ScrollToSubjects);\r\n\r\n if (document.readyState === 'complete') {\r\n ScrollToSubjects();\r\n }\r\n }\r\n }, [location]);\r\n\r\n return (\r\n \r\n \r\n \r\n
\r\n \"Section\r\n
\r\n\r\n
\r\n
\r\n
\r\n

Estás listo?

\r\n

Continuemos aprendiendo

\r\n

\r\n Durante esta emergencia creamos una plataforma para que docentes de El Salvador\r\n puedan\r\n enseñar a las nuevas generaciones utilizando herramientas de fácil acceso.\r\n

\r\n \r\n
\r\n
\r\n\r\n
\r\n \"section\r\n
\r\n
\r\n\r\n
\r\n \"Laptop\"/\r\n \"Laptop\"/\r\n Explora y aprende\r\n
\r\n \r\n \r\n
\r\n \"section\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \"section\r\n
\r\n
\r\n
\r\n

Nos comprometemos con la educación

\r\n

\r\n Profesores de todo el salvador se unen para educar de forma gratuita a los estudiantes que\r\n no pueden ir a las aulas durante la emergencia del nuevo coronavirus.\r\n

\r\n\r\n \r\n
\r\n \r\n \r\n

Aprende a tu ritmo

\r\n

\r\n Te damos acceso a clases para que continues tu proceso de aprendizaje desde casa durante el\r\n estado de emergencia.\r\n

\r\n\r\n \r\n \r\n
\r\n \"Group\r\n

Todo el contenido es totalmente gratis

\r\n
\r\n
\r\n \"Group\r\n

Míralo cuantas veces quieras

\r\n
\r\n
\r\n \"Group\r\n

Aprende de diferentes profesores

\r\n
\r\n \r\n
\r\n \r\n \r\n

Elige la materia que deseas estudiar

\r\n helpers.GoTo(history, `/classes/subject/${s.id}`)}/>\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Home;","import React, {useEffect, useState} from \"react\";\r\nimport {RouteComponentProps} from \"react-router-dom\";\r\nimport ISubject from \"../interfaces/models/ISubject\";\r\nimport ILevel from \"../interfaces/models/ILevel\";\r\nimport IAcademicSubject from \"../interfaces/models/IAcademicSubject\";\r\nimport {Alert, Badge, Button, Col, Layout, Row, Spin} from \"antd\";\r\nimport helpers from \"../helpers/functions\";\r\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\r\nimport {faArrowLeft} from \"@fortawesome/free-solid-svg-icons\";\r\nimport back from \"../assets/classes/back.png\";\r\nimport \"../styles/views/Classes.less\";\r\nimport IVideo from \"../interfaces/models/IVideo\";\r\nimport {useLazyQuery} from '@apollo/react-hooks';\r\nimport {levels as levelsQueries, subjects as subjectsQueries} from \"../api/queries\";\r\n\r\ninterface RouteParams {\r\n subject_id: string\r\n}\r\n\r\nconst Classes: React.FC> = ({match, history}: RouteComponentProps) => {\r\n const subject_id = match.params.subject_id;\r\n\r\n const [subject, setSubject] = useState(null);\r\n const [levels, setLevels] = useState | null>(null);\r\n\r\n const [getSubject, {loading: subjectLoading, data: subjectData, error}] = useLazyQuery<{ subject: ISubject | null }>(subjectsQueries.GET_SUBJECT_BY_ID);\r\n\r\n const [getLevels, {data: levelsData, loading: levelsLoading, error: levelsError}] = useLazyQuery<{ levels: Array }>(levelsQueries.GET_LEVELS_WITH_AS_BY_SUBJECT);\r\n\r\n const getVideoCount: (as: IAcademicSubject | undefined) => number = (as: IAcademicSubject | undefined) => {\r\n if (as === undefined) return 0;\r\n\r\n const aux: Array = [];\r\n as?.units?.forEach(u => {\r\n if (u.videos !== undefined) {\r\n aux.push(...u.videos);\r\n }\r\n });\r\n\r\n return aux.length;\r\n };\r\n\r\n useEffect(() => {\r\n if (subject_id !== undefined && subject_id !== null) {\r\n getSubject({\r\n variables: {\r\n id: subject_id,\r\n }\r\n });\r\n }\r\n }, [subject_id, getSubject]);\r\n\r\n useEffect(() => {\r\n if (!subjectLoading && subjectData?.subject !== undefined && subjectData.subject !== null && error === undefined) {\r\n const s: ISubject = subjectData.subject;\r\n setSubject(s);\r\n\r\n getLevels({\r\n variables: {\r\n subject_id: s.id\r\n }\r\n });\r\n } else if (error !== undefined) {\r\n //TODO: Handle error\r\n }\r\n }, [subjectLoading, subjectData, error, getLevels]);\r\n\r\n useEffect(() => {\r\n if (!levelsLoading && levelsError === undefined && levelsData !== undefined) {\r\n const levels: Array = levelsData.levels;\r\n setLevels(levels);\r\n } else if (levelsError !== undefined) {\r\n //TODO: HandleError\r\n }\r\n }, [levelsLoading, levelsData, levelsError]);\r\n\r\n return (\r\n \r\n \r\n {error && (\r\n
\r\n helpers.GoTo(history, \"/\")} className=\"return-btn\"\r\n type=\"link\">\r\n Atrás\r\n \r\n\r\n \r\n

Ocurrió un error al intentar obtener los datos, inténtalo más tarde...

\r\n

${error?.message}

\r\n \r\n }\r\n type=\"error\"\r\n showIcon\r\n />\r\n
\r\n )}\r\n\r\n {!error && !subjectLoading && (\r\n
\r\n
\r\n \"back\"/\r\n
\r\n \r\n
\r\n \"Subject\r\n
\r\n \r\n helpers.GoTo(history, \"/\")}\r\n className=\"return-btn\"\r\n type=\"link\"\r\n >\r\n Atrás\r\n \r\n \r\n \r\n

{subject?.name}

\r\n\r\n {levelsLoading && (\r\n \r\n \r\n \r\n )}\r\n\r\n {!subjectLoading && levels?.map(l => (\r\n \r\n \r\n

{l.name}

\r\n \r\n \r\n \r\n {l.grades?.map(g => {\r\n const grade_academic_subjects = g?.academic_subjects?.filter(as => as.subject_id === subject?.id);\r\n const as = !(grade_academic_subjects !== undefined && grade_academic_subjects.length > 0) ? undefined : grade_academic_subjects[0];\r\n return (\r\n \r\n \r\n helpers.GoTo(history, `/videos/${as?.id}`)}\r\n type=\"default\"\r\n block\r\n size=\"large\"\r\n >\r\n {g.name}\r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n
\r\n ))}\r\n\r\n {!levelsLoading && levelsError !== undefined && (\r\n \r\n

Ocurrió un error al intentar obtener los datos, inténtalo más\r\n tarde...

\r\n

${levelsError.message}

\r\n \r\n }\r\n type=\"error\"\r\n showIcon\r\n />\r\n )}\r\n \r\n
\r\n\r\n
\r\n )}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Classes;","import IVideo from \"../../../interfaces/models/IVideo\";\r\nimport {Col} from \"antd\";\r\nimport playIcon from \"../../../assets/video-list/play.png\";\r\nimport React from \"react\";\r\n\r\ninterface Props {\r\n video: IVideo,\r\n onClick: (video: IVideo) => void,\r\n color: string | undefined\r\n}\r\n\r\nconst VideoDisplay: React.FC = ({video, onClick, color}) => (\r\n \r\n
\r\n
onClick(video)}>\r\n {video.id}/\r\n
\r\n \"Play\r\n
\r\n
\r\n
\r\n

{video.teacher?.name} {video.teacher?.surname}

\r\n

{video.unit?.name}

\r\n

{video.description}

\r\n
\r\n
\r\n \r\n);\r\n\r\nexport default VideoDisplay;","import React, {useEffect, useState} from \"react\";\r\nimport {RouteComponentProps} from \"react-router-dom\";\r\nimport IAcademicSubject from \"../interfaces/models/IAcademicSubject\";\r\nimport IVideo from \"../interfaces/models/IVideo\";\r\nimport helpers from \"../helpers/functions\";\r\nimport {Alert, Button, Col, Layout, Row, Spin} from \"antd\";\r\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\r\nimport {faArrowLeft} from \"@fortawesome/free-solid-svg-icons\";\r\nimport back from \"../assets/video-list/back.png\";\r\nimport \"../styles/views/VideoList.less\";\r\nimport {academic_subjects as AcademicSubjectsQueries, videos as VideosQueries} from \"../api/queries\";\r\nimport {useLazyQuery} from \"@apollo/react-hooks\";\r\nimport VideoDisplay from \"../components/Public/VideoList/VideoDisplay\";\r\n\r\ninterface RouteParams {\r\n academic_subject_id: string\r\n}\r\n\r\ninterface IViewEntities {\r\n academicSubject: boolean,\r\n videos: boolean,\r\n}\r\n\r\nconst VideoList: React.FC> = ({match, history}) => {\r\n const academic_subject_id = match.params.academic_subject_id;\r\n const [academicSubject, setAcademicSubject] = useState(null);\r\n const [videos, setVideos] = useState | null>(null);\r\n\r\n const [getAcademicSubject, {loading: isLoadingAs, data: asData, error: asError}] = useLazyQuery<{ academic_subject: IAcademicSubject | undefined }>(AcademicSubjectsQueries.GET_ACADEMIC_SUBJECT);\r\n\r\n const [getVideos, {loading: isLoadingVideos, data: videosData, error: videosError}] = useLazyQuery<{ videos: Array }>(VideosQueries.GET_VIDEOS_BY_ACADEMIC_SUBJECT);\r\n\r\n useEffect(() => {\r\n getAcademicSubject({\r\n variables: {\r\n id: academic_subject_id,\r\n }\r\n });\r\n }, [academic_subject_id, getAcademicSubject]);\r\n\r\n useEffect(() => {\r\n if (!isLoadingAs && asData?.academic_subject !== undefined && asData.academic_subject !== null && asError === undefined) {\r\n const as: IAcademicSubject = asData.academic_subject;\r\n setAcademicSubject(as);\r\n\r\n getVideos({\r\n variables: {\r\n academic_subject_id: as.id,\r\n },\r\n });\r\n } else if (asError !== undefined) {\r\n //TODO: Handle error\r\n }\r\n }, [isLoadingAs, asData, asError, getVideos]);\r\n\r\n useEffect(() => {\r\n if (!isLoadingVideos && videosData?.videos !== undefined && videosError === undefined) {\r\n setVideos(videosData.videos);\r\n } else if (videosError !== undefined) {\r\n //TODO: Handle error\r\n }\r\n }, [isLoadingVideos, videosData, videosError]);\r\n\r\n return (\r\n \r\n \r\n {!isLoadingAs && asError && (\r\n
\r\n helpers.GoBack(history)}\r\n className=\"return-btn\"\r\n type=\"link\">\r\n Atrás\r\n \r\n \r\n

Ocurrió un error al intentar obtener los datos, inténtalo más tarde...

\r\n

${asError.message}

\r\n \r\n }\r\n type=\"error\"\r\n showIcon\r\n />\r\n
\r\n )}\r\n {!isLoadingAs && !asError && (\r\n <>\r\n
\r\n \"back\"/\r\n
\r\n < Row className=\"info-container\">\r\n \r\n helpers.GoBack(history)}\r\n className=\"return-btn\"\r\n type=\"link\"> Atrás\r\n \r\n \r\n

\r\n {academicSubject?.subject?.name}\r\n

\r\n \r\n helpers.GoTo(history, `/classes/subject/${academicSubject?.subject_id}`)}\r\n >\r\n {academicSubject?.grade?.level?.name}\r\n

\r\n /\r\n

\r\n {academicSubject?.grade?.name}\r\n

\r\n
\r\n \r\n \r\n \r\n {isLoadingVideos && (\r\n \r\n \r\n \r\n )}\r\n {!isLoadingVideos && videosError && (\r\n \r\n \r\n

Ocurrió un error al intentar obtener los vídeos, inténtalo\r\n más tarde...

\r\n

${videosError?.message}

\r\n \r\n }\r\n type=\"error\"\r\n showIcon\r\n />\r\n \r\n )}\r\n {!isLoadingVideos && !videosError && videos?.length === 0 && (\r\n \r\n \r\n \r\n )}\r\n {!isLoadingVideos && !videosError && videos?.map(v =>\r\n helpers.GoTo(history, `/video/${video.id}`)}\r\n color={academicSubject?.subject?.color}\r\n />\r\n )}\r\n
\r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default VideoList;","import {AxiosRequestConfig} from \"axios\";\r\n\r\nconst config: AxiosRequestConfig = {\r\n baseURL: `https://www.googleapis.com/youtube/v3`,\r\n params: {\r\n \"key\": \"AIzaSyB_wcJhwl4OqTuTnqZylNJLFl3I6tQyvFM\",\r\n },\r\n headers: {\r\n \"Accept\": \"application/json\",\r\n },\r\n};\r\n\r\nexport default config;","import Service from \"../Service\";\r\nimport config from \"../clients-configuration/YoutubeServiceConfig\";\r\nimport {AxiosError, AxiosResponse} from \"axios\";\r\nimport IYoutubeVideo from \"../../interfaces/youtube/IYoutubeVideo\";\r\nimport IYoutubeList from \"../../interfaces/youtube/IYoutubeList\";\r\n\r\nclass YoutubeService extends Service {\r\n constructor() {\r\n super(\"videos\", config);\r\n\r\n this.http.interceptors.request.use(instanceConfig => {\r\n instanceConfig.params = Object.assign(instanceConfig.params, {}, {\r\n ...config.params,\r\n });\r\n\r\n return instanceConfig;\r\n })\r\n }\r\n\r\n async get(id: string): Promise {\r\n try {\r\n const res: AxiosResponse = await this.http.get(this.entityName, {\r\n params: {\r\n id,\r\n part: 'id,snippet',\r\n },\r\n });\r\n\r\n return res.data;\r\n } catch (ex) {\r\n return ex as AxiosError;\r\n }\r\n }\r\n}\r\n\r\nexport default new YoutubeService();","import Rest from \"./Rest\";\r\nimport {AxiosError} from \"axios\";\r\nimport IApiResponse from \"../interfaces/api/IApiResponse\";\r\n\r\nexport default class Service extends Rest{\r\n public async fetch(): Promise | AxiosError> {\r\n return await super.fetch();\r\n }\r\n\r\n public async get(id: string): Promise {\r\n return await super.get(id);\r\n }\r\n\r\n public async store(entity: T): Promise | AxiosError> {\r\n return await super.store(entity);\r\n }\r\n\r\n public async search(params: object): Promise | AxiosError> {\r\n return await super.search(params);\r\n }\r\n}","import React, {useEffect, useState} from \"react\";\r\nimport {RouteComponentProps} from \"react-router-dom\";\r\nimport IVideo from \"../interfaces/models/IVideo\";\r\nimport helpers from \"../helpers/functions\";\r\nimport ISubject from \"../interfaces/models/ISubject\";\r\nimport IGrade from \"../interfaces/models/IGrade\";\r\nimport {Alert, Button, Col, Layout, Row} from \"antd\";\r\nimport {FontAwesomeIcon} from \"@fortawesome/react-fontawesome\";\r\nimport {faArrowLeft} from \"@fortawesome/free-solid-svg-icons\";\r\nimport YoutubeService from \"../api/services/YoutubeService\";\r\nimport IYoutubeList from \"../interfaces/youtube/IYoutubeList\";\r\nimport IYoutubeVideo from \"../interfaces/youtube/IYoutubeVideo\";\r\nimport back from \"../assets/video-detail/video-back.png\";\r\nimport \"../styles/views/VideoDetail.less\";\r\nimport {useLazyQuery} from \"@apollo/react-hooks\";\r\nimport {videos as VideosQueries} from \"../api/queries\";\r\n\r\ninterface RouteProps {\r\n video_id: string,\r\n}\r\n\r\nconst VideoDetail: React.FC> = ({match, history}) => {\r\n const video_id = match.params.video_id;\r\n const [video, setVideo] = useState(null);\r\n const [videoInfo, setVideoInfo] = useState(null);\r\n const [subject, setSubject] = useState(null);\r\n const [grade, setGrade] = useState(null);\r\n const [videoNotFound, setVideoNotFound] = useState(false);\r\n\r\n const [getVideo, {loading, data, error}] = useLazyQuery<{ video: IVideo }>(VideosQueries.GET_VIDEO);\r\n\r\n /**\r\n * TODO: Implementar handler de excepciones Axios\r\n */\r\n async function getYoutubeVideo(id: string) {\r\n const res = await YoutubeService.get(id);\r\n\r\n if (helpers.isAxiosError(res)) {\r\n } else {\r\n const list = res as IYoutubeList;\r\n setVideoInfo(list.items[0] as IYoutubeVideo);\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n getVideo({\r\n variables: {\r\n id: video_id,\r\n }\r\n })\r\n }, [video_id, getVideo]);\r\n\r\n useEffect(() => {\r\n if (!loading && data?.video !== undefined && error === undefined) {\r\n setVideo(data.video);\r\n } else if (error !== undefined) {\r\n //TODO: Handle error\r\n setVideoNotFound(true);\r\n }\r\n }, [loading, data, error]);\r\n\r\n\r\n useEffect(() => {\r\n if (video !== null) {\r\n getYoutubeVideo(video.id).then();\r\n\r\n if (video.unit?.academic_subject?.subject !== undefined) {\r\n setSubject(video.unit?.academic_subject?.subject);\r\n }\r\n\r\n if (video.unit?.academic_subject?.grade !== undefined) {\r\n setGrade(video.unit?.academic_subject?.grade)\r\n }\r\n }\r\n }, [video]);\r\n\r\n return (\r\n \r\n \r\n {videoNotFound && (\r\n \r\n helpers.GoBack(history)}\r\n type=\"primary\"\r\n >\r\n Atrás\r\n \r\n \r\n )}\r\n\r\n {!videoNotFound && video !== null &&\r\n <>\r\n \r\n helpers.GoBack(history)}\r\n className=\"return-btn\"\r\n type=\"link\"\r\n >\r\n \r\n Atrás\r\n \r\n \r\n \r\n

{subject?.name}

\r\n \r\n helpers.GoTo(history, `/classes/subject/${subject?.id}`)}\r\n >\r\n {grade?.level?.name}\r\n

\r\n /\r\n helpers.GoTo(history, `/videos/${video?.unit?.academic_subject_id}`)}\r\n >\r\n {grade?.name}\r\n

\r\n /\r\n

{video?.unit?.name}

\r\n
\r\n

{videoInfo?.snippet.title}

\r\n\r\n
\r\n \r\n
\r\n \r\n \r\n }\r\n
\r\n
\r\n \"back\"/\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default VideoDetail;","import React from \"react\";\r\nimport {Route, Switch} from \"react-router-dom\";\r\nimport JoinUs from \"../views/JoinUs\";\r\nimport AboutUs from \"../views/AboutUs\";\r\nimport Home from \"../views/Home\";\r\nimport Classes from \"../views/Classes\";\r\nimport VideoList from \"../views/VideoList\";\r\nimport VideoDetail from \"../views/VideoDetail\";\r\n\r\nconst HomeRoutes : React.FC = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default HomeRoutes;","import React, {useEffect, useState} from \"react\";\r\nimport {Button, Col, Drawer, Layout, Menu, Row} from \"antd\";\r\nimport logo from \"../../assets/icon.png\";\r\nimport HomeRoutes from \"../../routes/HomeRoutes\";\r\nimport {FontAwesomeIcon} from '@fortawesome/react-fontawesome'\r\nimport {faBook, faChalkboardTeacher, faInfo, faBars, faTimes} from \"@fortawesome/free-solid-svg-icons\";\r\nimport {RouteComponentProps} from \"react-router-dom\";\r\nimport sidenavBackLine from \"../../assets/layouts/public/sidenav-back-line.png\";\r\nimport \"./Public.less\"\r\n\r\nconst {Header, Content, Footer} = Layout;\r\n\r\nconst menuOptions: Array<{ text: string, path: string, icon: JSX.Element }> = [\r\n {\r\n text: \"Clases\",\r\n path: \"/#subjects\",\r\n icon: \r\n },\r\n {\r\n text: \"Docentes\",\r\n path: \"/join-us\",\r\n icon: \r\n },\r\n {\r\n text: \"Acerca de nosotros\",\r\n path: \"/about-us\",\r\n icon: \r\n },\r\n];\r\n\r\nconst Public: any = ({history, location}: RouteComponentProps) => {\r\n const [drawer, setDrawer] = useState(false);\r\n const [selectedKey, setSelectedKey] = useState(\"home\");\r\n\r\n function OnDrawerClose(): void {\r\n setDrawer(false);\r\n }\r\n\r\n function GoTo(path: string, key: string): void {\r\n const e: HTMLElement | null = document.getElementById(\"public-app-layout\");\r\n e?.scrollIntoView({block: \"start\", behavior: \"smooth\"});\r\n\r\n if (drawer) {\r\n setDrawer(false);\r\n }\r\n\r\n history.push(path);\r\n }\r\n\r\n useEffect(() => {\r\n setSelectedKey(`${location.pathname}${location.hash}`);\r\n }, [location]);\r\n\r\n return (\r\n
\r\n \r\n \"ESE\r\n \r\n
\r\n )}\r\n placement=\"left\"\r\n onClose={OnDrawerClose}\r\n visible={drawer}\r\n width=\"100vw\"\r\n height=\"100vh\"\r\n >\r\n
\r\n \r\n {menuOptions.map(o =>\r\n GoTo(o.path, o.path)}>\r\n {o.text}\r\n \r\n )}\r\n \r\n
\r\n \"Sidenav\r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n
\r\n
GoTo(\"/\", \"home\")}>\r\n \"Logo\"/\r\n ESE virtual\r\n
\r\n setDrawer(true)}\r\n id=\"btnShowSidenav\"\r\n >\r\n \r\n \r\n
\r\n\r\n \r\n {menuOptions.map(o => (\r\n GoTo(o.path, o.path)}>{o.text}\r\n ))}\r\n \r\n
\r\n\r\n
\r\n Beta\r\n
\r\n\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
GoTo(\"/\", \"home\")}>\r\n \"Logo\"/\r\n ESE virtual\r\n
\r\n

\r\n Derechos reservados © 2020 ESE ediciones\r\n

\r\n \r\n \r\n \r\n {menuOptions.map(o =>\r\n GoTo(o.path, o.path)}>\r\n {o.text}\r\n \r\n )}\r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Public;","import React from \"react\";\r\nimport {BrowserRouter, Route} from \"react-router-dom\";\r\nimport \"../views/layouts/Public.less\";\r\nimport PublicLayout from \"../views/layouts/Public\";\r\n\r\nconst Router: React.FC = () => {\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default Router;","import React, {useEffect, useState} from 'react'\r\nimport Router from \"./routes/Router\";\r\nimport {Spin} from \"antd\";\r\n\r\nconst App: React.FC = () => {\r\n const [isLoading, setIsLoading] = useState(true);\r\n\r\n const onLoadListener = () => {\r\n setIsLoading(false)\r\n };\r\n\r\n useEffect(() => {\r\n document.addEventListener(\"DOMContentLoaded\", onLoadListener);\r\n return () => {\r\n document.removeEventListener(\"DOMContentLoaded\", onLoadListener);\r\n }\r\n });\r\n\r\n return \r\n \r\n ;\r\n};\r\n\r\nexport default App;\r\n","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.0/8 are considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\ntype Config = {\r\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\r\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\r\n};\r\n\r\nexport function register(config?: Config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(\r\n process.env.PUBLIC_URL,\r\n window.location.href\r\n );\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl: string, config?: Config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl, {\r\n headers: {'Service-Worker': 'script'}\r\n })\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready\r\n .then(registration => {\r\n registration.unregister();\r\n })\r\n .catch(error => {\r\n console.error(error.message);\r\n });\r\n }\r\n}\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport ApolloClient from 'apollo-boost';\r\nimport {ApolloProvider} from 'react-apollo';\r\nimport {ApolloProvider as ApolloHooksProvider} from 'react-apollo-hooks';\r\nimport App from './App';\r\nimport * as serviceWorker from './serviceWorker'\r\nimport './styles/helpers/index.less';\r\n\r\nconst client = new ApolloClient({\r\n uri: process.env.REACT_APP_BASE_URL_GRAPHQL,\r\n});\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n , document.getElementById('root')\r\n);\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\nserviceWorker.unregister();\r\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIoAAAB8CAYAAAC2TChgAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAM0SURBVHgB7d27bhNBFMbxM+MLFoXldFRoG/r4DRLRUsATkJSpEp4A5QlIKsqQki7poMIlHXmELSktF8ixLQ8zdgorsccj746d3f3/JG45K385ZO1cpE+jxDroXHWa7eGp/euREUnsn6kS+TYatC57/eO+RFCZzFdfk0ZDrowy++7fyqib8VjOe39PUokg1o7KPXCjff9LZL7Io/HdePDiMO//xMpkupukKTZz9gFblI4HrW6RdtTN9uh0+QM7Zr/e/ncmOatKpn0l+SxPbxInKdqO2sj0yHeBEv1RclaVTPugB7LFvJg7all+xy9aN99EknFehkzfLEZeyHwld6OkvgvUmvmGUql4ZtF2tJ965Np3wVSm3vkmyJzNerLFPCfLjnqihxfuK+LlY3U30S8vJGdVylz2LHZvq2k5l5zF3LGW9n8OX++9/a5N/V7PP4d17K/U3p2XE9066aX5/3yhSplv9t7dGmP2ZJ45NEb9rtXkw480/5+j7GJHAAAAAAAAAAAAAAAAAAAAoCyU+42SOiX1dSipx8ykpJ4NJXVK6kEoqVNSD5VknJch0zeLkRcyX4mS+o4yKakHIJOSehBK6pTUg1BSp6QOAAAAAAAAAAAAAAAAAAAAPDcrS+pipLftMnUpMxdK6kpUx5XUR2PzqWg7Kk+R2knHIznMe6kqZdab5o+7QR6N+javW6QdtadI7cyeDZKzqmTWG+rLkpvE6RRtR21fEt97r1CyLzmrSqbyZRZsRy2IxojxFa46UiBaKX235pobyRmZs+8ibmWLeQ823lHXlDle1XKP1ZGtUubyVxXT11rOJGcxd9SuA2vf6UP7zl8vhLi+6vlIt7oxOrJVyqxr1TVKPTyTTd/Yb1Vr9m1l2REAAAAAAAAAAAAAAAAAAAAoCw7I5oDsIByQHTOTA7Kz4YBsDsgOwgHZHJAdKsk4L0OmbxYjL2S+Egdk7yiTA7IDkMkB2UE4IJsDsoNwQDYHZAMAAAAAAAAAAAAAAAAAAADPDSV1SupBKKnHzKSkng0ldUrqQSipU1IPlWSclyHTN4uRFzJfiZL6jjIpqQcgk5J6EErqlNSDUFIvXkn9P9OF+6VxbC6DAAAAAElFTkSuQmCC\""],"sourceRoot":""}