{"version":3,"file":"js/decidim_decidim_awesome_map-9b0f39c578e648d569df.js","mappings":"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","sources":["webpack://app/webpack/runtime/chunk loaded","webpack://app/../usr/local/bundle/bundler/gems/decidim-f145b474185c/decidim-core/app/packs/src/decidim/map/svg-icon.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-f145b474185c/decidim-core/app/packs/src/decidim/map/icon.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-module-decidim_awesome-56e686f21756/app/packs/src/decidim/decidim_awesome/awesome_map/controls_ui.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-module-decidim_awesome-56e686f21756/app/packs/src/decidim/decidim_awesome/awesome_map/controllers/controller.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-module-decidim_awesome-56e686f21756/app/packs/src/decidim/decidim_awesome/awesome_map/api/api_fetcher.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-module-decidim_awesome-56e686f21756/app/packs/src/decidim/decidim_awesome/awesome_map/api/fetcher.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-module-decidim_awesome-56e686f21756/app/packs/src/decidim/decidim_awesome/awesome_map/api/proposals_fetcher.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-module-decidim_awesome-56e686f21756/app/packs/src/decidim/decidim_awesome/awesome_map/controllers/proposals_controller.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-module-decidim_awesome-56e686f21756/app/packs/src/decidim/decidim_awesome/awesome_map/api/meetings_fetcher.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-module-decidim_awesome-56e686f21756/app/packs/src/decidim/decidim_awesome/awesome_map/controllers/meetings_controller.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-module-decidim_awesome-56e686f21756/app/packs/src/decidim/decidim_awesome/awesome_map/awesome_map.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-module-decidim_awesome-56e686f21756/app/packs/src/decidim/decidim_awesome/awesome_map/load_map.js","webpack://app/../usr/local/bundle/bundler/gems/decidim-module-decidim_awesome-56e686f21756/app/packs/src/vendor/jquery.truncate.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 <ilya.atkin@unh.edu>\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 = `<circle class=\"${className}\" cx=\"${cx}\" cy=\"${cy}\" r=\"${radius\n }\" fill=\"${fill}\" fill-opacity=\"${fillOpacity\n }\" stroke=\"${stroke}\" stroke-opacity=${strokeOpacity}\" stroke-width=\"${strokeWidth}\"/>`\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 = `<path class=\"${className}\" d=\"${pathDescription\n }\" stroke-width=\"${strokeWidth}\" stroke=\"${stroke}\" stroke-opacity=\"${strokeOpacity\n }\" fill=\"${fill}\" fill-opacity=\"${fillOpacity}\"/>`\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 = `<filter id='iconShadowBlur'><feGaussianBlur in='SourceGraphic' stdDeviation='${blur}'/></filter>`\n\n let shadow = `<path filter=\"url(#iconShadowBlur\") class=\"${className}\" d=\"${pathDescription}\" fill=\"${fill}\" stroke-width=\"${strokeWidth}\" stroke=\"${stroke}\" style=\"opacity: ${opacity}; transform-origin: ${origin}; transform: rotate(${rotation}deg) translate(${translate}) scale(1, ${height})\" />`\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 = `<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" class=\"${className}\" style=\"${style}\">${shadow}${path}${circle}${text}</svg>`\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 = `<text text-anchor=\"middle\" x=\"${coordX}\" y=\"${coordY}\" style=\"font-size: ${fontSize}; font-weight: ${fontWeight}\" fill=\"${textColor}\">${circleText}</text>`\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 = `<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" class=\"${className}\" style=\"${style}\">${path}${circle}${text}</svg>`;\n\n return svg;\n }\n});\n","/* eslint-disable no-ternary, multiline-ternary */\n\nimport * as L from \"leaflet\";\n\nexport default class ControlsUI {\n constructor(awesomeMap) {\n this.awesomeMap = awesomeMap;\n\n this.main = L.control.layers(null, null, {\n position: \"topleft\",\n sortLayers: false,\n collapsed: this.awesomeMap.config.collapsedMenu\n // hideSingleBase: true\n });\n\n if (this.awesomeMap.config.hideControls) {\n $(this.main.getContainer()).hide();\n }\n\n this.$loading = $(\"#awesome-map .loading-spinner\");\n this.onHashtag = this._orderHashtags;\n\n this.awesomeMap.map.on(\"overlayadd\", () => {\n this.removeHiddenCategories();\n });\n }\n\n attach() {\n // legends\n this.main.addTo(this.awesomeMap.map);\n\n this.addSearchControls();\n if (this.awesomeMap.config.menu.categories) {\n this.addCategoriesControls();\n }\n\n // sub-layer hashtag title toggle\n $(\"#awesome-map\").on(\"click\", \".awesome_map-title-control\", (evt) => {\n evt.preventDefault();\n evt.stopPropagation();\n $(\"#awesome_map-categories-control\").toggleClass(\"active\");\n $(\"#awesome_map-hashtags-control\").toggleClass(\"active\");\n });\n\n // hashtag events\n $(\"#awesome-map\").on(\"change\", \".awesome_map-hashtags-selector\", (evt) => {\n evt.preventDefault();\n evt.stopPropagation();\n const tag = $(evt.target).closest(\"label\").data(\"layer\");\n // console.log(\"changed, layer\", tag, \"checked\", evt.target.checked, e);\n if (tag) {\n this.updateHashtagLayers();\n }\n });\n\n // select/deselect all tags\n $(\"#awesome-map\").on(\"click\", \".awesome_map-toggle_all_tags\", (evt) => {\n evt.preventDefault();\n evt.stopPropagation();\n $(\"#awesome-map .awesome_map-hashtags-selector\").prop(\"checked\", $(\"#awesome-map .awesome_map-hashtags-selector:checked\").length < $(\"#awesome-map .awesome_map-hashtags-selector\").length);\n this.updateHashtagLayers();\n });\n }\n\n addSearchControls() {\n $(this.main.getContainer()).contents(\"form\").append(`<div id=\"awesome_map-categories-control\" class=\"active\"><b class=\"awesome_map-title-control\">${window.DecidimAwesome.texts.categories}</b><div class=\"categories-container\"></div></div>\n <div id=\"awesome_map-hashtags-control\"><b class=\"awesome_map-title-control\">${window.DecidimAwesome.texts.hashtags}</b><div class=\"hashtags-container\"></div><a href=\"#\" class=\"awesome_map-toggle_all_tags\">${window.DecidimAwesome.texts.select_deselect_all}</a></div>`);\n }\n\n addCategoriesControls() {\n this.awesomeMap.categories.forEach((category) => {\n // add control layer for this category\n const label = `<i class=\"awesome_map-category_${category.id}\"></i> ${category.name}`;\n this.awesomeMap.layers[category.id] = {\n label: label,\n group: new L.FeatureGroup.SubGroup(this.awesomeMap.cluster)\n };\n this.awesomeMap.layers[category.id].group.addTo(this.awesomeMap.map);\n $(\"#awesome_map-categories-control .categories-container\").append(`<label data-layer=\"${category.id}\" class=\"awesome_map-category-${category.id}${category.parent ? \" subcategory\" : \"\"}\" data-parent=\"${category.parent}\"><input type=\"checkbox\" class=\"awesome_map-categories-selector\" checked><span>${label}</span></label>`);\n })\n\n // category events\n $(\"#awesome-map\").on(\"change\", \".awesome_map-categories-selector\", (evt) => {\n evt.preventDefault();\n evt.stopPropagation();\n\n const id = $(evt.target).closest(\"label\").data(\"layer\");\n const cat = this.awesomeMap.getCategory(id);\n // console.log(\"changed, layer\", id, \"cat\", cat, \"checked\", evt.target.checked, e);\n if (cat) {\n const layer = this.awesomeMap.layers[cat.id];\n if (evt.target.checked) {\n // show group of markers\n this.awesomeMap.map.addLayer(layer.group);\n } else {\n // hide group of markers\n this.awesomeMap.map.removeLayer(layer.group);\n // cat.children().forEach((c) => {\n // let $el = $(`.awesome_map-category-${c.id}`);\n // if($el.contents(\"input\").prop(\"checked\")) {\n // $el.click();\n // }\n // });\n }\n // if it's a children, put the parent to indeterminate\n this._indeterminateParentInput(cat);\n // sync tags\n this.updateHashtagLayers();\n }\n });\n }\n\n // Hashtags are collected directly from proposals (this is different than categories)\n addHashtagsControls(hashtags, marker) {\n // show hashtag layer\n if (hashtags && hashtags.length) {\n $(\"#awesome_map-hashtags-control\").show();\n hashtags.forEach((hashtag) => {\n // Add layer if not exists, otherwise just add the marker to the group\n if (!this.awesomeMap.layers[hashtag.tag]) {\n this.awesomeMap.layers[hashtag.tag] = {\n label: hashtag.name,\n group: new L.FeatureGroup.SubGroup(this.awesomeMap.cluster)\n };\n this.awesomeMap.map.addLayer(this.awesomeMap.layers[hashtag.tag].group);\n $(\"#awesome_map-hashtags-control .hashtags-container\").append(`<label data-layer=\"${hashtag.tag}\" class=\"awesome_map-hashtag-${hashtag.tag}\"><input type=\"checkbox\" class=\"awesome_map-hashtags-selector\" checked><span>${hashtag.name}</span></label>`);\n // Call a trigger, might be in service for customizations\n this.onHashtag(hashtag, $(\"#awesome_map-hashtags-control .hashtags-container\"));\n }\n this.awesomeMap.layers[hashtag.tag].group.addLayer(marker);\n\n const $label = $(`label.awesome_map-hashtag-${hashtag.tag}`);\n // update number of items\n $label.attr(\"title\", `${parseInt($label.attr(\"title\") || 0, 10) + 1} ${window.DecidimAwesome.texts.items}`);\n });\n }\n }\n\n showCategory(cat) {\n $(\"#awesome_map-categories-control\").show();\n // show category if hidden\n const $label = $(`label.awesome_map-category-${cat.id}`);\n const $parent = $(`label.awesome_map-category-${cat.parent}`);\n $label.show();\n // update number of items\n $label.attr(\"title\", `${parseInt($label.attr(\"title\") || 0, 10) + 1} ${window.DecidimAwesome.texts.items}`);\n // show parent if apply\n $parent.show();\n $parent.attr(\"title\", `${parseInt($parent.attr(\"title\") || 0, 10) + 1} ${window.DecidimAwesome.texts.items}`);\n }\n\n removeHiddenComponents() {\n $(\".awesome_map-component\").each((_idx, el) => {\n const layer = this.awesomeMap.layers[$(el).data(\"layer\")];\n const $input = $(el).closest(\"div\").find(\"input:not(:checked)\");\n if (layer && $input.length) {\n this.awesomeMap.map.addLayer(layer.group);\n this.awesomeMap.map.removeLayer(layer.group);\n }\n });\n }\n\n removeHiddenCategories() {\n $(\".awesome_map-categories-selector:not(:checked)\").each((_idx, el) => {\n const layer = this.awesomeMap.layers[$(el).closest(\"label\").data(\"layer\")];\n if (layer) {\n this.awesomeMap.map.addLayer(layer.group);\n this.awesomeMap.map.removeLayer(layer.group);\n }\n });\n }\n\n updateHashtagLayers() {\n // hide all\n $(\".awesome_map-hashtags-selector\").each((_idx, el) => {\n const layer = this.awesomeMap.layers[$(el).closest(\"label\").data(\"layer\")];\n if (layer) {\n this.awesomeMap.map.removeLayer(layer.group);\n }\n });\n // show selected only\n $(\".awesome_map-hashtags-selector:checked\").each((_idx, el) => {\n const layer = this.awesomeMap.layers[$(el).closest(\"label\").data(\"layer\")];\n if (layer) {\n this.awesomeMap.map.addLayer(layer.group);\n }\n });\n // hide non-selected categories\n this.removeHiddenComponents();\n this.removeHiddenCategories();\n }\n\n updateStats(uid, total) {\n // update component stats\n const $component = $(`#awesome_map-${uid}`);\n $component.attr(\"title\", `${total} ${window.DecidimAwesome.texts.items}`);\n }\n\n _indeterminateParentInput(cat) {\n if (cat.parent) {\n let $input = $(`.awesome_map-category-${cat.parent}`).contents(\"input\");\n let $subcats = $(`[class^=\"awesome_map-category-\"][data-parent=\"${cat.parent}\"]:visible`);\n let numChecked = $subcats.contents(\"input:checked\").length;\n $input.prop(\"indeterminate\", numChecked !== $subcats.length && numChecked !== 0);\n }\n }\n\n // order hashtags alphabetically\n _orderHashtags(_hashtag, $div) {\n let $last = $div.contents(\"label:last\");\n if ($last.prev(\"label\").length) {\n // move the label to order it alphabetically\n $div.contents(\"label\").each((_idx, el) => {\n if ($(el).text().localeCompare($last.text()) > 0) {\n $(el).before($last);\n }\n });\n }\n }\n}\n","import * as L from \"leaflet\";\n\nexport default class Controller {\n constructor(awesomeMap, component) {\n this.awesomeMap = awesomeMap;\n this.component = component;\n this.templateId = \"marker-meeting-popup\";\n this.controls = {\n label: this.getLabel(),\n group: new L.FeatureGroup.SubGroup(this.awesomeMap.cluster)\n };\n this.onFinished = () => {};\n this.allNodes = [];\n }\n\n getLabel() {\n let text = this.awesomeMap.config.menu.mergeComponents || this.component.name;\n if (!text) {\n text = window.DecidimAwesome.texts[this.component.type];\n }\n return `<span class=\"awesome_map-component\" id=\"awesome_map-component_${this.component.id}\" title=\"0\" data-layer=\"${this.component.type}\">${text}</span>`\n }\n\n setFetcher(Fetcher) {\n let checkProposalState = function (node, map) {\n const showConfig = map.config.show;\n return showConfig[node.state || \"notAnswered\"];\n }\n\n this.fetcher = new Fetcher(this);\n this.fetcher.onFinished = () => {\n // console.log(`all ${this.component.type} loaded`, this)\n this._onFinished();\n };\n this.fetcher.onCollection = (collection) => {\n if (collection && collection.edges) {\n // Add markers to the main cluster group\n let collectionEdges = [];\n if (this.fetcher.collection === \"meetings\") {\n collectionEdges = collection.edges.filter((item) => item.node.coordinates && item.node.coordinates.latitude && item.node.coordinates.longitude);\n } else {\n collectionEdges = collection.edges.filter((item) => item.node.coordinates && item.node.coordinates.latitude && item.node.coordinates.longitude && checkProposalState(item.node, this.awesomeMap));\n }\n\n try {\n this.awesomeMap.cluster.addLayers(collectionEdges.map((item) => item.node.marker));\n } catch (evt) {\n console.error(\"Failed marker collection assignation\", collectionEdges, \"error\", evt);\n }\n // subgroups don't have th addLayers utility\n collectionEdges.forEach((item) => {\n this.awesomeMap.layers[this.component.type].group.addLayer(item.node.marker);\n this.addMarkerCategory(item.node.marker, item.node.category);\n this.addMarkerHashtags(item.node.marker, item.node.hashtags);\n });\n }\n };\n }\n\n addControls() {\n this.awesomeMap.controls.main.addOverlay(this.controls.group, this.controls.label);\n this.controls.group.addTo(this.awesomeMap.map);\n this.awesomeMap.layers[this.component.type] = this.controls;\n }\n\n loadNodes() {\n // to override\n }\n\n addMarker(marker, node) {\n\n /*\n theorically, this should be enough to create popups on markers but it looks that\n there is some bug in leaflet that sometimes prevents this to work\n */\n /*\n let dom = document.createElement(\"div\");\n // console.log(\"addMarker\", marker, \"dom\", dom)\n dom.innerHTML = $.templates(`#${this.templateId}`).render(node);\n marker.bindPopup(dom, {\n maxwidth: 640,\n minWidth: 500,\n keepInView: true,\n className: \"map-info\"\n }); //*/\n\n marker.on(\"click\", () => {\n let dom = document.createElement(\"div\");\n dom.innerHTML = $.templates(`#${this.templateId}`).render(node);\n\n let pop = L.popup({\n maxwidth: 640,\n minWidth: 500,\n keepInView: true,\n className: \"map-info\"\n\n }).setLatLng(marker.getLatLng()).setContent(dom);\n this.awesomeMap.map.addLayer(pop);\n });\n node.marker = marker;\n node.component = this.component;\n this.allNodes.push(node);\n }\n\n addMarkerCategory(marker, category) {\n // Add to category layer\n const cat = this.awesomeMap.getCategory(category);\n if (this.awesomeMap.layers[cat.id]) {\n try {\n this.awesomeMap.layers[cat.id].group.addLayer(marker);\n this.awesomeMap.controls.showCategory(cat);\n } catch (evt) {\n console.error(\"Failed category marker assignation\", marker, evt.message);\n }\n }\n }\n\n addMarkerHashtags(marker, hashtags) {\n // Add hashtag layer\n if (this.awesomeMap.config.menu.hashtags) {\n try {\n this.awesomeMap.controls.addHashtagsControls(hashtags, marker);\n } catch (evt) {\n console.error(\"Failed hashtags marker assignation\", marker, evt.message);\n }\n }\n }\n\n // Override if needed (call this.onFinished() at the end!)\n _onFinished() {\n this.awesomeMap.controls.updateStats(`component_${this.component.id}`, this.allNodes.length);\n this.onFinished();\n }\n\n createIcon(Builder, color) {\n return new Builder({\n color: \"#000000\",\n fillColor: color,\n circleFillColor: color,\n weight: 1,\n stroke: color,\n fillOpacity: 0.9\n });\n }\n}\n","export default class ApiFetcher { // eslint-disable-line no-unused-vars\n constructor(query, variables) {\n this.query = query;\n this.variables = variables;\n }\n\n fetch(callback) {\n $.ajax({\n method: \"POST\",\n url: \"/api\",\n contentType: \"application/json\",\n data: JSON.stringify({\n query: this.query,\n variables: this.variables\n })\n }).done(function(data) {\n callback(data.data);\n });\n }\n\n fetchAll (callback) {\n this.fetch(callback);\n }\n}\n","import ApiFetcher from \"src/decidim/decidim_awesome/awesome_map/api/api_fetcher\";\n\nexport default class Fetcher {\n constructor(controller) {\n this.controller = controller;\n this.config = {\n length: controller.awesomeMap.config.length || 255\n };\n this.onFinished = () => {};\n this.onNode = () => {};\n this.onCollection = () => {};\n this.hashtags = [];\n\n this.collection = this.controller.component.type;\n // override in specific components:\n this.query = `query ($id: ID!, $after: String!) {\n component(id: $id) {\n id\n __typename\n }\n }`;\n }\n\n fetch(after = \"\") {\n const variables = {\n \"id\": this.controller.component.id,\n \"after\": after\n };\n const api = new ApiFetcher(this.query, variables);\n api.fetchAll((result) => {\n if (result) {\n const collection = result.component[this.collection];\n // console.log(\"collection\",collection)\n \n collection.edges.forEach((element) => {\n let node = element.node;\n if (!node) {\n return;\n }\n \n if (node.coordinates && node.coordinates.latitude && node.coordinates.longitude) {\n this.decorateNode(node);\n this.onNode(node)\n }\n });\n\n this.onCollection(collection);\n\n if (collection.pageInfo.hasNextPage) {\n this.fetch(collection.pageInfo.endCursor);\n } else {\n this.onFinished();\n }\n }\n });\n }\n\n decorateNode(node) {\n const body = this.findTranslation(node.body.translations);\n const title = this.findTranslation(node.title.translations);\n node.hashtags = this.collectHashtags(title);\n node.hashtags = node.hashtags.concat(this.collectHashtags(body));\n // hashtags in the title look ugly, lets replace the gid:... structure with the tag #name\n node.title.translation = this.replaceHashtags(title, node.hashtags);\n node.body.translation = this.appendHtmlHashtags(this.truncate(this.removeHashtags(body)).replace(/\\n/g, \"<br>\"), node.hashtags);\n node.link = `${this.controller.component.url}/${this.collection}/${node.id}`;\n }\n\n findTranslation(translations) {\n let lang = document.querySelector(\"html\").getAttribute(\"lang\"),\n text = \"\";\n \n translations.forEach((txt) => {\n if (txt.text) {\n if (!text || txt.locale === lang) {\n text = txt.text\n }\n }\n });\n return text;\n }\n\n collectHashtags(text) {\n let tags = [];\n if (text) {\n const gids = text.match(/gid:\\/\\/[^\\s<&]+/g)\n if (gids) {\n tags = gids.filter((gid) => gid.indexOf(\"/Decidim::Hashtag/\") !== -1).map((gid) => {\n const parts = gid.split(\"/\");\n const fromSelector = parts[5].charAt(0) === \"_\";\n const tag = fromSelector ? parts[5].substr(1) : parts[5]; // eslint-disable-line no-ternary, multiline-ternary\n const name = `#${tag}`;\n const html = `<a href=\"/search?term=${name}\">${name}</a>`;\n const hashtag = {\n color: getComputedStyle(document.documentElement).getPropertyValue(\"--secondary\"),\n gid: gid,\n id: parseInt(parts[4], 10),\n fromSelector: fromSelector,\n tag: tag,\n name: name,\n html: html\n }\n this.hashtags.push(hashtag)\n return hashtag;\n });\n }\n }\n return tags;\n }\n\n replaceHashtags(txt, hashtags) {\n let text = txt;\n hashtags.forEach((tag) => {\n text = text.replace(tag.gid, tag.name)\n });\n return text;\n }\n\n removeHashtags(text) {\n return text.replace(/gid:\\/\\/[^\\s<&]+/g, \"\");\n }\n\n appendHtmlHashtags(txt, tags) {\n let text = txt;\n tags.forEach((tag) => {\n text += ` ${tag.html}`;\n });\n return text;\n }\n\n truncate(html) {\n return $.truncate(html, this.config);\n }\n}\n","import Fetcher from \"src/decidim/decidim_awesome/awesome_map/api/fetcher\";\n\nexport default class ProposalsFetcher extends Fetcher {\n constructor(controller) {\n super(controller);\n this.query = `query ($id: ID!, $after: String!) {\n component(id: $id) {\n id\n __typename\n ... on Proposals {\n proposals(first: 50, after: $after){\n pageInfo {\n hasNextPage\n endCursor\n }\n edges {\n node {\n id\n state\n title {\n translations {\n text\n locale\n }\n }\n body {\n translations {\n text\n locale\n }\n }\n address\n coordinates {\n latitude\n longitude\n }\n amendments {\n emendation {\n id\n }\n }\n category {\n id\n }\n }\n }\n }\n }\n }\n }`;\n }\n}\n","import * as L from \"leaflet\";\nimport Controller from \"src/decidim/decidim_awesome/awesome_map/controllers/controller\";\nimport ProposalsFetcher from \"src/decidim/decidim_awesome/awesome_map/api/proposals_fetcher\";\n\nconst ProposalIcon = L.DivIcon.SVGIcon.DecidimIcon.extend({\n options: {\n fillColor: \"#ef604d\",\n fillOpacity: 0.8,\n strokeWidth: 1,\n strokeOpcacity: 1\n }\n});\nexport default class ProposalsController extends Controller {\n constructor(awesomeMap, component) {\n super(awesomeMap, component)\n this.templateId = \"marker-proposal-popup\";\n this.amendments = {};\n this.setFetcher(ProposalsFetcher);\n }\n\n addControls() {\n super.addControls();\n\n // add control layer for amendments if any\n if (this.awesomeMap.config.menu.amendments && this.component.amendments && !this.awesomeMap.layers.amendments) {\n this.awesomeMap.layers.amendments = {\n label: `<span class=\"awesome_map-component\" id=\"awesome_map-amendments_${this.component.id}\" title=\"0\" data-layer=\"amendments\">${window.DecidimAwesome.texts.amendments}</span>`,\n group: new L.FeatureGroup.SubGroup(this.awesomeMap.cluster)\n }\n this.awesomeMap.controls.main.addOverlay(this.awesomeMap.layers.amendments.group, this.awesomeMap.layers.amendments.label);\n this.awesomeMap.layers.amendments.group.addTo(this.awesomeMap.map);\n }\n }\n\n loadNodes() {\n // for each proposal, create a marker with an associated popup\n this.fetcher.onNode = (proposal) => {\n let marker = new L.Marker([proposal.coordinates.latitude, proposal.coordinates.longitude], {\n icon: this.createIcon(ProposalIcon, this.awesomeMap.getCategory(proposal.category).color),\n title: proposal.title.translation\n });\n\n // Check if it has amendments, add it to a list\n // also assign parent's proposal categories to it\n if (proposal.amendments && proposal.amendments.length) {\n proposal.amendments.forEach((amendment) => {\n this.amendments[amendment.emendation.id] = proposal;\n });\n }\n\n // console.log(\"new proposal\", proposal, \"marker\", marker)\n this.addMarker(marker, proposal);\n };\n\n this.fetcher.fetch();\n }\n\n _onFinished() {\n const iterableAmendments = Object.entries(this.amendments);\n this.awesomeMap.controls.updateStats(`component_${this.component.id}`, this.allNodes.length - iterableAmendments.length);\n this.awesomeMap.controls.updateStats(`amendments_${this.component.id}`, iterableAmendments.length);\n\n // Process all amendments\n iterableAmendments.forEach((amendment) => {\n const marker = this.allNodes.find((node) => node.id === amendment[0]);\n const parent = amendment[1];\n // console.log(\"marker\", marker, \"parent proposal\", parent)\n // add marker to amendments layers and remove it from proposals\n if (marker) {\n try { \n marker.marker.removeFrom(this.controls.group) \n } catch (evt) { \n console.error(\"error removeFrom marker\", marker, \"layer\", this.controls.group, evt);\n }\n if (this.awesomeMap.config.menu.amendments) {\n marker.marker.addTo(this.awesomeMap.layers.amendments.group);\n // mimic parent category (amendments doesn't have categories)\n if (parent.category) {\n marker.marker.setIcon(this.createIcon(ProposalIcon, this.awesomeMap.getCategory(parent.category).color));\n this.addMarkerCategory(marker.marker, parent.category)\n }\n }\n }\n });\n\n this.onFinished();\n }\n}\n","import Fetcher from \"src/decidim/decidim_awesome/awesome_map/api/fetcher\";\n\nexport default class MeetingsFetcher extends Fetcher {\n constructor(controller) {\n super(controller);\n this.query = `query ($id: ID!, $after: String!) {\n component(id: $id) {\n id\n __typename\n ... on Meetings {\n meetings(first: 50, after: $after) {\n pageInfo {\n hasNextPage\n endCursor\n }\n edges {\n node {\n id\n title {\n translations {\n text\n locale\n }\n }\n body: description {\n translations {\n text\n locale\n }\n }\n startTime\n location {\n translations {\n text\n locale\n }\n }\n address\n locationHints {\n translations {\n text\n locale\n }\n }\n coordinates {\n latitude\n longitude\n }\n category {\n id\n }\n }\n }\n }\n }\n }\n }`;\n }\n}\n","import * as L from \"leaflet\";\nimport Controller from \"src/decidim/decidim_awesome/awesome_map/controllers/controller\";\nimport MeetingsFetcher from \"src/decidim/decidim_awesome/awesome_map/api/meetings_fetcher\";\n\nconst MeetingIcon = L.DivIcon.SVGIcon.DecidimIcon.extend({\n _createPathDescription: function() {\n return \"M 15.991543,4 C 7.3956015,4 2.9250351,10.5 3.000951,16.999999 3.1063486,26.460968 12.747693,30.000004 15.991543,43 19.242091,30.000004 29,26.255134 29,16.999999 29,10.5 23.951131,4 15.996007,4 m -0.153508,2.6000001 a 2.1720294,2.1076698 0 0 1 2.330514,2.1124998 2.177008,2.1125006 0 0 1 -4.354016,0 2.1720294,2.1076698 0 0 1 2.023502,-2.1124998 m -2.651707,4.8056679 h 5.610202 l 3.935584,7.569899 -1.926038,0.934266 -2.009546,-3.859265 v 14.557403 h -2.484243 v -9.126003 h -0.642162 v 9.126003 H 13.190347 V 16.050568 l -2.009545,3.859265 -1.926036,-0.934266 3.935581,-7.569899\";\n }\n});\n\nexport default class MeetingsController extends Controller {\n constructor(awesomeMap, component) {\n super(awesomeMap, component)\n this.templateId = \"marker-meeting-popup\";\n this.setFetcher(MeetingsFetcher);\n }\n\n loadNodes() {\n // for each meeting, create a marker with an associated popup\n this.fetcher.onNode = (meeting) => {\n let marker = new L.Marker([meeting.coordinates.latitude, meeting.coordinates.longitude], {\n icon: this.createIcon(MeetingIcon, this.awesomeMap.getCategory(meeting.category).color),\n title: meeting.title.translation\n });\n // console.log(\"new meeting\", meeting, marker)\n this.addMarker(marker, meeting);\n };\n\n this.fetcher.fetch();\n }\n}\n","import * as L from \"leaflet\";\n// comes with Decidim\nimport \"src/decidim/map/icon.js\" \nimport \"leaflet-tilelayer-here\"\n// Comes with Decidim\nimport \"leaflet.markercluster\"; \n// included in this package.json\nimport \"leaflet.featuregroup.subgroup\" \nimport \"src/vendor/jquery.truncate\"\nimport \"jsrender\"\n\nimport ControlsUI from \"src/decidim/decidim_awesome/awesome_map/controls_ui\";\nimport ProposalsController from \"src/decidim/decidim_awesome/awesome_map/controllers/proposals_controller\";\nimport MeetingsController from \"src/decidim/decidim_awesome/awesome_map/controllers/meetings_controller\";\n\nexport default class AwesomeMap {\n constructor(map, config) {\n this.map = map;\n this.categories = window.AwesomeMap && window.AwesomeMap.categories || []\n this.config = $.extend({\n length: 255,\n center: null,\n zoom: 8,\n menu: {\n amendments: false,\n meetings: false,\n categories: true,\n hashtags: false,\n mergeComponents: false\n },\n show: {\n withdrawn: false,\n accepted: false,\n evaluating: false,\n notAnswered: false,\n rejected: false\n },\n hideControls: false,\n collapsedMenu: false,\n components: []\n }, config);\n this.layers = {};\n this.cluster = new L.MarkerClusterGroup();\n this.map.addLayer(this.cluster);\n this.controls = new ControlsUI(this);\n this.onFinished = () => {};\n this.controllers = {};\n this.loading = [];\n this._firstController = {};\n }\n\n // Queries the API and load all the markers\n loadControllers() {\n this.autoResize();\n this.controls.attach();\n\n this.config.components.forEach((component) => {\n const controller = this._getController(component);\n if (controller) {\n controller.loadNodes();\n this.loading.push(component.type);\n controller.onFinished = () => {\n this.loading.pop();\n this.autoResize();\n\n if (this.loading.length === 0) {\n this.controls.$loading.hide();\n // call trigger as all loads are finished\n this.onFinished();\n }\n };\n }\n });\n }\n\n autoResize() {\n // Setup center/zoom options if specified, otherwise fitbounds\n const bounds = this.cluster.getBounds()\n if (this.config.center && this.config.zoom) {\n this.map.setView(this.config.center, this.config.zoom);\n } else if (bounds.isValid()) {\n // this.map.fitBounds(bounds, { padding: [50, 50] }); // this doesn't work much of the time, probably some race condition\n this.map.fitBounds([[bounds.getNorth(), bounds.getEast()], [bounds.getSouth(), bounds.getWest()]], { padding: [50, 50] });\n }\n }\n\n getCategory(category) {\n let defaultCat = {\n color: getComputedStyle(document.documentElement).getPropertyValue(\"--primary\"),\n children: () => {},\n parent: null,\n name: null\n };\n\n if (category) {\n let id = category.id ? parseInt(category.id, 10) : parseInt(category, 10); // eslint-disable-line no-ternary, multiline-ternary\n let cat = this.categories.find((ct) => ct.id === id);\n if (cat) {\n cat.children = () => {\n return this.categories.filter((ct) => ct.parent === cat.id);\n }\n return cat;\n }\n }\n return defaultCat;\n }\n\n _getController(component) {\n let controller = null;\n\n if (component.type === \"proposals\") {\n controller = new ProposalsController(this, component);\n }\n if (component.type === \"meetings\" && this.config.menu.meetings) {\n controller = new MeetingsController(this, component);\n }\n\n if (controller) {\n // Agrupate layers for controlling components\n if (this._firstController[component.type] && this.config.menu.mergeComponents) {\n controller.controls = this._firstController[component.type].controls;\n } else {\n controller.addControls();\n }\n this._firstController[component.type] = this._firstController[component.type] || controller;\n this.controllers[component.type] = controller;\n return this.controllers[component.type]\n }\n return null;\n }\n}\n","import AwesomeMap from \"src/decidim/decidim_awesome/awesome_map/awesome_map\"\n\n$(() => {\n const sanitizeCenter = (string) => {\n if (string) {\n const parts = string.split(\",\")\n if (parts.length >= 2) {\n const lat = parseFloat(parts[0]);\n const lng = parseFloat(parts[1]);\n if (lat && lng) {\n return [lat, lng];\n }\n }\n }\n return null;\n };\n\n const config = {\n length: $(\"#awesome-map\").data(\"truncate\") || 254,\n center: sanitizeCenter($(\"#awesome-map\").data(\"map-center\")),\n zoom: $(\"#awesome-map\").data(\"map-zoom\"), \n menu: {\n amendments: $(\"#awesome-map\").data(\"menu-amendments\"),\n meetings: $(\"#awesome-map\").data(\"menu-meetings\"),\n categories: $(\"#awesome-map\").data(\"menu-categories\"),\n hashtags: $(\"#awesome-map\").data(\"menu-hashtags\"),\n mergeComponents: $(\"#awesome-map\").data(\"menu-merge-components\")\n },\n show: {\n withdrawn: $(\"#awesome-map\").data(\"show-withdrawn\"),\n accepted: $(\"#awesome-map\").data(\"show-accepted\"),\n evaluating: $(\"#awesome-map\").data(\"show-evaluating\"),\n notAnswered: $(\"#awesome-map\").data(\"show-not-answered\"),\n rejected: $(\"#awesome-map\").data(\"show-rejected\")\n },\n hideControls: $(\"#awesome-map\").data(\"hide-controls\"),\n collapsedMenu: $(\"#awesome-map\").data(\"collapsed\"),\n components: $(\"#awesome-map\").data(\"components\")\n };\n\n // build awesome map (if exist)\n $(\"#awesome-map .google-map\").on(\"ready.decidim\", (evt, map) => {\n // bindPopup doesn't work for some unknown cause and these handler neither so we're cancelling them\n map.off(\"popupopen\");\n map.off(\"popupclose\");\n\n // console.log(\"ready map\", map);\n\n window.AwesomeMap = new AwesomeMap(map, config);\n window.AwesomeMap.loadControllers();\n });\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 $('<div></div>').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 <br> 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","// 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\t8981: 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,4631], function() { return __webpack_require__(72823); })\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","concat","_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","ControlsUI","awesomeMap","_this","_classCallCheck","main","layers","position","sortLayers","collapsed","config","collapsedMenu","hideControls","$","getContainer","hide","$loading","onHashtag","_orderHashtags","on","removeHiddenCategories","key","value","_this2","addTo","addSearchControls","menu","categories","addCategoriesControls","evt","preventDefault","stopPropagation","toggleClass","target","closest","data","updateHashtagLayers","prop","length","contents","append","window","DecidimAwesome","texts","hashtags","select_deselect_all","_this3","forEach","category","label","id","name","group","SubGroup","cluster","parent","cat","getCategory","layer","checked","addLayer","removeLayer","_indeterminateParentInput","marker","_this4","show","hashtag","tag","$label","attr","parseInt","items","$parent","_this5","each","_idx","el","$input","find","_this6","_this7","removeHiddenComponents","uid","total","$subcats","numChecked","_hashtag","$div","$last","prev","localeCompare","before","Controller","component","templateId","controls","getLabel","onFinished","allNodes","mergeComponents","type","Fetcher","fetcher","_onFinished","onCollection","collection","edges","collectionEdges","filter","item","node","coordinates","latitude","longitude","state","addLayers","console","error","addMarkerCategory","addMarkerHashtags","addOverlay","dom","document","createElement","innerHTML","templates","render","pop","maxwidth","minWidth","keepInView","setLatLng","getLatLng","setContent","push","showCategory","message","addHashtagsControls","updateStats","Builder","ApiFetcher","query","variables","callback","ajax","method","url","contentType","JSON","stringify","done","fetch","controller","onNode","after","arguments","undefined","fetchAll","result","element","decorateNode","pageInfo","hasNextPage","endCursor","body","findTranslation","translations","title","collectHashtags","translation","replaceHashtags","appendHtmlHashtags","truncate","removeHashtags","link","lang","querySelector","getAttribute","txt","locale","tags","gids","match","gid","indexOf","parts","split","fromSelector","charAt","substr","getComputedStyle","documentElement","getPropertyValue","ProposalsFetcher","_Fetcher","_callSuper","_inherits","ProposalIcon","strokeOpcacity","ProposalsController","_Controller","amendments","setFetcher","_get","_getPrototypeOf","proposal","createIcon","amendment","emendation","addMarker","iterableAmendments","Object","entries","removeFrom","MeetingsFetcher","MeetingIcon","MeetingsController","meeting","AwesomeMap","center","zoom","meetings","withdrawn","accepted","evaluating","notAnswered","rejected","components","controllers","loading","_firstController","autoResize","attach","_getController","loadNodes","bounds","getBounds","setView","isValid","fitBounds","getNorth","getEast","getSouth","getWest","padding","defaultCat","ct","addControls","string","lat","parseFloat","lng","sanitizeCenter","off","loadControllers","chop","start","fn","isNumeric","o","defaults","self","noBreaks","replaceWith","excess","stripTags","words","truncated","slice","keepFirstWord","exec","get","reverse","i","$el","remove","nodeType","finishBlock","splitText","ellipsis","Infinity","jQuery","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","m","O","chunkIds","priority","notFulfilled","fulfilled","j","keys","every","splice","r","obj","hasOwnProperty","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","bind","__webpack_exports__"],"sourceRoot":""}