async function initYandexMap(mapField) {
   await ymaps3.ready;

   if (!ymaps3) return;

   const { YMap, YMapDefaultSchemeLayer, YMapDefaultFeaturesLayer, YMapMarker } = ymaps3;

   const coords = JSON.parse(mapField.dataset.coords);
   const markerSrc = mapField.dataset.markerSrc;

   const offsetLat = -0.08; // сдвиг центра вниз на 0.08 градуса
   const adjustedCenter = [coords[0], coords[1] + offsetLat];

   const map = new YMap(
      mapField,
      {
         location: {
            center: adjustedCenter,
            zoom: 10,
            margin: [0, 0, 0, 550],
         },
      },
      [new YMapDefaultSchemeLayer(), new YMapDefaultFeaturesLayer()],
   );

   // ---- Маркер ----
   const markerContainer = document.createElement("div");
   markerContainer.className = "marker-container";

   markerContainer.style.position = "relative";

   const img = document.createElement("img");
   img.src = markerSrc;
   img.style.width = "100%"; // подгоняем под контейнер
   img.style.height = "100%";
   img.className = "custom-marker";

   markerContainer.appendChild(img);

   map.addChild(
      new YMapMarker(
         {
            coordinates: coords,
         },
         markerContainer,
      ),
   );
}

// ---- Автоинициализация всех карт ----

function initMaps() {
   const maps = document.querySelectorAll(".map-field");

   maps.forEach((map) => {
      initYandexMap(map);
   });
}

// ---- Запуск после загрузки API ----

function waitForYandexApi() {
   if (typeof ymaps3 === "undefined") {
      console.warn("Ждём загрузки Yandex Maps API...");
      setTimeout(waitForYandexApi, 100);
      return;
   }
   initMaps();
}

export { waitForYandexApi };
