Goal:
Isolate all Leaflet-specific logic inside a LeafletEngineAdapter
that implements MapEngineAdapter.
Tasks:
- Implement LeafletEngineAdapter
- Move Leaflet map initialization & teardown into adapter
- Move draw/edit controls and event bindings into adapter
- Emit boundary change events to core via adapter callbacks
Acceptance:
- Existing demo behavior remains identical
- No Leaflet imports exist in core modules
- Leaflet adapter fully supports drawing and editing polygons