You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Buddy cd2c8d0fc5 feat(leaflet-map): fit-to-markers view
Add fit-to-markers / fit-padding / fit-max-zoom attributes to <leaflet-map>.
When fit-to-markers is set the map ignores lat/lng/zoom and fitBounds()es a
box around every locatable layer (getLatLng / getBounds); tile layers and
open popups/tooltips are skipped.

The only reframe trigger is a component registering into the tree -- initial
load and later additions. Panning, zooming, opening a popup and removing a
marker all leave the view untouched. Reframes coalesce onto a microtask so
load produces one fitBounds call, not one per marker.
2 weeks ago
..
01-architecture.md chore: packaging polish for 0.1.0 2 weeks ago
02-props-and-attributes.md chore: prep 0.1.0 for npm + JSR publish 2 weeks ago
03-component-tree.md docs: add design docs breaking down architecture and major decisions 3 weeks ago
04-events.md chore: prep 0.1.0 for npm + JSR publish 2 weeks ago
05-special-cases.md feat(leaflet-map): fit-to-markers view 2 weeks ago
06-load-order.md chore: prep 0.1.0 for npm + JSR publish 2 weeks ago
07-tooling-and-build.md chore: packaging polish for 0.1.0 2 weeks ago
README.md refactor: split element classes from customElements.define 2 weeks ago

README.md

Design docs

These describe how leaflet-components is built and why — the load-bearing decisions, in their current form. They are not a usage guide (that's the top-level README.md) and not a working cheat-sheet (that's CLAUDE.md).

Doc Covers
01 — Architecture Element-per-Leaflet-object, the WithProps mixin, the lifecycle it owns
02 — Props & attributes The PropDef model, the codec factories, two-way attribute↔object sync
03 — Component tree & registration The leaflet-register bubbling protocol, attach modes, the other announcement events
04 — Events Re-emitting Leaflet events as leaflet:<type>, and how they're typed
05 — Per-component special cases Where a component does something the mixin can't express generically
06 — Load order Why the ./components/* import order in src/index.ts is load-bearing
07 — Tooling & build TypeScript 7, oxlint, oxfmt, Vitest, the no-bundle build, dual publish

The one-paragraph version

Each leaflet-* custom element wraps exactly one Leaflet object. A mixin (WithProps) generates the element class from a table of property descriptors: it derives observedAttributes, builds the Leaflet options object from the current attributes, calls the component's createLeafletObject(), keeps attributes and the live object in sync in both directions, and re-fires every Leaflet event on the element. Components join each other through a DOM-event registration protocol that bubbles up to <leaflet-map> at the root — no component ever reads another component's state or queries the DOM for its relatives. The build is tsc with no bundler; Leaflet is always external.