Skip to content

Guard against zero/NaN tick in _lines() when container has zero dimensions - #8

Open
HughF wants to merge 1 commit into
jieter:masterfrom
HughF:fix/tick-nan-guard
Open

HughF wants to merge 1 commit into
jieter:masterfrom
HughF:fix/tick-nan-guard

Conversation

@HughF

@HughF HughF commented Apr 19, 2026

Copy link
Copy Markdown

Problem

When a Leaflet map is initialised inside a hidden container (e.g. a jQuery UI tab, Bootstrap tab, or modal), map.getSize() returns {x:0, y:0}. This causes _tickRange() to compute tick = 0 or NaN, which in turn makes _lines() return an unbounded or degenerate line array — resulting in no grid being rendered, and in some cases a hang or excessive paint time.

Fix

Add an early return in _lines() before the loop:

if (!tick || !isFinite(tick)) { return []; }

This is a no-op for normal usage. It only fires when ticks is 0 or the bounds produce a degenerate range, making the function safe to call regardless of container visibility.

Reproducer

Initialise an L.Grid layer on a map inside a hidden jQuery UI tab. Open the tab (triggering invalidateSize()). Without this fix, the grid does not render. With it, the grid renders correctly once the container is visible.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant