Novedades
Esta página lista los cambios que afectan a los integradores en cada versión estable de @mapvx/web-components-ssr, de la más reciente a la más antigua. Las versiones 0.x se publicaron como @mapvx/website-component: consulta Migrar desde 0.x.
En todas las versiones 1.x, la etiqueta <mapvx-website>, los nombres y valores predeterminados de sus atributos, sus dos eventos (userAction y cardSelected) y sus datos, y el formato de initial-data se mantuvieron iguales. Los cambios de comportamiento se indican en cada versión.
¿Actualizas desde 1.2.x o una versión anterior? 1.3.0 cambió la forma en que se debe cargar main.js. Las páginas que lo cargan con una etiqueta <script> clásica dejan de mostrar el componente.
Canales de publicación
# Versión estable (tag "latest" de npm), fijada a la versión exacta
npm install --save-exact @mapvx/web-components-ssr@1.6.1
# Versión preliminar (tag "dev" de npm), solo para pruebas
npm install @mapvx/web-components-ssr@dev
# Muestra los tags actuales y todas las versiones publicadas
npm view @mapvx/web-components-ssr dist-tags
npm view @mapvx/web-components-ssr versions| Tag de npm | A qué apunta | Para qué usarlo |
|---|---|---|
latest | La versión estable más reciente (1.6.1). | Producción, con la versión fijada |
dev | Versiones preliminares con sufijo -dev.N, como 1.6.1-dev.1. Puede apuntar a una versión más antigua que latest. | Probar cambios antes de una versión estable |
rc | 1.0.0-rc.1, una versión candidata anterior a 1.0.0. El tag no se ha movido desde entonces. | Nada |
Fija la versión exacta que probaste, en npm y en las URL de CDN (@1.6.1, no @latest). Los nombres de los archivos chunk que carga main.js pueden cambiar de una versión a otra, y jsDelivr permite que los navegadores guarden @latest en caché hasta 7 días, así que una versión flotante puede combinar un main.js antiguo con archivos de una versión más nueva.
La lista completa de versiones está en la página de versiones de npm . El helper de SSR, @mapvx/web-components-ssr-helpers, tiene su propia numeración de versiones; su versión actual es 0.1.1.
1.6.1
Publicada el 2026-08-17.
Correcciones
- El edificio al que entra el mapa de un hub o de un centro comercial ya no aparece como un lugar dentro de sí mismo en la cuadrícula, en los resultados de búsqueda ni en los selectores de origen y destino de la ruta. Un enlace profundo
?destination=<building id>sigue abriendo la pantalla de ruta hacia ese edificio (Enlaces profundos). - Las rutas dentro de un edificio ya no quitan del mapa el plano interior del edificio mientras se anima la ruta.
1.6.0
Publicada el 2026-08-15.
Funciones nuevas
- La elección del visitante entre Grid View y Map View ahora se conserva al recargar la página. Se guarda en
localStoragecon la clavemapvx:active-view(valorgridomap) cada vez que el visitante cambia de vista. Los errores de almacenamiento, por ejemplo en la navegación privada, se ignoran.
Cambios incompatibles o acción requerida
- Cambio de comportamiento: una elección guardada tiene prioridad sobre el atributo
default-to-map, que ahora solo decide la primera vista para los visitantes que nunca cambiaron de vista. La clave es por origen, así que se aplica a cada<mapvx-website>y a cada institución de tu sitio. Si una página siempre debe abrir en la vista que fijadefault-to-map, borra la clave antes de que cargue el bundle. Esto también descarta la elección de los visitantes que regresan. Consulta Vista recordada.
<script>
try { localStorage.removeItem('mapvx:active-view') } catch (e) {}
</script>
<script type="module" src="https://unpkg.com/@mapvx/web-components-ssr@1.6.1/dist/browser/main.js"></script>
<mapvx-website api-key="YOUR_API_KEY" institution-id="YOUR_INSTITUTION_ID" default-to-map="true"></mapvx-website>1.5.4
Publicada el 2026-08-15.
Correcciones
- Corrige un mapa en blanco en la primera carga de Map View dentro de hosts con renderizado en el servidor, como Next.js o Angular SSR, donde el contenedor del mapa medía 0 px cuando se creaba el mapa. Ahora el mapa se redimensiona en cuanto su contenedor tiene dimensiones reales, y el elemento del mapa ocupa toda la altura del área de mapa del componente. Consulta El mapa queda en blanco.
1.5.3
Publicada el 2026-08-15.
Correcciones
- Elimina un
Uncaught (in promise) Error: Map not createdque las versiones 1.4.1 a 1.5.2 podían mostrar en la consola de tu página, y reportar a tu propio sistema de seguimiento de errores, cuando el componente entraba a un edificio antes de que se creara el mapa. Un intento posterior para el mismo edificio ahora también carga bien su plano.
1.5.2
Publicada el 2026-08-15.
Correcciones
- La primera carga de Map View ya no muestra el mapa base exterior sin el plano del edificio hasta que el visitante sale y vuelve. La pantalla de inicio ahora espera el plano antes de fijar el piso y la cámara.
1.5.1
Publicada el 2026-08-15.
Correcciones
- Ahora aparecen los íconos de baños accesibles y de ascensores agregados en 1.5.0. Se asocian a las categorías
restroomyEntrance Elevator.
1.5.0
Publicada el 2026-08-14.
Funciones nuevas
- Nuevos íconos en los marcadores del mapa y en los perfiles de lugar para las categorías “Parking pay station”, “Accessible entrance”, baños accesibles y ascensores. En 1.5.0 los íconos de baños y ascensores mostraban el ícono predeterminado; 1.5.1 los corrige.
- La versión de Angular incluida se actualiza a 22.1.2.
1.4.1
Publicada el 2026-08-14.
Correcciones
- Los mapas interiores vuelven a mostrarse. Al entrar a un edificio ahora se carga su plano; antes, el mapa mantenía el estilo exterior o el del edificio anterior, un problema presente desde 0.13.4. Una ruta ahora espera a que el plano termine de cargar, así que el cambio de plano ya no puede borrar la ruta, y el perfil del lugar muestra los pisos del edificio correcto.
- La barra de pestañas de categorías se oculta cuando “All” es su única opción.
1.4.0
Publicada el 2026-08-13.
Funciones nuevas
- El botón “Start Route” de la pantalla de ruta ahora funciona. Inicia una ruta paso a paso con un control “Next step” en el mapa, y un banner sobre los detalles de la ruta muestra la instrucción del paso actual.
- El panel de información de la ruta muestra los pisos por los que pasa la ruta, por ejemplo “Level 1 → Level 3”, más “Elevator” cuando todos los cambios de piso son en ascensor.
- TypeScript: el enum
AnimationStatesumaStepping = 4. Es el último miembro, así que los valores existentes (NotStarted = 0aFinished = 3) conservan su número. Consulta Otros modelos.
Correcciones
- Los pisos se rotulan “Level N” a partir del número de nivel del piso, en lugar del nombre sin traducir del sistema de contenidos (como “Piso”). El selector de pisos se oculta en edificios de un solo piso.
- Cambiar el origen de la ruta borra la ruta dibujada antes, y una petición de ruta anterior y lenta ya no puede dibujarse sobre la actual.
1.3.0 (requiere acción)
Publicada el 2026-08-13.
1.3.0 se publicó como versión menor, pero cambia la forma en que carga el bundle. Antes de actualizar desde 1.2.x o una versión anterior, carga main.js como módulo, sirve los nuevos archivos chunk y revisa CORS, como se describe a continuación.
Cambios incompatibles o acción requerida
main.jsahora es un módulo ES. Cárgalo con<script type="module">. Como script clásico (con o sindefer, como mostraba la documentación anterior), el análisis del script falla (Chromium informaSyntaxError: Unexpected token 'export'; otros navegadores lo expresan de otra forma), el elemento nunca se define y queda vacío, y no aparece ningún otro error. Los scripts de módulo se difieren automáticamente, así quedeferya no es necesario. Consulta Unexpected token ‘export’.
<!-- 1.2.x y anteriores -->
<script src="/mapvx-website/main.js" defer></script>
<!-- 1.3.0 y posteriores -->
<script type="module" src="/mapvx-website/main.js"></script>- El paquete ahora publica archivos
chunk-*.jsjunto amain.js, ymain.jslos carga a demanda por ruta relativa. Si alojas los archivos tú mismo, copia todos los archivos.jsdedist/browsermásstyles.cssen un mismo directorio y conserva los nombres originales, incluidomain.js: cada chunk importa./main.jscon ese nombre. Los nombres de los chunks son hashes de contenido que cambian cada vez que cambia el código del chunk (en 1.5.0, por ejemplo, cambiaron todos), así que reemplaza la carpeta completa en cada actualización en lugar de sobrescribir solomain.js. Consulta Alojamiento propio y Los archivos chunk devuelven 404.
rm -rf public/mapvx-website
mkdir -p public/mapvx-website
cp node_modules/@mapvx/web-components-ssr/dist/browser/*.js node_modules/@mapvx/web-components-ssr/dist/browser/styles.css public/mapvx-website/- Los navegadores descargan los scripts de módulo en modo CORS. Si
main.jsy sus chunks se sirven desde un origen distinto al de tu página (tu propio CDN, por ejemplo), ese origen debe enviar el encabezadoAccess-Control-Allow-Origin. unpkg y jsDelivr ya lo envían. - El SDK de mapas incluido ahora reporta sus propios errores a
https://sentry.mapvx.app, sin tocar elwindow.onerrorde tu página, y ya no contacta a Countly (countly.lazarillo.app) ni a Rollbar (api.rollbar.com). Si tu Content-Security-Policy restringeconnect-src, permitehttps://sentry.mapvx.app. Consulta Reporte de errores y Política con lista de permitidos.
Funciones nuevas
- El filtro de ciudad se agrupa por la ciudad de cada institución, así que un hub o un centro comercial dentro de una ciudad ya no aparece como una ciudad aparte. Cuando
institution-idindica una institución que informa una ciudad (un hub o un centro comercial), solo se ofrece esa ciudad; una institución de nivel ciudad conserva todas las ciudades. El control de ciudad se oculta cuando quedan menos de dos ciudades; antes de 1.3.0 se mostraba con una sola ciudad. - Se ocultan los botones de categoría que llevarían a una cuadrícula vacía. Una categoría se conserva solo si al menos uno de sus lugares es un lugar público devuelto para tu API key, dentro de la opción de ciudad seleccionada cuando el filtro de ciudad está activo. “All” siempre se conserva.
- TypeScript:
InstitutioneInstitutionResponsesuman un campo opcionalcity. Consulta Tipos del SDK de mapas. - El SDK de mapas incluido se actualiza a
@mapvx/web-js3.1.0.
Correcciones
- La cuadrícula inicial y la búsqueda siguen a
institution-id: se limitan a la opción de ciudad que coincide con él (por id de institución y luego por id de filtro). Antes, siempre empezaban en la primera ciudad de la configuración, y solo los filtros de categoría seguían ainstitution-id. Si ninguna opción coincide, se usa la primera. Cambiarinstitution-iddespués de la carga ahora también vuelve a limitar el filtro de ciudad y la cuadrícula; una ciudad que el visitante eligió a mano se mantiene hasta que el atributo vuelva a cambiar. Consultainstitution-id. - El mapa entra o sale de la vista interior de un edificio cada vez que cambia la opción de ciudad seleccionada, también cuando cambia
institution-id. Antes, solo lo hacía un clic en el desplegable de ciudades.
Si el desplegable de ciudades o algunos botones de categoría desaparecieron después de actualizar, lo más probable es que se deba a estas reglas: consulta show-city-filter, show-category-filters y No hay pestañas de categorías, o la ciudad es incorrecta.
1.2.0
Publicada el 2026-07-21.
Funciones nuevas
- Un lugar sin fotos ahora muestra su logo como imagen, en la tarjeta de la cuadrícula y en el perfil. El orden es: primera foto, luego logo y luego la imagen genérica de reemplazo.
1.1.1
Publicada el 2026-07-09.
Correcciones
- Corrige una lista de lugares vacía después de cambiar de vista. Map View muestra menos tarjetas por página que Grid View, así que tiene más páginas; ir a una página que solo existe en Map View y volver a Grid View vaciaba la lista. Ahora la página actual se limita a la última página disponible y se mantiene sincronizada entre ambas vistas.
1.1.0
Publicada el 2026-07-09.
Funciones nuevas
- La petición que carga la lista de instituciones desde la API de MapVX se reintenta hasta 3 veces después del primer intento, con esperas de 1 s, 2 s y 3 s, así que un error de red breve ya no deja vacía la lista de instituciones. El reintento se aplica solo a esta petición.
Correcciones
- Cambiar el atributo
institution-iden tiempo de ejecución ahora espera a que cargue la lista de instituciones, desdeinitial-datao desde la API, en lugar de competir con esa carga.
1.0.1
Publicada el 2026-07-08.
Correcciones
- iOS Safari: el componente ya no da por concedido el permiso de movimiento y orientación antes de que el visitante responda la solicitud, así que la orientación de brújula del marcador de ubicación ahora depende de la respuesta del visitante. Consulta Permisos del navegador.
- El SDK de mapas incluido se actualiza a
@mapvx/web-js1.4.0.
1.0.0
Publicada el 2026-07-03.
Primera versión estable con el nombre @mapvx/web-components-ssr. Conserva la etiqueta, los atributos, los eventos y el formato de initial-data de @mapvx/website-component 0.16.4.
Funciones nuevas
- El paquete incluye declaraciones de TypeScript (
dist/types/public-api.d.ts), con los tipos de datos del SDK de mapas incluidos, así que no necesitas instalar@mapvx/web-js. Impórtalos solo conimport type:main.jsno exporta ninguna API en tiempo de ejecución. Consulta Solo tipos. - El SDK de mapas incluido ahora es el paquete público
@mapvx/web-js(1.2.1). Como antes, va incluido dentro demain.js, así que no hay nada adicional que instalar. - El bundle se compila con Angular 22 (22.0.1; 0.16.4 usaba Angular 20). Angular va incluido dentro de
main.js, así que tu página no lo necesita.
Cambios incompatibles o acción requerida
Aplican cuando pasas desde 0.x; la guía de migración los recorre paso a paso.
- El paquete cambia de nombre de
@mapvx/website-componenta@mapvx/web-components-ssr, y el helper de@mapvx/website-component-helpersa@mapvx/web-components-ssr-helpers. - El CSS base de Font Awesome ahora viene dentro de
styles.css, así que los íconos, incluidos los de los marcadores del mapa, mantienen sus estilos incluso cuando una Content-Security-Policy bloquea los estilos inline. Cargastyles.cssen cada página que muestre el componente. Los estilos propios del componente, y una copia del CSS de Font Awesome, se siguen inyectando como elementos<style>; consulta Nonce para los estilos inyectados. - La clase contenedora de los marcadores del SDK de mapas cambió de
.lazarillo-markera.mapvx-marker. Renombra cualquier CSS de tu página que la use. - El SDK de mapas incluido envía la mayoría de sus peticiones a la API de MapVX a
https://public-api.mapvx.com; 0.16.4 las enviaba ahttps://api.mapvx.com, que 1.x sigue usando para las rutas. Si tu Content-Security-Policy restringeconnect-src, permite ambos hosts (Política con lista de permitidos). package.jsondeclaraengines.nodecomo^22.22.3 || >=24.15.0. Solo importa al instalar; consulta Requisitos.
Migrar desde @mapvx/website-component 0.x
@mapvx/website-component se detuvo en 0.16.4; las nuevas versiones se publican solo como @mapvx/web-components-ssr. La etiqueta <mapvx-website>, los atributos, los eventos userAction y cardSelected y el formato de initial-data no cambian, y los ids de lugar en los eventos y los enlaces profundos siguen siendo los mismos.
Reemplaza ambos paquetes
npm uninstall @mapvx/website-component @mapvx/website-component-helpers
npm install --save-exact @mapvx/web-components-ssr@1.6.1 @mapvx/web-components-ssr-helpers@0.1.1Los archivos dentro del paquete conservan las mismas rutas (dist/browser/main.js y dist/browser/styles.css), así que solo cambia el nombre del paquete en los imports, en los globs de assets (por ejemplo, una entrada de assets en angular.json) y en los scripts de copia.
// Antes (0.x)
import '@mapvx/website-component/dist/browser/styles.css'
import { prepareInitialData } from '@mapvx/website-component-helpers'
// Después (1.x)
import '@mapvx/web-components-ssr/dist/browser/styles.css'
import { prepareInitialData } from '@mapvx/web-components-ssr-helpers'El helper mantiene la misma API, prepareInitialData(apiKey), que resuelve a un string JSON, y el mismo número de versión, 0.1.1. El helper renombrado además corrige un fallo: cuando la API responde con un error (por ejemplo, con una API key inválida o ausente), ahora devuelve null para ese conjunto de datos en lugar de lanzar un SyntaxError que podía hacer caer el renderizado en el servidor. El initial-data generado con el helper anterior sigue funcionando con 1.x. Consulta El paquete helper.
Carga main.js como módulo
Desde 1.3.0, main.js se debe cargar con type="module", cada archivo chunk-*.js debe estar junto a él con su nombre original, y un host de otro origen debe enviar encabezados CORS. Los detalles y un script de copia están en 1.3.0.
<!-- Antes (0.x) -->
<script src="/website-component/main.js" defer></script>
<!-- Después (1.3.0 y posteriores) -->
<script type="module" src="/website-component/main.js"></script>Si cargas el componente desde un CDN, cambia el nombre del paquete en la URL y fija la versión:
<script type="module" src="https://unpkg.com/@mapvx/web-components-ssr@1.6.1/dist/browser/main.js"></script>
<link rel="stylesheet" href="https://unpkg.com/@mapvx/web-components-ssr@1.6.1/dist/browser/styles.css" />Carga styles.css en cada página
En 1.x el CSS base de Font Awesome está en styles.css, junto a la configuración de colores y fuentes y los estilos del mapa que ya contenía. Asegúrate de que cada página que muestra el componente lo cargue. Consulta Contenido del paquete.
Renombra el CSS que modifica los marcadores
El componente no usa Shadow DOM, así que el CSS de tu página puede apuntar a sus marcadores. La clase contenedora de los marcadores cambió en 1.0.0:
/* 0.x */
.lazarillo-marker:has(.selected) {
z-index: 1;
}
/* 1.x */
.mapvx-marker:has(.selected) {
z-index: 1;
}Actualiza tu Content-Security-Policy
Si tu política restringe connect-src, permite https://public-api.mapvx.com, al que el SDK de mapas incluido llama desde 1.0.0, además de https://api.mapvx.com. Desde 1.3.0, permite también https://sentry.mapvx.app, adonde el SDK reporta sus errores; entonces puedes quitar countly.lazarillo.app y api.rollbar.com, que 1.3.0 y las versiones posteriores ya no contactan. La lista completa está en Política con lista de permitidos.
Revisa tu versión de Node.js
package.json declara engines.node como ^22.22.3 || >=24.15.0. Con versiones de Node.js fuera de ese rango (por ejemplo, una 22.x anterior a la 22.22.3, una 23.x o una 24.x anterior a la 24.15.0), npm muestra una advertencia EBADENGINE y pnpm una advertencia Unsupported engine (ambos fallan solo con engine-strict); Yarn 1 falla a menos que pases --ignore-engines. No tiene ningún efecto en los navegadores. npm además instala los paquetes que figuran como dependencias (los paquetes de Angular 22, Font Awesome, ngx-google-analytics, rxjs y tslib), aunque main.js ya los incluye; 0.16.4 hacía lo mismo con Angular 20.