Test Bootstrap
This commit is contained in:
		
							
								
								
									
										70
									
								
								frontend/public/bootstrap.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								frontend/public/bootstrap.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,70 @@ | |||||||
|  | // frontend/public/bootstrap.js | ||||||
|  |  | ||||||
|  | (function() { | ||||||
|  |   // El dominio donde se alojan los widgets | ||||||
|  |   const WIDGETS_HOST = 'https://widgets.eldia.com'; | ||||||
|  |  | ||||||
|  |   // Función para cargar dinámicamente un script | ||||||
|  |   function loadScript(src) { | ||||||
|  |     return new Promise((resolve, reject) => { | ||||||
|  |       const script = document.createElement('script'); | ||||||
|  |       script.type = 'module'; | ||||||
|  |       script.src = src; | ||||||
|  |       script.onload = resolve; | ||||||
|  |       script.onerror = reject; | ||||||
|  |       document.head.appendChild(script); | ||||||
|  |     }); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   // Función para cargar dinámicamente una hoja de estilos | ||||||
|  |   function loadCSS(href) { | ||||||
|  |     const link = document.createElement('link'); | ||||||
|  |     link.rel = 'stylesheet'; | ||||||
|  |     link.href = href; | ||||||
|  |     document.head.appendChild(link); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   // Función principal | ||||||
|  |   async function initWidgets() { | ||||||
|  |     try { | ||||||
|  |       // 1. Obtener el manifest.json para saber los nombres de archivo actuales | ||||||
|  |       const response = await fetch(`${WIDGETS_HOST}/manifest.json`); | ||||||
|  |       if (!response.ok) { | ||||||
|  |         throw new Error('No se pudo cargar el manifest de los widgets.'); | ||||||
|  |       } | ||||||
|  |       const manifest = await response.json(); | ||||||
|  |  | ||||||
|  |       // 2. Encontrar el punto de entrada principal (nuestro main.tsx) | ||||||
|  |       const entryKey = Object.keys(manifest).find(key => manifest[key].isEntry); | ||||||
|  |       if (!entryKey) { | ||||||
|  |         throw new Error('No se encontró el punto de entrada en el manifest.'); | ||||||
|  |       } | ||||||
|  |        | ||||||
|  |       const entry = manifest[entryKey]; | ||||||
|  |       const jsUrl = `${WIDGETS_HOST}/${entry.file}`; | ||||||
|  |        | ||||||
|  |       // 3. Cargar el CSS si existe | ||||||
|  |       if (entry.css && entry.css.length > 0) { | ||||||
|  |         entry.css.forEach(cssFile => { | ||||||
|  |           const cssUrl = `${WIDGETS_HOST}/${cssFile}`; | ||||||
|  |           loadCSS(cssUrl); | ||||||
|  |         }); | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       // 4. Cargar el JS principal y esperar a que esté listo | ||||||
|  |       await loadScript(jsUrl); | ||||||
|  |  | ||||||
|  |       // 5. Una vez cargado, llamar a la función de renderizado | ||||||
|  |       if (window.MercadosWidgets && typeof window.MercadosWidgets.render === 'function') { | ||||||
|  |         window.MercadosWidgets.render(); | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |     } catch (error) { | ||||||
|  |       console.error('Error al inicializar los widgets de mercados:', error); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   // Iniciar todo el proceso | ||||||
|  |   initWidgets(); | ||||||
|  |  | ||||||
|  | })(); | ||||||
| @@ -1,10 +1,10 @@ | |||||||
| import { defineConfig } from 'vite' | import { defineConfig } from 'vite' | ||||||
| import react from '@vitejs/plugin-react' | import react from '@vitejs/plugin-react' | ||||||
|  |  | ||||||
| // https://vite.dev/config/ |  | ||||||
| export default defineConfig({ | export default defineConfig({ | ||||||
|   plugins: [react()], |   plugins: [react()], | ||||||
|   // Eliminamos por completo la sección 'build'. |   build: { | ||||||
|   // Dejamos que Vite use su configuración por defecto, que es la mejor |     outDir: 'dist', | ||||||
|   // para generar archivos con hashes únicos para invalidación de caché. |     manifest: true, // Esto es crucial, debe estar en true | ||||||
|  |   } | ||||||
| }) | }) | ||||||
		Reference in New Issue
	
	Block a user