{"version":3,"sources":["libs/Rest.js","libs/Firebase.js","App.js","serviceWorker.js","index.js","images/logo.svg","images/borde_interno.svg","images/su_salud_nos_mueve.svg"],"names":["SERVER","window","location","protocol","concat","hostname","get","url","a","fetch","then","res","status","json","error","resJson","catch","er","response","get_productos","get_producto","id","firebaseConfig","apiKey","authDomain","databaseURL","projectId","storageBucket","messagingSenderId","appId","ask_permisions","fb_token","messaging","firebase","usePublicVapidKey","requestPermission","getToken","token","method","headers","Authorization","console","log","onMessage","payload","notificationTitle","notification","title","notificationOptions","body","icon","badge","vibrate","noscreen","Notification","err","strLike","b","toUpperCase","indexOf","buscarProducto","texto","producto","nombre","principio_activo","indicaciones","i","glosario","keywords","detalle","App","props","exact","path","component","React","Component","Buscador","buscar","state","busqueda","productos","newItemsTemp","newItems","map","item","pos","push","sort","length","NotificationManager","warning","setState","productos_buscados","buscarChange","e","target","value","clearTimeout","timeout","setTimeout","this","className","src","logo","height","alt","borde_interno","style","verticalAlign","type","onChange","placeholder","prod","key","to","borderLeft","linea","color","nombre_publico","Producto","presentaciones","match","params","cursor","size","Container","as","ListGroup","variant","Item","ReactHtmlParser","posologia","contraindicaciones","fluid","Row","Col","presentacion","Footer","position","bottom","zIndex","background","boxShadow","href","su_salud_nos_mueve","isLocalhost","Boolean","registerValidSW","swUrl","config","navigator","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller","onUpdate","onInstall","initApp","useServiceWorker","library","add","fas","far","fab","ReactDOM","render","document","getElementById","URL","process","origin","addEventListener","contentType","ready","unregister","reload","checkValidServiceWorker","onSuccess","info","module","exports"],"mappings":"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","file":"static/js/main.be444b15.chunk.js","sourcesContent":["const protocol = window.location.protocol\r\nconst slashes = protocol.concat(\"//\")\r\nconst host = slashes.concat(window.location.hostname)\r\n\r\nexport const SERVER = host+\"/servicios/\"\r\n\r\nasync function get(url){\r\n const response = await fetch(SERVER+url).then(function(res){\r\n if(res.status === 200){\r\n return res.json()\r\n }\r\n return {error:\"Error\"}\r\n }).then(function(resJson){\r\n return resJson\r\n })\r\n .catch(function(er){\r\n return {error:er,url:SERVER+url}\r\n })\r\n return response\r\n}\r\n\r\nasync function post(url,data){\r\n var opts = { method: 'POST',\r\n headers:{\r\n \"Content-Type\":\"application/json\"\r\n },\r\n body: JSON.stringify(data) }\r\n const response = await fetch(SERVER+url,opts).then(function(res){\r\n if(res.status === 200){\r\n return res.json()\r\n }\r\n return false\r\n }).then(function(resJson){\r\n return resJson\r\n })\r\n .catch(function(er){\r\n console.error(er)\r\n return false\r\n })\r\n return response\r\n}\r\n\r\nexport async function get_productos(){\r\n return await get(\"index.php/rest/acrosearch/mini_vademecum/\")\r\n}\r\n\r\nexport async function get_producto(id){\r\n return await get(\"index.php/rest/acrosearch/mini_vademecum/\"+id)\r\n}\r\n","import * as firebase from \"firebase/app\"\r\nimport \"firebase/messaging\"\r\n\r\nconst firebaseConfig = {\r\n apiKey: \"AIzaSyCU1hAWbxqp_XVZCFA3ggpISy6u8bH2WSY\",\r\n authDomain: \"mini-vademecum.firebaseapp.com\",\r\n databaseURL: \"https://mini-vademecum.firebaseio.com\",\r\n projectId: \"mini-vademecum\",\r\n storageBucket: \"mini-vademecum.appspot.com\",\r\n messagingSenderId: \"678722192577\",\r\n appId: \"1:678722192577:web:42174cfe276c31e5b80040\"\r\n}\r\n\r\nexport function registerValidSW(registration){\r\n console.log(\"Register Firebase SW\")\r\n firebase.initializeApp(firebaseConfig)\r\n firebase.messaging().useServiceWorker(registration)\r\n}\r\n\r\nexport function ask_permisions(){\r\n if(!window.fb_token){\r\n const messaging = firebase.messaging()\r\n messaging.usePublicVapidKey(\"BMe40q57q4f5SinUzxgF0lC4X4w4sx1yf6e6G2S_L0g1Jc7GWNfmBuYR2RVm4jjfg2-j3UwygLcV0euUN3ppVVU\")\r\n return messaging.requestPermission()\r\n .then(async function() {\r\n const token = await messaging.getToken()\r\n fetch(\"https://iid.googleapis.com/iid/v1/\"+token+\"/rel/topics/all\",{method:\"post\",headers:{Authorization:\"key=AAAAngb-xME:APA91bFktHsyDkbyknT3fiPC-eL93spfcX64CqV8ORU8zHr5jWNf_XebgjSJt9ArwsR4aPyWtI-D-C5l9ospZIg8sekDF0N1t0LkbWaYEsxjFJeN8CplXZXZ1hNLHiAIvuihupKqm0kX\"}})\r\n window.fb_token = token\r\n console.log(\"Firebase Token: \",token)\r\n messaging.onMessage((payload) => {\r\n const notificationTitle = payload.notification.title;\r\n const notificationOptions = {\r\n body: payload.notification.body,\r\n icon: payload.notification.icon,\r\n badge: payload.notification.icon,\r\n vibrate: [200, 100, 200, 100, 200, 100, 200],\r\n noscreen: true\r\n }\r\n return new Notification(notificationTitle,notificationOptions)\r\n })\r\n return token\r\n })\r\n .catch(function(err) {\r\n console.log(\"Error al aprovar notificaciones\", err)\r\n return false\r\n })\r\n }\r\n}\r\n","import React from 'react';\nimport {NotificationManager} from 'react-notifications'\nimport {HashRouter as Router,Switch,Link,Route} from \"react-router-dom\"\nimport {Container,Row,Col,Form,InputGroup,Button,ListGroup} from \"react-bootstrap\"\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport {get_productos,get_producto,SERVER} from \"./libs/Rest\"\nimport ReactHtmlParser from 'react-html-parser'\nimport logo from \"./images/logo.svg\"\nimport borde_interno from \"./images/borde_interno.svg\"\nimport {ask_permisions} from \"./libs/Firebase\"\nimport su_salud_nos_mueve from \"./images/su_salud_nos_mueve.svg\"\n\nfunction strLike(a,b){\n return a.toUpperCase().indexOf(b.toUpperCase())>=0\n}\n\nfunction buscarProducto(texto,producto){\n if(producto.nombre && strLike(producto.nombre,texto)){\n return 0\n }\n if(producto.principio_activo && strLike(producto.principio_activo,texto)){\n return 1\n }\n if(producto.indicaciones && strLike(producto.indicaciones,texto)){\n return 2\n }\n for(let i in producto.glosario){\n if(producto.glosario[i].keywords && strLike(producto.glosario[i].keywords,texto)){\n return 4\n }\n if(producto.glosario[i].detalle && strLike(producto.glosario[i].detalle,texto)){\n return 4\n }\n }\n return -1\n}\n\nexport default class App extends React.Component {\n\n constructor(props){\n super(props)\n }\n\n render(){\n return (\n \n \n } />\n } />\n \n \n )\n }\n}\n\nclass Buscador extends React.Component{\n\n constructor(props){\n super(props)\n this.state = {\n productos: [],\n productos_buscados: []\n }\n }\n\n async componentDidMount(){\n const productos = await get_productos()\n this.setState({productos,productos_buscados:productos})\n ask_permisions()\n }\n\n buscar = async () => {\n const {busqueda,productos} = this.state\n const newItemsTemp = []\n const newItems = []\n productos.map(item => {\n let pos = buscarProducto(busqueda,item)\n if(pos!==-1){\n newItemsTemp.push({pos,item})\n }\n })\n const itemsSorted = newItemsTemp.sort((a, b) => a.pos - b.pos)\n itemsSorted.map(({item}) => {\n newItems.push(item)\n })\n if(newItems.length<=0){\n NotificationManager.warning(\"No existen registros para su consulta\")\n }\n this.setState({productos_buscados:newItems})\n }\n\n buscarChange = async e => {\n await this.setState({busqueda:e.target.value})\n clearTimeout(this.timeout)\n this.timeout = setTimeout(() => this.buscar(),300)\n }\n\n render(){\n const {productos,productos_buscados,busqueda} = this.state\n return (\n
\n
\n \"\"\n
\n \"\"\n \n
\n
\n {\n productos_buscados.map((prod,i)=>(\n \n
\n Línea {prod.linea.nombre_publico}\n
{prod.nombre}
\n {prod.principio_activo}\n
\n \n ))\n }\n
\n )\n }\n\n}\n\nclass Producto extends React.Component{\n\n constructor(props){\n super(props)\n this.state = {\n producto: {presentaciones:[],linea:{}}\n }\n }\n\n async componentDidMount(){\n const {id} = this.props.match.params\n const producto = await get_producto(id)\n this.setState({producto})\n }\n\n render(){\n const {producto} = this.state\n return (\n
\n
\n \n \n
\n {\n producto.logo?\n {producto.nombre}\n :\n

{producto.nombre}

\n }\n
\n \n
\n
\n \n \n \n Principio Activo:
\n {ReactHtmlParser(producto.principio_activo)}\n
\n \n Línea:
\n {ReactHtmlParser(producto.linea.nombre_publico)}\n
\n {producto.indicaciones?\n Indicaciones:
\n {ReactHtmlParser(producto.indicaciones)}\n
:null}\n {producto.posologia?\n Posología:
\n {ReactHtmlParser(producto.posologia)}\n
:null}\n {producto.contraindicaciones?\n Contraindicaciones: \n {ReactHtmlParser(producto.contraindicaciones)}\n :null}\n
\n
\n \n \n \n

Presentaciones:

\n \n
\n
\n \n \n {\n producto.presentaciones.map((presentacion,i) => (\n \n {presentacion.nombre}\n \n ))\n }\n \n \n
\n
\n )\n }\n}\n\nconst Footer = () => (\n \n)\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n console.error(\"Diferent origin\")\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/sw.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(registration => {\n if (config && config.onSuccess) {\n config.onSuccess(registration)\n }\n });\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onInstall) {\n config.onInstall(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' }\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import React from 'react'\nimport ReactDOM from 'react-dom'\nimport './index.css'\nimport 'animate.css'\nimport 'bootstrap/dist/css/bootstrap.min.css'\nimport 'react-notifications/lib/notifications.css';\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { fas } from '@fortawesome/free-solid-svg-icons'\nimport { far } from '@fortawesome/free-regular-svg-icons'\nimport { fab } from '@fortawesome/free-brands-svg-icons'\nimport App from './App'\nimport * as serviceWorker from './serviceWorker'\nimport {init,registerValidSW} from './libs/Firebase'\nimport {NotificationContainer,NotificationManager} from 'react-notifications'\n\n\nserviceWorker.register({\n onUpdate: setSwEventsUpdate,\n onSuccess: initApp\n})\n\nfunction setSwEventsUpdate(registration){\n if(registration){\n NotificationManager.info(\n \"Se ha actualizado la app, por favor cierre todas las pestañas de su navegador o reinicie la aplicación\",\n \"App actualizada\",\n 3000,\n () => window.location.reload(true)\n )\n }\n window.setTimeout(() => window.location.reload(true),3000)\n initApp(registration)\n}\n\nfunction initApp(registration){\n registerValidSW(registration)\n library.add(fas,far,fab)\n ReactDOM.render(
, document.getElementById('root'))\n}\n","module.exports = __webpack_public_path__ + \"static/media/logo.025ba245.svg\";","module.exports = __webpack_public_path__ + \"static/media/borde_interno.4fb3bc4d.svg\";","module.exports = __webpack_public_path__ + \"static/media/su_salud_nos_mueve.103691b9.svg\";"],"sourceRoot":""}