@mapwise/core
v1.0.6
Published
MapWise headless map engine
Readme
@mapwise/core
Headless map engine for MapWise.
Philosophy
No UI. No shadcn. No DOM assumptions except the map container.
This package provides the core engine for map management without any UI opinions.
Features
- 🗺️ Map Management - Create, destroy, and manage MapLibre instances
- 📦 Layer Registry - Add, remove, reorder, and serialize layers
- 🔌 Plugin System - Extensible plugin architecture
- 🎯 Event Bus - Typed pub/sub for internal communication
- ⚛️ React Bindings - Context and hooks for React integration
- 💾 Persistence - Serialize and hydrate map state
Installation
pnpm add @mapwise/coreUsage
Vanilla TypeScript
import { createMap, layerRegistry, eventBus } from "@mapwise/core";
// Create map
const container = document.getElementById("map");
const map = createMap(container, {
style: "https://demotiles.maplibre.org/style.json",
center: [0, 0],
zoom: 2,
});
// Add a layer
layerRegistry.add({
type: "geojson",
name: "My Layer",
visible: true,
opacity: 1,
data: myGeoJson,
});
// Listen to events
eventBus.on("layer:added", ({ layer }) => {
console.log("Layer added:", layer.name);
});React
import { MapProvider, useMap, useLayerState } from "@mapwise/core";
function App() {
return (
<MapProvider options={{ style: "..." }}>
<LayerPanel />
</MapProvider>
);
}
function LayerPanel() {
const { ready } = useMap();
const { layers } = useLayerState();
if (!ready) return <div>Loading...</div>;
return (
<ul>
{layers.map((layer) => (
<li key={layer.id}>{layer.name}</li>
))}
</ul>
);
}API Reference
Map
createMap(container, options)- Create a new map instancedestroyMap()- Destroy the current mapmapStore- Non-reactive state storestyleManager- Basemap style managementflyTo(center, options)- Fly to a locationfitBounds(bounds, options)- Fit to bounds
Registry
layerRegistry- Layer managementpluginRegistry- Plugin lifecycle
Events
eventBus.on(event, handler)- Subscribe to eventseventBus.emit(event, payload)- Emit events
React
<MapProvider>- Context provideruseMap()- Access map instanceuseMapReady()- Track ready stateuseLayerState()- Reactive layer state
Persistence
serialize()- Export statehydrate(state)- Restore state
