]> git.openstreetmap.org Git - rails.git/blobdiff - app/assets/javascripts/leaflet.map.js
Initialize I18n and OSM as soon as application.js loads
[rails.git] / app / assets / javascripts / leaflet.map.js
index 401a5d9099c8a1000b7ba77f1f7ac8e93b96e597..7929ea0ac7f33545f34c2a73de64150b1ed0f231 100644 (file)
@@ -32,6 +32,8 @@ L.OSM.Map = L.Map.extend({
           layerOptions.apikey = OSM[value];
         } else if (property === "leafletOsmId") {
           layerConstructor = L.OSM[value];
+        } else if (property === "leafletOsmDarkId" && OSM.isDarkMap() && L.OSM[value]) {
+          layerConstructor = L.OSM[value];
         } else {
           layerOptions[property] = value;
         }
@@ -316,7 +318,7 @@ L.OSM.Map = L.Map.extend({
             if (object.type === "node") {
               return true;
             } else if (object.type === "relation") {
-              if (relationNodes[node.id]) return true;
+              return Boolean(relationNodes[node.id]);
             } else {
               return false;
             }
@@ -386,6 +388,14 @@ L.extend(L.Icon.Default.prototype, {
   }
 });
 
+OSM.isDarkMap = function () {
+  var mapTheme = $("body").attr("data-map-theme");
+  if (mapTheme) return mapTheme === "dark";
+  var siteTheme = $("html").attr("data-bs-theme");
+  if (siteTheme) return siteTheme === "dark";
+  return window.matchMedia("(prefers-color-scheme: dark)").matches;
+};
+
 OSM.getUserIcon = function (url) {
   return L.icon({
     iconUrl: url || OSM.MARKER_RED,