{"version":3,"file":"static/components/carte/events-43eab68a32e6510255c2.js?cv=7","mappings":"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","sources":["webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/carte/components/map/searchControl.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/carte/components/groups.domain.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/carte/components/map/layerControl.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/carte/components/map/itemPopups.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/carte/components/map/listMapEvent.js","webpack:///home/runner/work/actionpopulaire.fr/actionpopulaire.fr/agir/carte/components/events.js"],"sourcesContent":["import Control from \"ol/control/Control\";\nimport { fromLonLat } from \"ol/proj\";\nimport { OpenStreetMapProvider } from \"leaflet-geosearch\";\nimport {\n  from,\n  fromEvent,\n  merge,\n  debounceTime,\n  map,\n  filter,\n  switchMap,\n  startWith,\n  tap,\n} from \"rxjs\";\n\nimport { element } from \"./utils\";\n\nexport default function makeSearchControl(view) {\n  const provider = new OpenStreetMapProvider();\n\n  const input = element(\"input\", [], { type: \"text\" });\n  const list = element(\"ul\", [], { className: \"results\" });\n  const form = element(\"form\", [\n    input,\n    [\"button\", [[\"i\", [], { className: \"fa fa-search\" }]]],\n  ]);\n\n  const control = element(\"div\", [form, list], { className: \"search_box\" });\n\n  async function search(value) {\n    let results;\n    try {\n      results = await provider.search({ query: value });\n    } catch (e) {\n      return {\n        error: \"Impossible de contacter le service de recherche d'adresses.\",\n      };\n    }\n    if (results.length === 0) {\n      return { error: \"Lieu inconnu\" };\n    }\n    return { results: results };\n  }\n\n  function goToCoordinates(coords) {\n    view.animate({\n      center: fromLonLat(coords),\n      zoom: 14,\n    });\n  }\n\n  function updateResults(results) {\n    list.innerHTML = results\n      .map(\n        (r) =>\n          `<li><a href=\"#\" data-cx=\"${r.x}\" data-cy=\"${r.y}\">${r.label}</a></li>`,\n      )\n      .join(\"\");\n    list.classList.add(\"show\");\n  }\n\n  function displayError(error) {\n    list.innerHTML = `<li><em>${error}</em></li>`;\n    list.classList.add(\"show\");\n  }\n\n  function hideList() {\n    list.classList.remove(\"show\");\n  }\n\n  control.addEventListener(\"click\", function (ev) {\n    ev.stopPropagation();\n  });\n\n  const documentClicked$ = fromEvent(document, \"click\");\n  const debouncedInputChange$ = fromEvent(input, \"input\").pipe(\n    debounceTime(700),\n    filter((e) => e.target.value.length > 3),\n  );\n  const formSubmitted$ = fromEvent(form, \"submit\").pipe(\n    tap((e) => e.preventDefault()),\n  );\n  const listLinkClicked$ = fromEvent(list, \"click\").pipe(\n    filter((e) => e.target.tagName === \"A\"),\n    tap((e) => e.preventDefault()),\n    map((e) => [+e.target.dataset.cx, +e.target.dataset.cy]),\n  );\n\n  // l'observable des requêtes réalisées à partir du champ de recherche\n  // Une requête est lancée soit après un input debouncé, soit après\n  // validation du formulaire.\n  const results$ = merge(\n    formSubmitted$,\n    formSubmitted$.pipe(\n      startWith(null),\n      switchMap(() => debouncedInputChange$), // permet \"d'annuler\" le debounce si on valide le formulaire\n    ),\n  ).pipe(\n    map(() => input.value), // la valeur du champ\n    switchMap((v) => from(search(v))), // le switchMap permet d'éviter d'afficher une requête précédente en cours\n  );\n\n  // faire un switchMap depuis documentClicked$ permet d'annuler la recherche\n  // en cas de clic en dehors de la boîte en cours de debounce ou de requête\n  documentClicked$\n    .pipe(\n      startWith(null),\n      switchMap(() => results$),\n    )\n    .subscribe(({ error, results }) =>\n      error ? displayError(error) : updateResults(results),\n    );\n\n  listLinkClicked$.subscribe({\n    next: (coords) => {\n      goToCoordinates(coords);\n      hideList();\n    },\n  });\n\n  documentClicked$.subscribe({ next: hideList });\n\n  return new Control({\n    element: control,\n  });\n}\n","export const GROUP_QUERY_TYPE = {\n  WITH_CERTIFIED: \"is_active_certified\",\n  WITH_RECENT: \"is_recent\",\n  WITH_YOUTH: \"is_youth\",\n  NONE: \"\",\n};\n\nconst COLOR_YOUTH = \"#ee5147\";\nconst COLOR_ACTIVE_CERTIFIED = \"#4C0297\";\nconst COLOR_RECENT = \"#FFD400\";\n\nexport const types = [\n  {\n    id: GROUP_QUERY_TYPE.WITH_RECENT,\n    label: \"Groupes créés récemment\",\n    color: COLOR_RECENT,\n  },\n  {\n    id: GROUP_QUERY_TYPE.WITH_YOUTH,\n    label: \"Groupes Jeunes ou Lycéens\",\n    color: COLOR_YOUTH,\n  },\n  {\n    id: GROUP_QUERY_TYPE.WITH_CERTIFIED,\n    label: \"Groupes certifiés avec une activité régulière\",\n    color: COLOR_ACTIVE_CERTIFIED,\n  },\n  {\n    id: GROUP_QUERY_TYPE.NONE,\n    label: \"\",\n  },\n];\n\nexport const FILTER_SUBTYPES = [\n  {\n    color: COLOR_YOUTH,\n    description: \"\",\n    hideLabel: false,\n    iconName: \"university\",\n    label: types.find((type) => type.id === GROUP_QUERY_TYPE.WITH_YOUTH)?.label,\n    type: GROUP_QUERY_TYPE.WITH_YOUTH,\n    filter: GROUP_QUERY_TYPE.WITH_YOUTH,\n    id: GROUP_QUERY_TYPE.WITH_YOUTH,\n  },\n  {\n    color: COLOR_ACTIVE_CERTIFIED,\n    description: \"\",\n    hideLabel: false,\n    iconName: \"users\",\n    label: types.find((type) => type.id === GROUP_QUERY_TYPE.WITH_CERTIFIED)\n      ?.label,\n    type: GROUP_QUERY_TYPE.WITH_CERTIFIED,\n    filter: GROUP_QUERY_TYPE.WITH_CERTIFIED,\n    id: GROUP_QUERY_TYPE.WITH_CERTIFIED,\n  },\n  {\n    color: COLOR_RECENT,\n    description: \"\",\n    hideLabel: false,\n    iconName: \"circle\",\n    label: types.find((type) => type.id === GROUP_QUERY_TYPE.WITH_RECENT).label,\n    type: GROUP_QUERY_TYPE.WITH_RECENT,\n    filter: GROUP_QUERY_TYPE.WITH_RECENT,\n    id: GROUP_QUERY_TYPE.WITH_RECENT,\n  },\n];\n","import Control from \"ol/control/Control\";\n\nimport { element } from \"./utils\";\nimport fontawesome from \"@agir/lib/utils/fontawesome\";\n\nexport default function makeLayerControl(layersConfig, drawingFunction) {\n  const selectors = layersConfig\n    .filter((layer) => layer.label)\n    .map(function (layerConfig) {\n      const input = element(\"input\", [], {\n        type: \"checkbox\",\n        checked: true,\n        style: { display: \"none\" },\n      });\n\n      const circle = element(\"div\", [], {\n        style: {\n          borderRadius: \"50%\",\n          width: \"20px\",\n          minWidth: \"20px\",\n          height: \"20px\",\n          backgroundColor: layerConfig.color,\n          marginRight: \"10px\",\n        },\n      });\n\n      const label = element(\"label\", [\n        input,\n        circle,\n        [\"span\", [layerConfig.label]],\n      ]);\n\n      input.addEventListener(\"change\", function () {\n        layerConfig.layer.setVisible(input.checked);\n      });\n\n      return label;\n    });\n\n  const layerButton = element(\"button\", [fontawesome(\"bars\")]);\n  const layerButtonContainer = element(\"div\", [layerButton], {\n    className: \"ol-unselectable ol-control layer_selector_button\",\n  });\n\n  const layerBox = element(\"div\", selectors, {\n    className: \"layer_selector visible\",\n  });\n\n  layerButton.addEventListener(\"click\", function () {\n    layerButton.textContent = layerBox.classList.toggle(\"visible\")\n      ? fontawesome(\"times\")\n      : fontawesome(\"bars\");\n  });\n\n  const activeCheckbox = element(\"input\", [], {\n    type: \"checkbox\",\n    checked: false,\n  });\n  const activeCheckboxLabel = element(\"label\", [\n    activeCheckbox,\n    \" Groupes les plus actifs\",\n  ]);\n  activeCheckbox.addEventListener(\"change\", function () {\n    drawingFunction(activeCheckbox.checked);\n  });\n  const layerActiveCheckboxContainer = element(\"div\", [activeCheckboxLabel], {\n    className: \"ol-unselectable ol-control active_groups_button\",\n  });\n\n  return [\n    new Control({ element: layerActiveCheckboxContainer }),\n    new Control({ element: layerButtonContainer }),\n    new Control({ element: layerBox }),\n  ];\n}\n","import {GROUP_QUERY_TYPE} from \"@agir/carte/groups.domain\";\n\nconst formatEvent = (types, subtypes) => (event) => {\n  const subtype = subtypes[event.subtype];\n  const type = types[subtype.type];\n  const color = subtype.color || type.color;\n  const label = !subtype.hideLabel ? subtype.description : type.label;\n\n  return `\n    <a target=\"_top\" href=\"${event.link}\" style=\"color:${color};\">\n      ${event.name}\n    </a>\n    <br/>\n    <strong>${label}</strong>\n    <br/>\n    ${event.date}\n  `;\n};\n\nfunction getLabelFromGroup(group) {\n  if (group.filter === GROUP_QUERY_TYPE.WITH_RECENT) {\n    return \"Groupe créé récemment\";\n  } else if (group.is_certified) {\n    return \"Groupe certifié avec une activité régulière\";\n  } else if (group.filter === GROUP_QUERY_TYPE.WITH_YOUTH) {\n    return \"Groupe Jeunes ou Lycéens\";\n  } else {\n    return \"Groupe d'action\";\n  }\n}\n\nconst formatGroup = (types, subtypes) => (group) =>\n  `\n    <a target=\"_top\" href=\"${group.link}\">${group.name}</a>\n    <br/>\n    <strong>\n        ${getLabelFromGroup(group)}\n    </strong>\n    ${group.subtypes\n      .map((subtype) =>\n        subtypes[subtype] && !subtypes[subtype].hideLabel\n          ? `<small style='display:block;'>${subtypes[subtype].description}</small>`\n          : \"\",\n      )\n      .join(\"\")}\n  `;\n\nconst getFormatPopups = (itemType, types, subtypes) => {\n  types = types.reduce(\n    (o, type) => ({\n      ...o,\n      [type.id]: type,\n    }),\n    {},\n  );\n  subtypes = subtypes.reduce(\n    (o, subtype) => ({\n      ...o,\n      [subtype.id]: subtype,\n    }),\n    {},\n  );\n  return itemType === \"groups\"\n    ? formatGroup(types, subtypes)\n    : formatEvent(types, subtypes);\n};\n\nexport default getFormatPopups;\n","import Feature from \"ol/Feature\";\nimport { fromLonLat } from \"ol/proj\";\nimport VectorSource from \"ol/source/Vector\";\nimport Point from \"ol/geom/Point\";\nimport GeoJSON from \"ol/format/GeoJSON\";\nimport { Style, Stroke, Fill } from \"ol/style\";\nimport VectorLayer from \"ol/layer/Vector\";\n\nimport { fontawesomeIsLoaded, ARROW_SIZE } from \"./utils\";\nimport { makeStyle, setUpMap, setUpPopup, fitBounds } from \"./common\";\nimport makeLayerControl from \"./layerControl\";\nimport makeSearchControl from \"./searchControl\";\nimport getFormatPopups from \"./itemPopups\";\n\nimport logger from \"@agir/lib/utils/logger\";\nconst log = logger(__filename);\n\nconst OFFSET = 0.00005;\n\nfunction disambiguate(points) {\n  const itemMap = Object.create(null);\n  let key, n, i, p, angle;\n\n  for (let p of points) {\n    key = JSON.stringify(p.coordinates.coordinates);\n    itemMap[key] = itemMap[key] || [];\n    itemMap[key].push(p);\n  }\n\n  for (key of Object.keys(itemMap)) {\n    n = itemMap[key].length;\n    if (n > 1) {\n      for (i = 0; i < n; i++) {\n        p = itemMap[key][i];\n        angle = Math.PI / 2 + (i * 2 * Math.PI) / n;\n        p.coordinates.coordinates = [\n          p.coordinates.coordinates[0] + OFFSET * Math.cos(angle),\n          p.coordinates.coordinates[1] + OFFSET * Math.sin(angle),\n        ];\n      }\n    }\n  }\n}\n\nclass Display {\n  constructor(types, subtypes, listType) {\n    this.types = types;\n    this.formatPopup = getFormatPopups(listType, types, subtypes);\n    this.sources = {};\n    this.layers = {};\n    this.typeStyles = {};\n    this.typePastStyles = {};\n    for (let type of types) {\n      this.sources[type.id] = new VectorSource();\n      this.layers[type.id] = new VectorLayer({ source: this.sources[type.id] });\n      this.typeStyles[type.id] = makeStyle(type);\n      if (listType === \"events\") {\n        this.typePastStyles[type.id] = makeStyle(type, { color: false });\n      }\n    }\n\n    // Subtypes\n    this.subtypeStyles = {};\n    this.subtypePastStyles = {};\n    this.popupAnchors = {};\n    this.sourceForSubtype = {};\n    for (let subtype of subtypes) {\n      this.subtypeStyles[subtype.id] =\n        makeStyle(subtype) || this.typeStyles[subtype.type];\n      if (listType === \"events\") {\n        this.subtypePastStyles[subtype.id] =\n          makeStyle(subtype, {\n            color: false,\n          }) || this.typePastStyles[subtype.type];\n      }\n      this.popupAnchors[subtype.id] = subtype.popupAnchor;\n      this.sourceForSubtype[subtype.id] = this.sources[subtype.type];\n    }\n  }\n\n  getLayers() {\n    return this.types.map((type) => this.layers[type.id]);\n  }\n\n  getFeatureFor(item) {\n    const feature = new Feature({\n      geometry: new Point(fromLonLat(item.coordinates.coordinates)),\n      popupAnchor: (this.popupAnchors[item.subtype] || -5) - ARROW_SIZE,\n      popupContent: this.formatPopup(item),\n    });\n    feature.setId(item.id);\n\n    if (item.subtype && this.subtypeStyles[item.subtype]) {\n      if (\n        typeof item.end_time === \"undefined\" ||\n        new Date(item.end_time) > new Date()\n      ) {\n        feature.setStyle(this.subtypeStyles[item.subtype]);\n      } else {\n        feature.setStyle(this.subtypePastStyles[item.subtype]);\n      }\n    } else {\n      feature.setStyle(this.typeStyles[item.type]);\n    }\n\n    return feature;\n  }\n\n  updateFeatures(data, hideInactive) {\n    for (let item of data) {\n      const feature = this.getFeatureFor(item);\n      const source = item.subtype\n        ? this.sourceForSubtype[item.subtype]\n        : this.sources[item.type];\n      if (!source) {\n        continue;\n      }\n      if (hideInactive && !item.is_active && item.location_country === \"FR\") {\n        source.hasFeature(feature) &&\n        source.removeFeature(source.getFeatureById(item.id));\n        continue;\n      }\n      if (!source.hasFeature(feature)) {\n        source.addFeature(feature);\n      }\n    }\n  }\n\n  getControls(data) {\n    return makeLayerControl(\n      this.types.map((type) => ({\n        label: type.label,\n        color: type.color,\n        layer: this.layers[type.id],\n      })),\n      (hideInactive) => this.updateFeatures(data, hideInactive),\n    );\n  }\n}\n\nexport default async function listMap(\n  htmlElementId,\n  {\n    endpoint,\n    listType,\n    types,\n    subtypes,\n    bounds,\n    focusGeometry,\n    showSearch = true,\n    showActiveControl = true,\n    showLayerControl = true,\n  },\n) {\n  const display = new Display(types, subtypes, listType);\n\n  var geometryLayers = [];\n  if (focusGeometry) {\n    const geom = new GeoJSON().readGeometry(focusGeometry);\n\n    if (!bounds) {\n      bounds = geom.getExtent().slice(); // need to duplicate because this array is mutated by OpenLayers\n    }\n\n    const feature = new Feature(geom.transform(\"EPSG:4326\", \"EPSG:3857\")); // project from LatLon to Mercator\n    feature.setStyle(\n      new Style({\n        stroke: new Stroke({\n          color: \"red\",\n          width: 1,\n        }),\n        fill: new Fill({\n          color: \"rgba(255,234,28,0.1)\",\n        }),\n      }),\n    );\n    const source = new VectorSource();\n    source.addFeature(feature);\n    const layer = new VectorLayer({ source });\n    geometryLayers.push(layer);\n  }\n\n  bounds = bounds || [-5.3, 41.2, 9.6, 51.2]; // default bounds are metropolitan France\n\n  const map = setUpMap(\n    htmlElementId,\n    geometryLayers.concat(display.getLayers()),\n  );\n  fitBounds(map, bounds);\n  setUpPopup(map);\n\n  let data;\n  try {\n    const res = await fetch(endpoint, {\n      method: \"GET\",\n      credentials: \"include\",\n      mode: \"no-cors\",\n    });\n    if (res.status !== 200) {\n      return;\n    }\n    data = await res.json();\n  } catch (e) {\n    return;\n  }\n\n  try {\n    await fontawesomeIsLoaded();\n  } catch (e) {\n    log.debug(\"Error loading fonts.\"); // eslint-disable-line no-console\n  }\n\n  disambiguate(data);\n  display.updateFeatures(data, showActiveControl && listType === \"groups\");\n\n  // Controls\n  const [hideInactiveButton, layerControlButton, layerControl] =\n    display.getControls(data);\n\n  if (showLayerControl && types.length > 1) {\n    layerControlButton.setMap(map);\n    layerControl.setMap(map);\n  }\n\n  if (showActiveControl && listType === \"groups\") {\n    map.addControl(hideInactiveButton);\n  }\n\n  if (showSearch) {\n    const geosearchControl = makeSearchControl(map.getView());\n    map.addControl(geosearchControl);\n  }\n}","import \"ol/ol.css\";\nimport \"@agir/carte/map/style.css\";\nimport listMap from \"@agir/carte/map/listMapEvent\";\n\nvar types = JSON.parse(document.getElementById(\"typeConfig\").textContent);\nvar subtypes = JSON.parse(document.getElementById(\"subtypeConfig\").textContent);\nvar bounds = JSON.parse(document.getElementById(\"boundsConfig\").textContent);\nvar controls = JSON.parse(document.getElementById(\"controls\").textContent);\nvar queryParams = JSON.parse(\n  document.getElementById(\"queryParams\").textContent,\n);\n\nvar commune = null;\nvar communeScriptElement = document.getElementById(\"communeScript\");\nif (communeScriptElement) {\n  commune = JSON.parse(communeScriptElement.textContent);\n}\n\nlistMap(\"map\", {\n  endpoint: \"/carte/liste_evenements/\" + queryParams,\n  listType: \"events\",\n  types,\n  subtypes,\n  bounds,\n  focusGeometry: commune,\n  showSearch: controls.search,\n  showActiveControl: controls.active,\n  showLayerControl: controls.layers,\n});\n"],"names":["makeSearchControl","view","provider","OpenStreetMapProvider","input","element","type","list","className","form","control","hideList","classList","remove","addEventListener","ev","stopPropagation","documentClicked$","fromEvent","document","debouncedInputChange$","pipe","debounceTime","filter","e","target","value","length","formSubmitted$","tap","preventDefault","listLinkClicked$","tagName","map","dataset","cx","cy","results$","merge","startWith","switchMap","v","from","async","results","search","query","error","subscribe","innerHTML","add","displayError","r","x","y","label","join","updateResults","next","coords","animate","center","fromLonLat","zoom","goToCoordinates","Control","GROUP_QUERY_TYPE","WITH_CERTIFIED","WITH_RECENT","WITH_YOUTH","NONE","COLOR_YOUTH","COLOR_ACTIVE_CERTIFIED","COLOR_RECENT","types","id","color","FILTER_SUBTYPES","description","hideLabel","iconName","_types$find","find","_types$find2","makeLayerControl","layersConfig","drawingFunction","selectors","layer","layerConfig","checked","style","display","circle","borderRadius","width","minWidth","height","backgroundColor","marginRight","setVisible","layerButton","fontawesome","layerButtonContainer","layerBox","textContent","toggle","activeCheckbox","activeCheckboxLabel","layerActiveCheckboxContainer","formatGroup","subtypes","group","link","name","is_certified","getLabelFromGroup","subtype","getFormatPopups","itemType","reduce","o","_objectSpread","formatEvent","event","date","log","logger","OFFSET","Display","constructor","listType","this","formatPopup","sources","layers","typeStyles","typePastStyles","VectorSource","VectorLayer","source","makeStyle","subtypeStyles","subtypePastStyles","popupAnchors","sourceForSubtype","popupAnchor","getLayers","getFeatureFor","item","feature","Feature","geometry","Point","coordinates","ARROW_SIZE","popupContent","setId","end_time","Date","setStyle","updateFeatures","data","hideInactive","is_active","location_country","hasFeature","addFeature","removeFeature","getFeatureById","getControls","JSON","parse","getElementById","bounds","controls","queryParams","commune","communeScriptElement","htmlElementId","endpoint","focusGeometry","showSearch","showActiveControl","showLayerControl","geometryLayers","geom","GeoJSON","readGeometry","getExtent","slice","transform","Style","stroke","Stroke","fill","Fill","push","setUpMap","concat","fitBounds","setUpPopup","res","fetch","method","credentials","mode","status","json","fontawesomeIsLoaded","debug","points","itemMap","Object","create","key","n","i","p","angle","stringify","keys","Math","PI","cos","sin","disambiguate","hideInactiveButton","layerControlButton","layerControl","setMap","addControl","geosearchControl","getView","listMap","active"],"sourceRoot":""}