diff --git a/assets/js/leaflet-global.js b/assets/js/leaflet-global.js new file mode 100644 index 0000000..07b2622 --- /dev/null +++ b/assets/js/leaflet-global.js @@ -0,0 +1,7 @@ +// Sets window.L from the imported leaflet module. +// Required because esbuild bundles everything in a "use strict" IIFE, +// causing the leaflet UMD to take the CommonJS path instead of setting +// window.leaflet. Plugins and hooks expect window.L to exist. +import * as leafletModule from "../vendor/js/leaflet-minimal.js"; + +window.L = leafletModule; diff --git a/assets/js/map-bundle-entry.js b/assets/js/map-bundle-entry.js index 5bda1cb..a8ff395 100644 --- a/assets/js/map-bundle-entry.js +++ b/assets/js/map-bundle-entry.js @@ -1,11 +1,9 @@ -// Map bundle entry point - combines Leaflet and map plugins -import "../vendor/js/leaflet-minimal.js"; +// Map bundle entry point — combines Leaflet and map plugins. +// +// ESM evaluates side-effect imports in source order, so leaflet-global.js +// runs (and sets window.L) before plugins-optimized.js, which references L. +import "./leaflet-global.js"; import "../vendor/js/plugins-optimized.js"; -// Ensure Leaflet is available as window.L (standard convention) -if (window.leaflet && !window.L) { - window.L = window.leaflet; -} - // Mark bundle as loaded -window.mapBundleLoaded = true; \ No newline at end of file +window.mapBundleLoaded = true;