diff --git a/src/components/leaflet-map.ts b/src/components/leaflet-map.ts index a383ca3..cd1a92b 100644 --- a/src/components/leaflet-map.ts +++ b/src/components/leaflet-map.ts @@ -165,6 +165,7 @@ export class LeafletMap extends TypedBase { #cssLink?: HTMLLinkElement; #syncing = false; #mapEventHandlers = new globalThis.Map void>(); + #resizeObserver?: ResizeObserver; static get observedAttributes(): string[] { return [...Object.values(PROPS).map((s) => s.attr), ...CSS_ATTRS]; @@ -241,6 +242,9 @@ export class LeafletMap extends TypedBase { map.setView([lat, lng], zoom); this.#map = map; + this.#resizeObserver = new ResizeObserver(() => this.#map?.invalidateSize()); + this.#resizeObserver.observe(this); + // Register one handler per unique map event, updating all props that share it const groups = new globalThis.Map(); for (const spec of Object.values(PROPS) as PropDef[]) { @@ -270,6 +274,8 @@ export class LeafletMap extends TypedBase { } disconnectedCallback() { + this.#resizeObserver?.disconnect(); + this.#resizeObserver = undefined; this.removeEventListener( 'leaflet-register', this.#handleLeafletRegister as EventListenerOrEventListenerObject,