{{/*
    Recursively render an ordered or unordered list from a set of arbitrarily-
    deeply-nested items.

    @params all_pages  All site pages
    @params locations   All locations
*/}}

<script>
    var map = L.map('map', {
        fullscreenControl: true
    }).setView([55, -3], 3);

    L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
        maxZoom: 19,
        attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>'
    }).addTo(map);

    {{- $locations := partialCached "util/get_location_leaf_nodes.html" .locations -}}

    {{/*
    {{- range .Site.AllPages -}}
        {{- with .Params.locations -}}
            {{- range . -}}
                {{- with ( index $locations ( replaceRE `, [A-Z]+` "" . ) ) -}}
                    L.marker([{{ .lat }}, {{ .lon }}]).addTo(map);
            {{- end -}}
            {{- end -}}
        {{- end -}}
    {{- end -}}
    */}}

    L.heatLayer(
        [
        {{- range .all_pages -}}
            {{- with .Params.locations -}}
                {{- range . -}}
                    {{- with ( index $locations ( replaceRE `, [A-Z]+` "" . ) ) -}}
                        [ {{ .lat }}, {{ .lon }} ],
                    {{- end -}}
                {{- end -}}
            {{- end -}}
        {{- end -}}
        ],
        {
            minOpacity: 0.5,
            gradient: {0.1: 'blue', 0.3: 'lime', 0.8: 'orange', 1: 'red'}
        }
    ).addTo(map);
</script>