/
shappo
/
ui
Обзор
Документация
Войти
/
shappo
/
ui
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
src/maps/types.ts
85 строк
2 KB
Sergey Shappo
feat(map): add horizontal split for compare divider on narrow viewports
05 авг 2026, 22:47
05 авг 2026, 22:47
b3e4d7f
Код
Авторство
О чём код?
import type { LatLngBoundsExpression, LatLngExpression } from "leaflet"; export type MapViewConfig = { center: LatLngExpression; zoom: number; minZoom: number; maxZoom: number; maxBounds?: LatLngBoundsExpression; }; export type TileLayerConfig = { url: string; label: string; attribution: string; maxZoom: number; maxNativeZoom?: number; subdomains?: string[]; }; export type TileLayerId = | "osm" | "pgm" | "verstka1" | "verstka2" | "rkka" | "googleStreet" | "googleSat" | "googleHybrid" | "googleTerrain"; /** Point shown on a map; datasets are owned by the consumer. */ export type MapMarker = { id: string; lat: number; lng: number; title: string; description?: string; }; /** Visual pin style (theme tokens — not domain names). */ export type MapMarkerVariant = "primary" | "accent"; /** * Heatmap sample. Intensity defaults to 1 when omitted. * Prefer this over MapMarker when you only need density, not popups. */ export type MapHeatPoint = { lat: number; lng: number; intensity?: number; }; /** * Compass octant for off-screen point indicators (EdgeMarker / Signposts UX). * Mid-edge and corner placements on the viewport. */ export type MapEdgeDirection = | "n" | "ne" | "e" | "se" | "s" | "sw" | "w" | "nw"; /** * How a secondary basemap is compared with the primary one. * - `opacity` — semi-transparent overlay on top of the base * - `side-by-side` — swipe divider between two layers * (vertical on desktop ≥40rem, horizontal on narrow viewports) */ export type MapCompareMode = "opacity" | "side-by-side"; /** Controlled compare chrome + overlay for LeafletMap. */ export type MapCompareConfig = { /** Secondary layer (typically historical: ПГМ, 3-верстка, РККА). */ overlay: TileLayerId; mode?: MapCompareMode; /** 0–1; used in `opacity` mode. Default 0.55. */ opacity?: number; onOverlayChange?: (id: TileLayerId) => void; onModeChange?: (mode: MapCompareMode) => void; onOpacityChange?: (opacity: number) => void; };