JSR's score docked "module docs in all entrypoints" and "docs for most
symbols" (0% documented). This adds:
- `@module` doc comments to `src/index.ts` and `src/elements/index.ts`
- JSDoc on every top-level exported symbol reachable from those entrypoints:
all `props.ts` types + codec factories, the `WithProps` mixin and its
types, the `register.ts` events and `emit*` helpers, the `shared-props.ts`
fragments and structural interfaces, every `event-types.ts` family, and all
25 `Leaflet*Element` classes
- field-level docs on the `PropDef` and `LeafletElement` interfaces
Existing `//` explanations were converted in place; no behaviour change.
`jsr publish --dry-run` still clean; typecheck / lint / test / build pass.
Every component is now two modules sharing a basename:
- src/elements/leaflet-foo.ts -- `export default class LeafletFooElement
extends WithProps(...)`, the class only, no customElements.define, no
side effects. src/elements/index.ts is an order-free barrel.
- src/components/leaflet-foo.ts -- three lines: import the class, define
the tag, re-export. Importing this (or src/index.ts) registers the tag.
Plugin authors can now import a class without triggering the built-in
define, to subclass it or register it under a different tag name. Package
subpath exports `leaflet-components/elements`,
`leaflet-components/elements/leaflet-foo.js`, and
`leaflet-components/components/leaflet-foo.js` map onto dist/; jsr.json
gains an `./elements` entry.
The load-bearing ordering moves from the export statements in src/index.ts
to its `./components/*` side-effect imports (the elements barrel carries no
define, so its order is free). Classes are renamed LeafletFoo ->
LeafletFooElement, including in the HTMLElementTagNameMap augmentation.
Docs (CLAUDE.md, docs/, README.md) updated for the new layout.