{"version":3,"file":"js/decidim_homepage_interactive_map-550dbc065c7b90951821.js","mappings":"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","sources":["webpack://app/webpack/runtime/chunk loaded","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.4/app/packs/src/decidim/map/svg-icon.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.4/app/packs/src/decidim/map/icon.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-module-homepage_interactive_map-dd685166fdf9/app/packs/src/decidim/homepage_interactive_map/interactive_map.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-module-homepage_interactive_map-dd685166fdf9/app/packs/src/decidim/homepage_interactive_map/scope.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-module-homepage_interactive_map-dd685166fdf9/app/packs/src/vendor/leaflet-polylabel-centroid.js","webpack://app/../usr/local/bundle/gems/decidim-core-0.27.4/app/packs/src/decidim/vendor/leaflet-tilelayer-here.js","webpack://app/../usr/local/bundle/gems/decidim-decidim_awesome-0.10.2/app/packs/src/vendor/jquery.truncate.js","webpack://app/./node_modules/leaflet-svgicon/index.js","webpack://app/./node_modules/leaflet-svgicon/src/svg-icon.js","webpack://app/./node_modules/leaflet-tilelayer-here/leaflet-tilelayer-here.js","webpack://app/./node_modules/leaflet.featuregroup.subgroup/dist/leaflet.featuregroup.subgroup.js","webpack://app/webpack/bootstrap","webpack://app/webpack/runtime/hasOwnProperty shorthand","webpack://app/webpack/runtime/jsonp chunk loading","webpack://app/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/* eslint prefer-reflect: 0 */\n\n// Leaflet-SVGIcon\n// SVG icon for any marker class\n//\n// Copyright (c) 2016 University of New Hampshire - The MIT License\n// Author: Ilya Atkin \n// Originally copied from https://github.com/iatkin/leaflet-svgicon\n//\n\nlet SVGIcon = L.DivIcon.extend({\n options: {\n \"circleText\": \"\",\n \"className\": \"svg-icon\",\n // defaults to [iconSize.x/2, iconSize.x/2]\n \"circleAnchor\": null,\n // defaults to color\n \"circleColor\": null,\n // defaults to opacity\n \"circleOpacity\": null,\n \"circleFillColor\": \"rgb(255,255,255)\",\n // default to opacity\n \"circleFillOpacity\": null,\n \"circleRatio\": 0.5,\n // defaults to weight\n \"circleWeight\": null,\n \"color\": \"rgb(0,102,255)\",\n // defaults to color\n \"fillColor\": null,\n \"fillOpacity\": 0.4,\n \"fontColor\": \"rgb(0, 0, 0)\",\n \"fontOpacity\": \"1\",\n // defaults to iconSize.x/4\n \"fontSize\": null,\n \"fontWeight\": \"normal\",\n // defaults to [iconSize.x/2, iconSize.y] (point tip)\n \"iconAnchor\": null,\n \"iconSize\": L.point(32, 48),\n \"opacity\": 1,\n \"popupAnchor\": null,\n \"shadowAngle\": 45,\n \"shadowBlur\": 1,\n \"shadowColor\": \"rgb(0,0,10)\",\n \"shadowEnable\": false,\n \"shadowLength\": 0.75,\n \"shadowOpacity\": 0.5,\n \"shadowTranslate\": L.point(0, 0),\n \"weight\": 2\n },\n initialize: function(_options) {\n let options = L.Util.setOptions(this, _options)\n\n // iconSize needs to be converted to a Point object if it is not passed as one\n options.iconSize = L.point(options.iconSize)\n\n // in addition to setting option dependant defaults, Point-based options are converted to Point objects\n if (options.circleAnchor) {\n options.circleAnchor = L.point(options.circleAnchor)\n } else {\n options.circleAnchor = L.point(Number(options.iconSize.x) / 2, Number(options.iconSize.x) / 2)\n }\n if (!options.circleColor) {\n options.circleColor = options.color\n }\n if (!options.circleFillOpacity) {\n options.circleFillOpacity = options.opacity\n }\n if (!options.circleOpacity) {\n options.circleOpacity = options.opacity\n }\n if (!options.circleWeight) {\n options.circleWeight = options.weight\n }\n if (!options.fillColor) {\n options.fillColor = options.color\n }\n if (!options.fontSize) {\n options.fontSize = Number(options.iconSize.x / 4)\n }\n if (options.iconAnchor) {\n options.iconAnchor = L.point(options.iconAnchor)\n }\n else {\n options.iconAnchor = L.point(Number(options.iconSize.x) / 2, Number(options.iconSize.y))\n }\n if (options.popupAnchor) {\n options.popupAnchor = L.point(options.popupAnchor)\n }\n else {\n options.popupAnchor = L.point(0, (-0.75) * (options.iconSize.y))\n }\n\n options.html = this._createSVG()\n },\n _createCircle: function() {\n let cx = Number(this.options.circleAnchor.x)\n let cy = Number(this.options.circleAnchor.y)\n let radius = this.options.iconSize.x / 2 * Number(this.options.circleRatio)\n let fill = this.options.circleFillColor\n let fillOpacity = this.options.circleFillOpacity\n let stroke = this.options.circleColor\n let strokeOpacity = this.options.circleOpacity\n let strokeWidth = this.options.circleWeight\n let className = `${this.options.className}-circle`\n\n let circle = ``\n\n return circle\n },\n _createPathDescription: function() {\n let height = Number(this.options.iconSize.y)\n let width = Number(this.options.iconSize.x)\n let weight = Number(this.options.weight)\n let margin = weight / 2\n\n let startPoint = `M ${margin} ${width / 2} `\n let leftLine = `L ${width / 2} ${height - weight} `\n let rightLine = `L ${width - margin} ${width / 2} `\n let arc = `A ${width / 4} ${width / 4} 0 0 0 ${margin} ${width / 2} Z`\n\n let description = startPoint + leftLine + rightLine + arc\n\n return description\n },\n _createPath: function() {\n let pathDescription = this._createPathDescription()\n let strokeWidth = this.options.weight\n let stroke = this.options.color\n let strokeOpacity = this.options.opacity\n let fill = this.options.fillColor\n let fillOpacity = this.options.fillOpacity\n let className = `${this.options.className}-path`\n\n let path = ``\n\n return path\n },\n _createShadow: function() {\n let pathDescription = this._createPathDescription()\n let strokeWidth = this.options.weight\n let stroke = this.options.shadowColor\n let fill = this.options.shadowColor\n let className = `${this.options.className}-shadow`\n\n let origin = `${this.options.iconSize.x / 2}px ${this.options.iconSize.y}px`\n let rotation = this.options.shadowAngle\n let height = this.options.shadowLength\n let opacity = this.options.shadowOpacity\n let blur = this.options.shadowBlur\n let translate = `${this.options.shadowTranslate.x}px, ${this.options.shadowTranslate.y}px`\n\n let blurFilter = ``\n\n let shadow = ``\n\n return blurFilter + shadow\n },\n _createSVG: function() {\n let path = this._createPath()\n let circle = this._createCircle()\n let text = this._createText()\n let shadow = \"\"\n if (this.options.shadowEnable) {\n shadow = this._createShadow()\n }\n\n let className = `${this.options.className}-svg`\n let width = this.options.iconSize.x\n let height = this.options.iconSize.y\n\n if (this.options.shadowEnable) {\n width += this.options.iconSize.y * this.options.shadowLength - (this.options.iconSize.x / 2)\n width = Math.max(width, 32)\n height += this.options.iconSize.y * this.options.shadowLength\n }\n\n let style = `width:${width}px; height:${height}`\n let svg = `${shadow}${path}${circle}${text}`\n\n return svg\n },\n _createText: function() {\n let fontSize = `${this.options.fontSize}px`\n let fontWeight = this.options.fontWeight\n let lineHeight = Number(this.options.fontSize)\n\n let coordX = this.options.circleAnchor.x\n // 35% was found experimentally\n let coordY = this.options.circleAnchor.y + (lineHeight * 0.35)\n let circleText = this.options.circleText\n let textColor = this.options.fontColor.replace(\"rgb(\", \"rgba(\").replace(\")\", `,${this.options.fontOpacity})`)\n\n let text = `${circleText}`\n\n return text\n }\n})\n\nlet SVGMarker = L.Marker.extend({\n options: {\n \"iconFactory\": L.divIcon.svgIcon,\n \"iconOptions\": {}\n },\n initialize: function(latlng, _options) {\n let options = L.Util.setOptions(this, _options)\n options.icon = options.iconFactory(options.iconOptions)\n this._latlng = latlng\n },\n onAdd: function(map) {\n L.Marker.prototype.onAdd.call(this, map)\n },\n setStyle: function(style) {\n if (this._icon) {\n // let svg = this._icon.children[0]\n let iconBody = this._icon.children[0].children[0]\n let iconCircle = this._icon.children[0].children[1]\n\n if (style.color && !style.iconOptions) {\n let stroke = style.color.replace(\"rgb\", \"rgba\").replace(\")\", `,${this.options.icon.options.opacity})`)\n let fill = style.color.replace(\"rgb\", \"rgba\").replace(\")\", `,${this.options.icon.options.fillOpacity})`)\n iconBody.setAttribute(\"stroke\", stroke)\n iconBody.setAttribute(\"fill\", fill)\n iconCircle.setAttribute(\"stroke\", stroke)\n\n this.options.icon.fillColor = fill\n this.options.icon.color = stroke\n this.options.icon.circleColor = stroke\n }\n if (style.opacity) {\n this.setOpacity(style.opacity)\n }\n if (style.iconOptions) {\n if (style.color) {\n style.iconOptions.color = style.color\n }\n let iconOptions = L.Util.setOptions(this.options.icon, style.iconOptions)\n this.setIcon(L.divIcon.svgIcon(iconOptions))\n }\n }\n }\n});\n\nexport { SVGMarker, SVGIcon }\n\n","import { SVGIcon } from \"src/decidim/map/svg-icon\";\n\nL.DivIcon.SVGIcon = SVGIcon;\nL.DivIcon.SVGIcon.DecidimIcon = L.DivIcon.SVGIcon.extend({\n options: {\n fillColor: \"#ef604d\",\n fillOpacity: 1,\n opacity: 0\n },\n _createPathDescription: function() {\n return \"M14 1.17a11.685 11.685 0 0 0-11.685 11.685c0 11.25 10.23 20.61 10.665 21a1.5 1.5 0 0 0 2.025 0c0.435-.435 10.665-9.81 10.665-21A11.685 11.685 0 0 0 14 1.17Zm0 17.415A5.085 5.085 0 1 1 19.085 13.5 5.085 5.085 0 0 1 14 18.585Z\";\n },\n _createCircle: function() {\n return \"\"\n },\n // Improved version of the _createSVG, essentially the same as in later\n // versions of Leaflet. It adds the `px` values after the width and height\n // CSS making the focus borders work correctly across all browsers.\n _createSVG: function() {\n const path = this._createPath();\n const circle = this._createCircle();\n const text = this._createText();\n const className = `${this.options.className}-svg`;\n\n const style = `width:${this.options.iconSize.x}px; height:${this.options.iconSize.y}px;`;\n\n const svg = `${path}${circle}${text}`;\n\n return svg;\n }\n});\n","import * as L from \"leaflet\";\nimport \"src/decidim/vendor/leaflet-tilelayer-here\"\nimport \"src/decidim/map/icon.js\" // comes with Decidim\nimport \"leaflet.markercluster\"; // Comes with Decidim\nimport \"leaflet.featuregroup.subgroup\" // included in this package.json\nimport \"src/vendor/jquery.truncate\"\n\nimport \"src/vendor/leaflet-polylabel-centroid\";\n\nL.DivIcon.SVGIcon.DecidimIcon = L.DivIcon.SVGIcon.extend({\n options: {\n iconSize: L.point(24,34),\n fillColor: getComputedStyle(document.documentElement).getPropertyValue('--primary'),\n fillOpacity: 1,\n opacity: 0,\n },\n _createPathDescription: function() {\n return \"M12,0.17 C5.5465527,0.17 0.315,5.4015527 0.315,11.855 C0.315,23.105 10.545,32.465 10.98,32.855 C11.5531636,33.3793645 12.4318364,33.3793645 13.005,32.855 C13.44,32.42 23.67,23.045 23.67,11.855 C23.67,5.40740603 18.4475887,0.178276757 12,0.17 Z M12,17.585 C9.19163205,17.585 6.915,15.308368 6.915,12.5 C6.915,9.69163205 9.19163205,7.415 12,7.415 C14.808368,7.415 17.085,9.69163205 17.085,12.5 C17.085,15.308368 14.808368,17.585 12,17.585 L12,17.585 Z\";\n },\n _createCircle: function() {\n return \"\"\n }\n});\n\n(() => {\n $(document).ready(() => {\n const here_api_key = $(\"#interactive_map\").data(\"here-api-key\");\n const geoJson = $(\"#interactive_map\").data(\"geojson-data\");\n const $viewParticipatoryProcess = $(\"#view-participatory-process\");\n\n // Used to prevent click event when double click navigating\n const clickDelay = 500;\n let clickTimer = 0;\n let clickPrevent = false;\n\n // Style options\n const colorOpacity = 0.5;\n const hoverColorOpacity = 0.8;\n const strokeWeight = 1.5;\n const polyLineColor = 1;\n const strokeColor = \"#8a8a8a\";\n const iconSize = 28;\n\n const map = L.map('interactive_map', {scrollWheelZoom: false});\n\n let zoomOrigin = map.getZoom();\n let allZonesLayer = L.featureGroup();\n let allZonesMarkers = [];\n let allProcessesLinks = {};\n\n function zoneMarkerIconCSS(size) {\n return {\n 'font-size': `${(size / 2) - 2}px`,\n 'width' : `${size - 2}px`,\n 'height' : `${size - 2}px`,\n 'line-height' : `${size - 2}px`,\n 'border-radius' : `${size / 2}px`\n }\n }\n\n function processMarkerIconCSS(size) {\n return {\n 'font-size': `${Math.round(size / 3)}px`,\n 'width' : `${size / 2}px`,\n 'height' : `${size / 2}px`,\n 'line-height' : `${size / 2}px`,\n 'border-radius' : `${size / 4}px`\n }\n }\n\n function popupMaxwidth() {\n if ($(window).width() < 600) {\n return 260\n } else {\n return 640\n }\n }\n\n function popupMinwidth() {\n if ($(window).width() < 600) {\n return 204\n } else {\n return 500\n }\n }\n\n function isCoordinates(value, length) {\n return Array.isArray(value) && (value.length === length) && !!value.reduce((a, v) => (a && (a !== null)));\n }\n\n function hasLocation(participatory_process) {\n return (participatory_process.location !== undefined) && isCoordinates(participatory_process.location, 2);\n }\n\n function updateProcessMarkerPosition(marker, delta, zoom) {\n if (marker.origin === undefined) {\n return;\n }\n let oldPoint = map.project(L.latLng(marker.origin), zoom);\n\n let radius = ( delta / 2.5 ) + ( marker.getRadius() / 1.75 ) ;\n let newPoint = L.point(\n oldPoint.x + ( radius * Math.cos( Math.PI / 4 ) ),\n oldPoint.y - ( radius * Math.sin( Math.PI / 4 ) )\n );\n marker._latlng = map.unproject(newPoint, zoom);\n }\n\n function calculateIconSize() {\n const delta = Math.round(1.75 * (map.getZoom()));\n return (delta + 2) * 2;\n }\n\n function tmpl(participatoryProcess, linkTxt) {\n return `\n
\n

${participatoryProcess.title}

\n
\n
\n
\n ${participatoryProcess.start_date} - ${participatoryProcess.end_date}\n
\n
\n \n
\n
\n `\n }\n\n\n L.tileLayer.here({\n apiKey: here_api_key,\n scheme: \"normal.day.grey\"\n }, {continuousWorld: true}).addTo(map);\n\n map.createPane(\"processPane\").style.zIndex = 610;\n let allProcessesLayer = L.markerClusterGroup({\n clusterPane: \"processPane\",\n zoomToBoundsOnClick: false,\n removeOutsideVisibleBounds: true,\n spiderfyDistanceMultiplier: 2,\n chunkedLoading: true,\n showCoverageOnHover: false,\n maxClusterRadius: 40,\n spiderLegPolylineOptions: {\n weight: 2,\n color: getComputedStyle(document.documentElement).getPropertyValue('--primary'),\n opacity: polyLineColor\n },\n iconCreateFunction: (cluster) => {\n let actualIconSize = ( map.getZoom() > zoomOrigin ) ? calculateIconSize() : iconSize;\n\n let style = Object.entries(processMarkerIconCSS(actualIconSize)).map(\n (v) => `${v[0]}: ${v[1]};`\n ).join(\" \");\n\n return new L.DivIcon({\n html: '
' + cluster.getChildCount() + '
',\n className: 'marker-cluster',\n iconSize: new L.Point(actualIconSize / 2, actualIconSize / 2)\n });\n }\n });\n\n // Convert data from GeoJSON\n const geoJsonLayer = L.geoJson(geoJson, {\n style: (feature) => {\n return {\n interactive: false,\n stroke: true,\n color: strokeColor,\n weight: strokeWeight,\n fillColor: feature.color,\n fillOpacity: colorOpacity\n }\n }\n });\n\n // We parsed the data to generate advanced layers configuration\n geoJsonLayer.eachLayer((layer) => {\n let { feature } = layer;\n let zoneLayer = L.featureGroup();\n\n // Zone = Assembly with scope\n\n // Base zone polygon\n zoneLayer.addLayer(layer);\n\n zoneLayer.on(\"mouseover\", function() {\n this.setStyle({\n fillOpacity: hoverColorOpacity\n });\n });\n\n zoneLayer.on(\"mouseout\", function() {\n this.setStyle({\n fillOpacity: colorOpacity\n });\n });\n\n\n // Zone label\n const icon = L.divIcon({\n className: 'district-number',\n html: feature.code,\n iconSize: new L.Point(iconSize, iconSize)\n });\n const centroid = L.PolylabelCentroid(L.GeoJSON.latLngsToCoords(layer._latlngs[0], 1), 1/1000);\n\n let zoneMarker = L.marker(centroid, { icon });\n\n allZonesMarkers.push(zoneMarker);\n zoneLayer.addLayer(zoneMarker);\n\n // Navigate to target page\n zoneMarker.on(\"keypress\", (e) => {\n if( e.originalEvent.key === \"Enter\" ) {\n return window.location = feature.link;\n }\n });\n\n // Navigate to target page if not double click\n zoneMarker.on(\"click\", (e) => {\n clickTimer = setTimeout(() => {\n if (!clickPrevent) {\n return window.location = feature.link;\n }\n clickPrevent = false;\n }, clickDelay);\n });\n\n // Zoom to Polygone / Zone\n zoneMarker.on(\"dblclick\", (e) => {\n clearTimeout(clickTimer);\n clickPrevent = true;\n map.fitBounds(zoneLayer.getBounds(), {\n padding: [25, 25]\n });\n });\n\n // Manage linked participatory processes\n feature.participatory_processes.forEach((participatory_process) => {\n\n // Filling the registry links\n if(Object.keys(allProcessesLinks).includes(participatory_process.id.toString())) {\n allProcessesLinks[participatory_process.id.toString()].push(layer);\n // Process with location are only displayed once\n if( hasLocation(participatory_process) ) { return }\n } else {\n allProcessesLinks[participatory_process.id.toString()] = [layer];\n }\n\n let marker = new L.circleMarker(\n // marker is placed on its location or the center of the assembly\n hasLocation(participatory_process) ? participatory_process.location : centroid,\n {\n pane: \"processPane\",\n radius: Math.round(iconSize / 4),\n weight: 0,\n fillOpacity: 1,\n fillColor: getComputedStyle(document.documentElement).getPropertyValue('--primary'),\n }\n );\n\n let node = document.createElement(\"div\");\n $(node).html((tmpl(participatory_process, $viewParticipatoryProcess.val())));\n\n marker.bindPopup(node, {\n maxwidth: popupMaxwidth(),\n minWidth: popupMinwidth(),\n keepInView: true,\n className: \"interactive-map-info\"\n }).openPopup();\n\n marker.participatory_process_data = participatory_process;\n marker.origin = centroid;\n\n // Add marker to marker cluster group\n allProcessesLayer.addLayer(marker);\n });\n\n // Add zone to layer group\n allZonesLayer.addLayer(zoneLayer);\n });\n\n // Add zones to map\n allZonesLayer.addTo(map);\n\n // Map is centered on all the zone\n map.fitBounds(allZonesLayer.getBounds(), {\n padding: [25, 25]\n });\n\n // Update the starting zoom\n zoomOrigin = map.getZoom();\n\n\n // Now, all the element are actually projected on the map\n allProcessesLayer.eachLayer((marker) => {\n\n // Each participatory process should highlight its linked assemblies / zones\n let linked = allProcessesLinks[marker.participatory_process_data.id.toString()];\n\n linked.forEach((layer) => {\n marker.on(\"mouseover\", function() {\n layer.bringToFront().setStyle({\n fillOpacity: hoverColorOpacity,\n color: getComputedStyle(document.documentElement).getPropertyValue('--primary'),\n weight: 2\n });\n });\n\n marker.on(\"mouseout\", function() {\n layer.bringToBack().setStyle({\n fillOpacity: colorOpacity,\n color: strokeColor,\n weight: strokeWeight\n });\n });\n });\n\n // Translate the marker centered on the zone outside the zone label\n // ( like an notification badge )\n if(!hasLocation(marker.participatory_process_data)) {\n updateProcessMarkerPosition(marker, iconSize, map.getZoom());\n }\n });\n\n // Map zoom events\n map.on('zoomstart', (e) => {\n $('#interactive_map .leaflet-process-pane').hide();\n });\n\n map.on('zoomend', (e) => {\n let actualIconSize = iconSize;\n\n if (map.getZoom() > zoomOrigin) {\n actualIconSize = calculateIconSize()\n $('#interactive_map .district-number').css(zoneMarkerIconCSS(actualIconSize));\n } else {\n $('#interactive_map .district-number').css(zoneMarkerIconCSS(iconSize));\n }\n\n allZonesMarkers.forEach((marker) => {\n let icon = marker.options.icon;\n icon.options.iconSize = new L.Point(actualIconSize, actualIconSize);\n marker.setIcon(icon);\n });\n\n allProcessesLayer.eachLayer((marker) => {\n if(!hasLocation(marker.participatory_process_data)) {\n updateProcessMarkerPosition(marker, actualIconSize, map.getZoom());\n }\n });\n\n allProcessesLayer.refreshClusters();\n $('#interactive_map .leaflet-process-pane').show();\n });\n // Add markers to map\n allProcessesLayer.addTo(map);\n });\n})(window);\n","$(document).ready(() => {\n let $geolocalized = $(\"#scope_geolocalized\");\n let $geojson = $(\"#geojson\");\n\n function toggleSubField(field, subfield) {\n if (field.is(\":checked\")) {\n subfield.show();\n } else {\n subfield.hide();\n }\n }\n\n $geolocalized.on(\"click\", function () {\n toggleSubField($geolocalized, $geojson);\n }\n );\n\n toggleSubField($geolocalized, $geojson);\n});\n","// Leaflet Polylabel Centroid\n// USAGE : L.PolylabelCentroid(coordinates, precision, debug)\n// + coordinates (required) : GeoJSON Polygon coordinates\n// + precision (optional) : default to 1.0, decrease for better precision (like 1/1000)\n// + debug (optional) : activate debug coinsole output\n\n// ----------------------------------------------------------------------------\n\n// TinyQueue\n// source : https://github.com/mourner/tinyqueue/blob/3a212a4f73ad9c39caeb27922c86ff4115e59c66/index.js\n\nclass Queue {\n constructor(data = [], compare = defaultCompare) {\n this.data = data;\n this.length = this.data.length;\n this.compare = compare;\n\n if (this.length > 0) {\n for (let i = (this.length >> 1) - 1; i >= 0; i--) this._down(i);\n }\n }\n\n push(item) {\n this.data.push(item);\n this.length++;\n this._up(this.length - 1);\n }\n\n pop() {\n if (this.length === 0) return undefined;\n\n const top = this.data[0];\n const bottom = this.data.pop();\n this.length--;\n\n if (this.length > 0) {\n this.data[0] = bottom;\n this._down(0);\n }\n\n return top;\n }\n\n peek() {\n return this.data[0];\n }\n\n _up(pos) {\n const {data, compare} = this;\n const item = data[pos];\n\n while (pos > 0) {\n const parent = (pos - 1) >> 1;\n const current = data[parent];\n if (compare(item, current) >= 0) break;\n data[pos] = current;\n pos = parent;\n }\n\n data[pos] = item;\n }\n\n _down(pos) {\n const {data, compare} = this;\n const halfLength = this.length >> 1;\n const item = data[pos];\n\n while (pos < halfLength) {\n let left = (pos << 1) + 1;\n let best = data[left];\n const right = left + 1;\n\n if (right < this.length && compare(data[right], best) < 0) {\n left = right;\n best = data[right];\n }\n if (compare(best, item) >= 0) break;\n\n data[pos] = best;\n pos = left;\n }\n\n data[pos] = item;\n }\n}\n\n// ----------------------------------------------------------------------------\n\n// Polylabel\n// source : https://github.com/mapbox/polylabel/blob/6854a05e221fac42b9e025cbf356b2a057f212aa/polylabel.js\n\nfunction defaultCompare(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n}\n\nfunction polylabel(polygon, precision, debug) {\n precision = precision || 1.0;\n\n // find the bounding box of the outer ring\n var minX, minY, maxX, maxY;\n for (var i = 0; i < polygon[0].length; i++) {\n var p = polygon[0][i];\n if (!i || p[0] < minX) minX = p[0];\n if (!i || p[1] < minY) minY = p[1];\n if (!i || p[0] > maxX) maxX = p[0];\n if (!i || p[1] > maxY) maxY = p[1];\n }\n\n var width = maxX - minX;\n var height = maxY - minY;\n var cellSize = Math.min(width, height);\n var h = cellSize / 2;\n\n if (cellSize === 0) return [minX, minY];\n\n // a priority queue of cells in order of their \"potential\" (max distance to polygon)\n var cellQueue = new Queue(undefined, compareMax);\n\n // cover polygon with initial cells\n for (var x = minX; x < maxX; x += cellSize) {\n for (var y = minY; y < maxY; y += cellSize) {\n cellQueue.push(new Cell(x + h, y + h, h, polygon));\n }\n }\n\n // take centroid as the first best guess\n var bestCell = getCentroidCell(polygon);\n\n // special case for rectangular polygons\n var bboxCell = new Cell(minX + width / 2, minY + height / 2, 0, polygon);\n if (bboxCell.d > bestCell.d) bestCell = bboxCell;\n\n var numProbes = cellQueue.length;\n\n while (cellQueue.length) {\n // pick the most promising cell from the queue\n var cell = cellQueue.pop();\n\n // update the best cell if we found a better one\n if (cell.d > bestCell.d) {\n bestCell = cell;\n if (debug) console.log('found best %d after %d probes', Math.round(1e4 * cell.d) / 1e4, numProbes);\n }\n\n // do not drill down further if there's no chance of a better solution\n if (cell.max - bestCell.d <= precision) continue;\n\n // split the cell into four cells\n h = cell.h / 2;\n cellQueue.push(new Cell(cell.x - h, cell.y - h, h, polygon));\n cellQueue.push(new Cell(cell.x + h, cell.y - h, h, polygon));\n cellQueue.push(new Cell(cell.x - h, cell.y + h, h, polygon));\n cellQueue.push(new Cell(cell.x + h, cell.y + h, h, polygon));\n numProbes += 4;\n }\n\n if (debug) {\n console.log('num probes: ' + numProbes);\n console.log('best distance: ' + bestCell.d);\n }\n\n return [bestCell.x, bestCell.y];\n}\n\nfunction compareMax(a, b) {\n return b.max - a.max;\n}\n\nfunction Cell(x, y, h, polygon) {\n this.x = x; // cell center x\n this.y = y; // cell center y\n this.h = h; // half the cell size\n this.d = pointToPolygonDist(x, y, polygon); // distance from cell center to polygon\n this.max = this.d + this.h * Math.SQRT2; // max distance to polygon within a cell\n}\n\n// signed distance from point to polygon outline (negative if point is outside)\nfunction pointToPolygonDist(x, y, polygon) {\n var inside = false;\n var minDistSq = Infinity;\n\n for (var k = 0; k < polygon.length; k++) {\n var ring = polygon[k];\n\n for (var i = 0, len = ring.length, j = len - 1; i < len; j = i++) {\n var a = ring[i];\n var b = ring[j];\n\n if ((a[1] > y !== b[1] > y) &&\n (x < (b[0] - a[0]) * (y - a[1]) / (b[1] - a[1]) + a[0])) inside = !inside;\n\n minDistSq = Math.min(minDistSq, getSegDistSq(x, y, a, b));\n }\n }\n\n return (inside ? 1 : -1) * Math.sqrt(minDistSq);\n}\n\n// get polygon centroid\nfunction getCentroidCell(polygon) {\n var area = 0;\n var x = 0;\n var y = 0;\n var points = polygon[0];\n\n for (var i = 0, len = points.length, j = len - 1; i < len; j = i++) {\n var a = points[i];\n var b = points[j];\n var f = a[0] * b[1] - b[0] * a[1];\n x += (a[0] + b[0]) * f;\n y += (a[1] + b[1]) * f;\n area += f * 3;\n }\n if (area === 0) return new Cell(points[0][0], points[0][1], 0, polygon);\n return new Cell(x / area, y / area, 0, polygon);\n}\n\n// get squared distance from a point to a segment\nfunction getSegDistSq(px, py, a, b) {\n\n var x = a[0];\n var y = a[1];\n var dx = b[0] - x;\n var dy = b[1] - y;\n\n if (dx !== 0 || dy !== 0) {\n\n var t = ((px - x) * dx + (py - y) * dy) / (dx * dx + dy * dy);\n\n if (t > 1) {\n x = b[0];\n y = b[1];\n\n } else if (t > 0) {\n x += dx * t;\n y += dy * t;\n }\n }\n\n dx = px - x;\n dy = py - y;\n\n return dx * dx + dy * dy;\n}\n\n// ----------------------------------------------------------------------------\n\nL.PolylabelCentroid = function(polygon, precision, debug) {\n return polylabel(polygon, precision, debug).reverse();\n}\n","/* eslint-disable */\n\n// 🍂class TileLayer.HERE\n// Tile layer for HERE maps tiles.\nL.TileLayer.HERE = L.TileLayer.extend({\n\n options: {\n subdomains: '1234',\n minZoom: 2,\n maxZoom: 18,\n\n // 🍂option scheme: String = 'normal.day'\n // The \"map scheme\", as documented in the HERE API.\n scheme: 'normal.day',\n\n // 🍂option resource: String = 'maptile'\n // The \"map resource\", as documented in the HERE API.\n resource: 'maptile',\n\n // 🍂option mapId: String = 'newest'\n // Version of the map tiles to be used, or a hash of an unique map\n mapId: 'newest',\n\n // 🍂option format: String = 'png8'\n // Image format to be used (`png8`, `png`, or `jpg`)\n format: 'png8',\n\n // 🍂option appId: String = ''\n // Required option. The `app_id` provided as part of the HERE credentials\n appId: '',\n\n // 🍂option appCode: String = ''\n // Required option. The `app_code` provided as part of the HERE credentials\n appCode: '',\n\n // 🍂option useCIT: boolean = false\n // Whether to use the CIT when loading the here-maptiles\n useCIT: false,\n\n // 🍂option useHTTPS: boolean = true\n // Whether to use HTTPS when loading the here-maptiles\n useHTTPS: true,\n\n // 🍂option language: String = ''\n // The language of the descriptions on the maps that are loaded\n language: '',\n\n // 🍂option language: String = ''\n // The second language of the descriptions on the maps that are loaded\n language2: '',\n },\n\n\n initialize: function initialize(options) {\n options = L.setOptions(this, options);\n\n // Decide if this scheme uses the aerial servers or the basemap servers\n var schemeStart = options.scheme.split('.')[0];\n options.tileResolution = 256;\n\n // {Base URL}{Path}/{resource (tile type)}/{map id}/{scheme}/{zoom}/{column}/{row}/{size}/{format}\n // ?apiKey={YOUR_API_KEY}\n // &{param}={value}\n\n var params = [\n 'apiKey=' + encodeURIComponent(options.apiKey)\n ];\n // Fallback to old app_id,app_code if no apiKey passed\n if(!options.apiKey) {\n params = [\n 'app_id=' + encodeURIComponent(options.appId),\n 'app_code=' + encodeURIComponent(options.appCode),\n ];\n }\n if(options.language) {\n params.push('lg=' + encodeURIComponent(options.language));\n }\n if(options.language2) {\n params.push('lg2=' + encodeURIComponent(options.language2));\n }\n var urlQuery = '?' + params.join('&');\n\n var path = '/maptile/2.1/{resource}/{mapId}/{scheme}/{z}/{x}/{y}/{tileResolution}/{format}' + urlQuery;\n var attributionPath = '/maptile/2.1/copyright/{mapId}?apiKey={apiKey}';\n\n var baseUrl = 'maps.ls.hereapi.com';\n\n // Old style with apiId/apiCode for compatibility\n if(!options.apiKey) {\n // make sure the CIT-url can be used\n baseUrl = 'maps' + (options.useCIT ? '.cit' : '') + '.api.here.com';\n attributionPath = '/maptile/2.1/copyright/{mapId}?app_id={appId}&app_code={appCode}';\n }\n\n var tileServer = 'base.' + baseUrl;\n if (schemeStart == 'satellite' || schemeStart == 'terrain' || schemeStart == 'hybrid') {\n tileServer = 'aerial.' + baseUrl;\n }\n if (options.scheme.indexOf('.traffic.') !== -1) {\n tileServer = 'traffic' + baseUrl;\n }\n\n var protocol = 'http' + (options.useHTTPS ? 's' : '');\n var tileUrl = protocol + '://{s}.' + tileServer + path;\n\n this._attributionUrl = L.Util.template(protocol + '://1.' + tileServer + attributionPath, this.options);\n\n L.TileLayer.prototype.initialize.call(this, tileUrl, options);\n\n this._attributionText = '';\n\n },\n\n onAdd: function onAdd(map) {\n L.TileLayer.prototype.onAdd.call(this, map);\n\n if (!this._attributionBBoxes) {\n this._fetchAttributionBBoxes();\n }\n },\n\n onRemove: function onRemove(map) {\n //\n // Remove the attribution text, and clear the cached text so it will be recalculated\n // if/when we are shown again.\n //\n this._map.attributionControl.removeAttribution(this._attributionText);\n this._attributionText = '';\n\n this._map.off('moveend zoomend resetview', this._findCopyrightBBox, this);\n\n //\n // Call the prototype last, once we've tidied up our own changes\n //\n L.TileLayer.prototype.onRemove.call(this, map);\n },\n\n _fetchAttributionBBoxes: function _onMapMove() {\n var xmlhttp = new XMLHttpRequest();\n xmlhttp.onreadystatechange = L.bind(function(){\n if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {\n this._parseAttributionBBoxes(JSON.parse(xmlhttp.responseText));\n }\n }, this);\n xmlhttp.open(\"GET\", this._attributionUrl, true);\n xmlhttp.send();\n },\n\n _parseAttributionBBoxes: function _parseAttributionBBoxes(json) {\n if (!this._map) { return; }\n var providers = json[this.options.scheme.split('.')[0]] || json.normal;\n for (var i=0; i= zoom) {\n\n if (!providers[i].boxes) {\n // No boxes = attribution always visible\n visibleProviders.push(providers[i]);\n } else {\n for (var j=0; jHERE maps'];\n for (var i=0; i' + provider.label + '');\n }\n\n var attributionText = '© ' + attributions.join(', ') + '. ';\n\n if (attributionText !== this._attributionText) {\n this._map.attributionControl.removeAttribution(this._attributionText);\n this._map.attributionControl.addAttribution(this._attributionText = attributionText);\n }\n },\n\n});\n\n\nL.tileLayer.here = function(opts){\n return new L.TileLayer.HERE(opts);\n}\n","// From https://github.com/pathable/truncate/\n\n(function($) {\n\n // Matches trailing non-space characters.\n var chop = /(\\s*\\S+|\\s)$/;\n\n // Matches the first word in the string.\n var start = /^(\\S*)/;\n\n // Return a truncated html string. Delegates to $.fn.truncate.\n $.truncate = function(html, options) {\n return $('
').append(html).truncate(options).html();\n };\n\n // Truncate the contents of an element in place.\n $.fn.truncate = function(options) {\n if ($.isNumeric(options)) options = { length: options };\n var o = $.extend({}, $.truncate.defaults, options);\n\n return this.each(function() {\n var self = $(this);\n\n if (o.noBreaks) self.find('br').replaceWith(' ');\n\n var text = self.text();\n var excess = text.length - o.length;\n\n if (o.stripTags) self.text(text);\n\n // Chop off any partial words if appropriate.\n if (o.words && excess > 0) {\n var truncated = text.slice(0, o.length).replace(chop, '').length;\n\n if (o.keepFirstWord && truncated === 0) {\n excess = text.length - start.exec(text)[0].length - 1;\n } else {\n excess = text.length - truncated - 1;\n }\n }\n\n if (excess < 0 || !excess && !o.truncated) return;\n\n // Iterate over each child node in reverse, removing excess text.\n $.each(self.contents().get().reverse(), function(i, el) {\n var $el = $(el);\n var text = $el.text();\n var length = text.length;\n\n // If the text is longer than the excess, remove the node and continue.\n if (length <= excess) {\n o.truncated = true;\n excess -= length;\n $el.remove();\n return;\n }\n\n // Remove the excess text and append the ellipsis.\n if (el.nodeType === 3) {\n // should we finish the block anyway?\n if (o.finishBlock) {\n $(el.splitText(length)).replaceWith(o.ellipsis);\n } else {\n $(el.splitText(length - excess - 1)).replaceWith(o.ellipsis);\n }\n return false;\n }\n\n // Recursively truncate child nodes.\n $el.truncate($.extend(o, { length: length - excess }));\n return false;\n });\n });\n };\n\n $.truncate.defaults = {\n\n // Strip all html elements, leaving only plain text.\n stripTags: false,\n\n // Only truncate at word boundaries.\n words: false,\n\n // When 'words' is active, keeps the first word in the string\n // even if it's longer than a target length.\n keepFirstWord: false,\n\n // Replace instances of
with a single space.\n noBreaks: false,\n\n // if true always truncate the content at the end of the block.\n finishBlock: false,\n\n // The maximum length of the truncated html.\n length: Infinity,\n\n // The character to use as the ellipsis. The word joiner (U+2060) can be\n // used to prevent a hanging ellipsis, but displays incorrectly in Chrome\n // on Windows 7.\n // http://code.google.com/p/chromium/issues/detail?id=68323\n ellipsis: '\\u2026' // '\\u2060\\u2026'\n\n };\n\n})(jQuery);\n","var Lib = require('./src/svg-icon');\n\nexports.SVGIcon = Lib.SVGIcon;\nexports.SVGMarker = Lib.SVGMarker;\n","var SVGIcon = L.DivIcon.extend({\n options: {\n \"circleText\": \"\",\n \"className\": \"svg-icon\",\n \"circleAnchor\": null, //defaults to [iconSize.x/2, iconSize.x/2]\n \"circleColor\": null, //defaults to color\n \"circleOpacity\": null, // defaults to opacity\n \"circleFillColor\": \"rgb(255,255,255)\",\n \"circleFillOpacity\": null, //default to opacity\n \"circleRatio\": 0.5,\n \"circleWeight\": null, //defaults to weight\n \"color\": \"rgb(0,102,255)\",\n \"fillColor\": null, // defaults to color\n \"fillOpacity\": 0.4,\n \"fontColor\": \"rgb(0, 0, 0)\",\n \"fontOpacity\": \"1\",\n \"fontSize\": null, // defaults to iconSize.x/4\n \"iconAnchor\": null, //defaults to [iconSize.x/2, iconSize.y] (point tip)\n \"iconSize\": L.point(32,48),\n \"opacity\": 1,\n \"popupAnchor\": null,\n \"weight\": 2\n },\n initialize: function(options) {\n options = L.Util.setOptions(this, options)\n\n //iconSize needs to be converted to a Point object if it is not passed as one\n options.iconSize = L.point(options.iconSize)\n\n //in addition to setting option dependant defaults, Point-based options are converted to Point objects\n if (!options.circleAnchor) {\n options.circleAnchor = L.point(Number(options.iconSize.x)/2, Number(options.iconSize.x)/2)\n }\n else {\n options.circleAnchor = L.point(options.circleAnchor)\n }\n if (!options.circleColor) {\n options.circleColor = options.color\n }\n if (!options.circleFillOpacity) {\n options.circleFillOpacity = options.opacity\n }\n if (!options.circleOpacity) {\n options.circleOpacity = options.opacity\n }\n if (!options.circleWeight) {\n options.circleWeight = options.weight\n }\n if (!options.fillColor) {\n options.fillColor = options.color\n }\n if (!options.fontSize) {\n options.fontSize = Number(options.iconSize.x/4)\n }\n if (!options.iconAnchor) {\n options.iconAnchor = L.point(Number(options.iconSize.x)/2, Number(options.iconSize.y))\n }\n else {\n options.iconAnchor = L.point(options.iconAnchor)\n }\n if (!options.popupAnchor) {\n options.popupAnchor = L.point(0, (-0.75)*(options.iconSize.y))\n }\n else {\n options.popupAnchor = L.point(options.popupAnchor)\n }\n\n var path = this._createPath()\n var circle = this._createCircle()\n\n options.html = this._createSVG()\n },\n _createCircle: function() {\n var cx = Number(this.options.circleAnchor.x)\n var cy = Number(this.options.circleAnchor.y)\n var radius = this.options.iconSize.x/2 * Number(this.options.circleRatio)\n var fill = this.options.circleFillColor\n var fillOpacity = this.options.circleFillOpacity\n var stroke = this.options.circleColor\n var strokeOpacity = this.options.circleOpacity\n var strokeWidth = this.options.circleWeight\n var className = this.options.className + \"-circle\"\n\n var circle = ''\n\n return circle\n },\n _createPathDescription: function() {\n var height = Number(this.options.iconSize.y)\n var width = Number(this.options.iconSize.x)\n var weight = Number(this.options.weight)\n var margin = weight / 2\n\n var startPoint = \"M \" + margin + \" \" + (width/2) + \" \"\n var leftLine = \"L \" + (width/2) + \" \" + (height - weight) + \" \"\n var rightLine = \"L \" + (width - margin) + \" \" + (width/2) + \" \"\n var arc = \"A \" + (width/4) + \" \" + (width/4) + \" 0 0 0 \" + margin + \" \" + (width/2) + \" Z\"\n\n var d = startPoint + leftLine + rightLine + arc\n\n return d\n },\n _createPath: function() {\n var pathDescription = this._createPathDescription()\n var strokeWidth = this.options.weight\n var stroke = this.options.color\n var strokeOpacity = this.options.Opacity\n var fill = this.options.fillColor\n var fillOpacity = this.options.fillOpacity\n var className = this.options.className + \"-path\"\n\n var path = ''\n\n return path\n },\n _createSVG: function() {\n var path = this._createPath()\n var circle = this._createCircle()\n var text = this._createText()\n var className = this.options.className + \"-svg\"\n\n var style = \"width:\" + this.options.iconSize.x + \"px; height:\" + this.options.iconSize.y + \"px;\"\n\n var svg = '' + path + circle + text + ''\n\n return svg\n },\n _createText: function() {\n var fontSize = this.options.fontSize + \"px\"\n var lineHeight = Number(this.options.fontSize)\n\n var x = Number(this.options.iconSize.x) / 2\n var y = x + (lineHeight * 0.35) //35% was found experimentally\n var circleText = this.options.circleText\n var textColor = this.options.fontColor.replace(\"rgb(\", \"rgba(\").replace(\")\", \",\" + this.options.fontOpacity + \")\")\n\n var text = '' + circleText + ''\n\n return text\n }\n})\n\nvar SVGMarker = L.Marker.extend({\n options: {\n \"iconFactory\": SVGIcon,\n \"iconOptions\": {}\n },\n initialize: function(latlng, options) {\n options = L.Util.setOptions(this, options)\n options.icon = options.iconFactory(options.iconOptions)\n this._latlng = latlng\n },\n onAdd: function(map) {\n L.Marker.prototype.onAdd.call(this, map)\n },\n setStyle: function(style) {\n if (this._icon) {\n var svg = this._icon.children[0]\n var iconBody = this._icon.children[0].children[0]\n var iconCircle = this._icon.children[0].children[1]\n\n if (style.color && !style.iconOptions) {\n var stroke = style.color.replace(\"rgb\",\"rgba\").replace(\")\", \",\"+this.options.icon.options.opacity+\")\")\n var fill = style.color.replace(\"rgb\",\"rgba\").replace(\")\", \",\"+this.options.icon.options.fillOpacity+\")\")\n iconBody.setAttribute(\"stroke\", stroke)\n iconBody.setAttribute(\"fill\", fill)\n iconCircle.setAttribute(\"stroke\", stroke)\n\n this.options.icon.fillColor = fill\n this.options.icon.color = stroke\n this.options.icon.circleColor = stroke\n }\n if (style.opacity) {\n this.setOpacity(style.opacity)\n }\n if (style.iconOptions) {\n if (style.color) { style.iconOptions.color = style.color }\n var iconOptions = L.Util.setOptions(this.options.icon, style.iconOptions)\n this.setIcon(SVGIcon(iconOptions))\n }\n }\n }\n})\n\nmodule.exports = {\n SVGMarker: SVGMarker,\n SVGIcon: SVGIcon\n}\n","\n// class TileLayer.HERE\n// Tile layer for HERE maps tiles.\nL.TileLayer.HERE = L.TileLayer.extend({\n\n\toptions: {\n\t\tsubdomains: '1234',\n\t\tminZoom: 2,\n\t\tmaxZoom: 18,\n\n\t\t// option scheme: String = 'normal.day'\n\t\t// The \"map scheme\", as documented in the HERE API.\n\t\tscheme: 'normal.day',\n\n\t\t// option resource: String = 'maptile'\n\t\t// The \"map resource\", as documented in the HERE API.\n\t\tresource: 'maptile',\n\n\t\t// option mapId: String = 'newest'\n\t\t// Version of the map tiles to be used, or a hash of an unique map\n\t\tmapId: 'newest',\n\n\t\t// option format: String = 'png8'\n\t\t// Image format to be used (`png8`, `png`, or `jpg`)\n\t\tformat: 'png8',\n\n\t\t// Deprecated\n\t\t// option appId: String = ''\n\t\t// Optional option. The `app_id` provided as part of the HERE credentials\n\t\tappId: '',\n\n\t\t// Deprecated\n\t\t// option appCode: String = ''\n\t\t// Optional option. The `app_code` provided as part of the HERE credentials\n\t\tappCode: '',\n\n\t\t// option apiKey: String = ''\n\t\t// Required option. The `apiKey` provided as part of the HERE credentials\n\t\tapiKey: ''\n\t},\n\n\n\tinitialize: function initialize(options) {\n\t\toptions = L.setOptions(this, options);\n\n\t\t// Decide if this scheme uses the aerial servers or the basemap servers\n\t\tvar schemeStart = options.scheme.split('.')[0];\n\t\toptions.tileResolution = 256;\n\n\t\tif (L.Browser.retina) {\n\t\t\toptions.tileResolution = 512;\n\t\t}\n\n\t\t// \t\t{Base URL}{Path}/{resource (tile type)}/{map id}/{scheme}/{zoom}/{column}/{row}/{size}/{format}\n\t\t// \t\t?app_id={YOUR_APP_ID}\n\t\t// \t\t&app_code={YOUR_APP_CODE}\n\t\t// \t\t&{param}={value}\n\n\t\tvar path = '/{resource}/2.1/{resource}/{mapId}/{scheme}/{z}/{x}/{y}/{tileResolution}/{format}?apiKey={apiKey}&lg=por&ppi=72&pview=DEF';\n\t\tvar attributionPath = '/maptile/2.1/copyright/{mapId}?apiKey={apiKey}&lg=por&ppi=72&pview=DEF';\n\n\t\tvar tileServer = 'base.maps.ls.hereapi.com';\n\t\tif (schemeStart == 'satellite' ||\n\t\t\tschemeStart == 'terrain' ||\n\t\t\tschemeStart == 'hybrid') {\n\t\t\ttileServer = 'aerial.maps.ls.hereapi.com';\n\t\t}\n\t\tif (options.scheme.indexOf('.traffic.') !== -1) {\n\t\t\ttileServer = 'traffic.maps.ls.hereapi.com';\n\t\t}\n\n\t\tvar tileUrl = 'https://{s}.' + tileServer + path;\n\n\t\tthis._attributionUrl = L.Util.template('https://1.' + tileServer + attributionPath, this.options);\n\n\t\tL.TileLayer.prototype.initialize.call(this, tileUrl, options);\n\n\t\tthis._attributionText = '';\n\n\t},\n\n\tonAdd: function onAdd(map) {\n\t\tL.TileLayer.prototype.onAdd.call(this, map);\n\n\t\tif (!this._attributionBBoxes) {\n\t\t\tthis._fetchAttributionBBoxes();\n\t\t}\n\t},\n\n\tonRemove: function onRemove(map) {\n\t\tL.TileLayer.prototype.onRemove.call(this, map);\n\n\t\tif (this._map.attributionControl) {\n\t\t\tthis._map.attributionControl.removeAttribution(this._attributionText);\n\t\t}\n\n\t\tthis._map.off('moveend zoomend resetview', this._findCopyrightBBox, this);\n\t},\n\n\t_fetchAttributionBBoxes: function _onMapMove() {\n\t\tvar xmlhttp = new XMLHttpRequest();\n\t\txmlhttp.onreadystatechange = L.bind(function () {\n\t\t\tif (xmlhttp.readyState == 4 && xmlhttp.status == 200) {\n\t\t\t\tthis._parseAttributionBBoxes(JSON.parse(xmlhttp.responseText));\n\t\t\t}\n\t\t}, this);\n\t\txmlhttp.open(\"GET\", this._attributionUrl, true);\n\t\txmlhttp.send();\n\t},\n\n\t_parseAttributionBBoxes: function _parseAttributionBBoxes(json) {\n\t\tif (!this._map) { return; }\n\t\tvar providers = json[this.options.scheme.split('.')[0]] || json.normal;\n\t\tfor (var i = 0; i < providers.length; i++) {\n\t\t\tif (providers[i].boxes) {\n\t\t\t\tfor (var j = 0; j < providers[i].boxes.length; j++) {\n\t\t\t\t\tvar box = providers[i].boxes[j];\n\t\t\t\t\tproviders[i].boxes[j] = L.latLngBounds([[box[0], box[1]], [box[2], box[3]]]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis._map.on('moveend zoomend resetview', this._findCopyrightBBox, this);\n\n\t\tthis._attributionProviders = providers;\n\n\t\tthis._findCopyrightBBox();\n\t},\n\n\t_findCopyrightBBox: function _findCopyrightBBox() {\n\t\tif (!this._map) { return; }\n\t\tvar providers = this._attributionProviders;\n\t\tvar visibleProviders = [];\n\t\tvar zoom = this._map.getZoom();\n\t\tvar visibleBounds = this._map.getBounds();\n\n\t\tfor (var i = 0; i < providers.length; i++) {\n\t\t\tif (providers[i].minLevel < zoom && providers[i].maxLevel > zoom)\n\n\t\t\t\tif (!providers[i].boxes) {\n\t\t\t\t\t// No boxes = attribution always visible\n\t\t\t\t\tvisibleProviders.push(providers[i]);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\tfor (var j = 0; j < providers[i].boxes.length; j++) {\n\t\t\t\tvar box = providers[i].boxes[j];\n\t\t\t\tif (visibleBounds.overlaps(box)) {\n\t\t\t\t\tvisibleProviders.push(providers[i]);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar attributionText = '© HERE maps';\n\n\t\tif (attributionText !== this._attributionText && this._map.attributionControl) {\n\t\t\tthis._map.attributionControl.removeAttribution(this._attributionText);\n\t\t\tthis._map.attributionControl.addAttribution(this._attributionText = attributionText);\n\t\t}\n\t}\n});\n\n\nL.tileLayer.here = function (opts) {\n\treturn new L.TileLayer.HERE(opts);\n}","/*!\n Leaflet.FeatureGroup.SubGroup 1.0.2+00bb0d4\n (c) 2015-2017 Boris Seang\n License BSD-2-Clause\n */\n!function(e,r){\"function\"==typeof define&&define.amd?define([\"leaflet\"],r):r(\"object\"==typeof module&&module.exports?require(\"leaflet\"):e.L)}(this,function(e){e.FeatureGroup.SubGroup=e.FeatureGroup.extend({initialize:function(r,t){e.FeatureGroup.prototype.initialize.call(this,t),this.setParentGroup(r)},setParentGroup:function(r){var t=r instanceof e.LayerGroup;return this._parentGroup=r,this.onAdd=t?\"function\"==typeof r.addLayers?this._onAddToGroupBatch:this._onAddToGroup:this._onAddToMap,this.onRemove=t?\"function\"==typeof r.removeLayers?this._onRemoveFromGroupBatch:this._onRemoveFromGroup:this._onRemoveFromMap,this.addLayer=t?this._addLayerToGroup:this._addLayerToMap,this.removeLayer=t?this._removeLayerFromGroup:this._removeLayerFromMap,this},setParentGroupSafe:function(e){var r=this._map;return r&&r.removeLayer(this),this.setParentGroup(e),r&&r.addLayer(this),this},getParentGroup:function(){return this._parentGroup},_onAddToGroupBatch:function(e){var r=this.getLayers();this._map=e,this._parentGroup.addLayers(r)},_onRemoveFromGroupBatch:function(){var e=this.getLayers();this._parentGroup.removeLayers(e),this._map=null},_onAddToGroup:function(e){var r=this._parentGroup;this._map=e,this.eachLayer(r.addLayer,r)},_onRemoveFromGroup:function(){var e=this._parentGroup;this.eachLayer(e.removeLayer,e),this._map=null},_onAddToMap:e.FeatureGroup.prototype.onAdd,_onRemoveFromMap:e.FeatureGroup.prototype.onRemove,_addLayerToGroup:function(e){if(this.hasLayer(e))return this;e.addEventParent(this);var r=this.getLayerId(e);return this._layers[r]=e,this._map&&this._parentGroup.addLayer(e),this.fire(\"layeradd\",{layer:e})},_removeLayerFromGroup:function(e){if(!this.hasLayer(e))return this;var r=e in this._layers?e:this.getLayerId(e);return e=this._layers[r],e.removeEventParent(this),this._map&&e&&this._parentGroup.removeLayer(e),delete this._layers[r],this.fire(\"layerremove\",{layer:e})},_addLayerToMap:e.FeatureGroup.prototype.addLayer,_removeLayerFromMap:e.FeatureGroup.prototype.removeLayer}),e.featureGroup.subGroup=function(r,t){return new e.FeatureGroup.SubGroup(r,t)}});","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t8466: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkapp\"] = self[\"webpackChunkapp\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [5732,5243], function() { return __webpack_require__(19447); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","SVGIcon","L","DivIcon","extend","options","point","initialize","_options","Util","setOptions","this","iconSize","circleAnchor","Number","x","circleColor","color","circleFillOpacity","opacity","circleOpacity","circleWeight","weight","fillColor","fontSize","iconAnchor","y","popupAnchor","html","_createSVG","_createCircle","cx","cy","radius","circleRatio","fill","circleFillColor","fillOpacity","stroke","strokeOpacity","strokeWidth","className","_createPathDescription","height","width","margin","_createPath","pathDescription","_createShadow","shadowColor","origin","rotation","shadowAngle","shadowLength","shadowOpacity","blur","shadowBlur","translate","shadowTranslate","path","circle","text","_createText","shadow","shadowEnable","Math","max","style","fontWeight","lineHeight","coordX","coordY","circleText","textColor","fontColor","replace","fontOpacity","Marker","divIcon","svgIcon","latlng","icon","iconFactory","iconOptions","_latlng","onAdd","map","prototype","call","setStyle","_icon","iconBody","children","iconCircle","setAttribute","setOpacity","setIcon","DecidimIcon","getComputedStyle","document","documentElement","getPropertyValue","window","$","ready","here_api_key","data","geoJson","$viewParticipatoryProcess","clickTimer","clickPrevent","strokeColor","scrollWheelZoom","zoomOrigin","getZoom","allZonesLayer","allZonesMarkers","allProcessesLinks","zoneMarkerIconCSS","size","hasLocation","participatory_process","undefined","location","value","length","Array","isArray","reduce","a","v","updateProcessMarkerPosition","marker","delta","zoom","oldPoint","project","getRadius","newPoint","cos","PI","sin","unproject","calculateIconSize","round","apiKey","scheme","continuousWorld","addTo","createPane","zIndex","allProcessesLayer","clusterPane","zoomToBoundsOnClick","removeOutsideVisibleBounds","spiderfyDistanceMultiplier","chunkedLoading","showCoverageOnHover","maxClusterRadius","spiderLegPolylineOptions","iconCreateFunction","cluster","actualIconSize","Object","entries","join","getChildCount","feature","interactive","eachLayer","layer","zoneLayer","addLayer","on","code","centroid","_latlngs","zoneMarker","push","e","originalEvent","key","link","setTimeout","clearTimeout","fitBounds","getBounds","padding","participatory_processes","forEach","keys","includes","id","toString","participatoryProcess","linkTxt","pane","node","createElement","val","title","start_date","end_date","bindPopup","maxwidth","minWidth","keepInView","openPopup","participatory_process_data","bringToFront","bringToBack","hide","css","refreshClusters","show","$geolocalized","$geojson","toggleSubField","field","subfield","is","Queue","compare","defaultCompare","i","_down","item","_up","top","bottom","pop","pos","parent","current","halfLength","left","best","right","b","polylabel","polygon","precision","debug","minX","minY","maxX","maxY","p","cellSize","min","h","cellQueue","compareMax","Cell","bestCell","area","points","len","j","f","getCentroidCell","bboxCell","d","numProbes","cell","console","log","inside","minDistSq","Infinity","k","ring","getSegDistSq","sqrt","pointToPolygonDist","SQRT2","px","py","dx","dy","t","PolylabelCentroid","reverse","TileLayer","HERE","subdomains","minZoom","maxZoom","resource","mapId","format","appId","appCode","useCIT","useHTTPS","language","language2","schemeStart","split","tileResolution","params","encodeURIComponent","attributionPath","baseUrl","tileServer","indexOf","protocol","tileUrl","_attributionUrl","template","_attributionText","_attributionBBoxes","_fetchAttributionBBoxes","onRemove","_map","attributionControl","removeAttribution","off","_findCopyrightBBox","xmlhttp","XMLHttpRequest","onreadystatechange","bind","readyState","status","_parseAttributionBBoxes","JSON","parse","responseText","open","send","json","providers","normal","boxes","box","latLngBounds","_attributionProviders","visibleProviders","visibleBounds","minLevel","maxLevel","intersects","attributions","provider","alt","label","attributionText","addAttribution","tileLayer","here","opts","chop","start","truncate","append","fn","isNumeric","o","defaults","each","self","noBreaks","find","replaceWith","excess","stripTags","words","truncated","slice","keepFirstWord","exec","contents","get","el","$el","remove","nodeType","finishBlock","splitText","ellipsis","jQuery","Lib","SVGMarker","Opacity","module","exports","Browser","retina","overlaps","FeatureGroup","SubGroup","r","setParentGroup","LayerGroup","_parentGroup","addLayers","_onAddToGroupBatch","_onAddToGroup","_onAddToMap","removeLayers","_onRemoveFromGroupBatch","_onRemoveFromGroup","_onRemoveFromMap","_addLayerToGroup","_addLayerToMap","removeLayer","_removeLayerFromGroup","_removeLayerFromMap","setParentGroupSafe","getParentGroup","getLayers","hasLayer","addEventParent","getLayerId","_layers","fire","removeEventParent","featureGroup","subGroup","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","m","O","result","chunkIds","priority","notFulfilled","fulfilled","every","splice","obj","prop","hasOwnProperty","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}