/**
* Единая точка работы с Leaflet для карт МЕРЫ.
*
* До этого модуля loadLeaflet() и константы LEAFLET_* были дословно
* скопированы в шести компонентах (MapCard, MapPicker, SaleShareMap,
* v2/HeroBar, v2/ParamsPanel, v2/SourcesMap). Копии разъезжались: правку
* атрибуции или версии приходилось вносить шесть раз, и любая пропущенная
* копия молча оставалась со старым поведением. Здесь один источник правды.
*
* Leaflet по-прежнему грузится с CDN (unpkg) с SRI-хэшами, а не как npm-дep —
* это сознательный статус-кво, менять его отдельной задачей.
*/
/* eslint-disable @typescript-eslint/no-explicit-any -- интероп с CDN-библиотекой Leaflet (window.L без типов) */
export const LEAFLET_VER = "1.9.4";
export const LEAFLET_CSS = `https://unpkg.com/leaflet@${LEAFLET_VER}/dist/leaflet.css`;
export const LEAFLET_JS = `https://unpkg.com/leaflet@${LEAFLET_VER}/dist/leaflet.js`;
export const LEAFLET_CSS_SRI = "sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY=";
export const LEAFLET_JS_SRI = "sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo=";
/** Тайлы OSM (стандартный слой). */
export const OSM_TILE_URL = "https://tile.openstreetmap.org/{z}/{x}/{y}.png";
/** Максимальный зум стандартного слоя OSM. */
export const OSM_MAX_ZOOM = 19;
/**
* Атрибуция тайлов OSM — обязательна по ODbL и Attribution Guidelines OSMF.
*
* Раньше во всех картах стояло просто "© OpenStreetMap": без ссылки на
* лицензию и без слова contributors, то есть требованиям не соответствовало.
* Guidelines требуют кредит «© OpenStreetMap contributors» со ссылкой на
* https://www.openstreetmap.org/copyright; само имя OpenStreetMap переводить
* нельзя, поэтому строка остаётся в канонической английской форме.
*
* Вставляется Leaflet'ом через innerHTML контрола атрибуции, поэтому это
* намеренно HTML. Строка — константа модуля, пользовательского ввода в ней
* нет.
*/
export const OSM_ATTRIBUTION =
'© OpenStreetMap contributors';
/**
* Подгружает Leaflet с CDN ровно один раз на страницу, резолвит window.L.
*
* Повторные вызовы либо сразу отдают уже готовый window.L, либо подписываются
* на load уже висящего в DOM