{"version":3,"sources":["https://lively-kernel.org/lively4/BP2019RH-stable/components/bp2019-map-widget.js"],"names":["assertListenerInterface","assertFreeHandSelectionListenerInterface","KenyaMap","SomaliaMap","Morph","d3","FreehandDrawer","inside","SelectActionType","InspectActionType","FilterActionType","ColorActionType","initialPointSize","Bp2019MapWidget","initialize","iamReady","ready","Promise","resolve","listeners","name","currentMap","drawingCanvas","get","uniquePolygonCanvas","uniqueIndividualCanvas","canvasWindow","freehandSelectionSVG","controlWidget","controlPanelContainer","addSizeListener","collapsed","currentActions","drawer","addListener","attachedCallback","detachedCallback","setGeoData","geoData","data","setContainerType","type","containerType","onSizeChange","setExtent","extent","setDataProcessor","dataProcessor","_propagateDataProcessor","setColorStore","colorStore","getData","individuals","setData","currentExtent","x","y","_initializeWithData","lively","pt","setLocalControls","currentCanvasExtent","getExtent","select","attr","width","height","updateZoom","activate","applyAction","action","_dispatchAction","listener","push","freehandSelectionCreated","draw","drawSelections","applyTransform","zoomer","transform","freehandSelectionDeleted","selection","dispatchEvent","CustomEvent","detail","bubbles","freehandSelectionOnContextMenu","evt","selectionSVG","linePointsArray","linePoints","map","point","selectedIndividuals","filter","drawing","position","freehandSelectionSVGElement","clientX","clientY","individualsSelection","selectionColor","color","setInteractionMode","mode","_removeEventListenersForNavigation","_addEventListenersForSelection","_removeEventListenersForSelection","_addEventListenersForNavigation","unsetLocalControls","myWindow","findWindow","isWindow","style","overflow","display","parentPosition","getGlobalPosition","setGlobalPosition","addPt","parentElement","zIndex","start","stop","addEventListenersForNavigation","removeEventListenersForNavigation","_registerControlWidget","districtTooltipDiv","getDistrictTooltip","individualTooltipDiv","getIndividualTooltip","_buildMap","initializeAfterDataFetch","_applyActionToListeners","forEach","clear","datasetName","Error","_initializeCurrentMap","create","getType","_handleColorAction","_handleInspectAction","_handleSelectAction","_handleFilterAction","_handleNotSupportedAction","colorAction","runOn","individualClicker","deselectSelectedIndividual","selectIndividual","individual","_getIndividualById","id","filteredIndividuals","includes","dataHandler","selectedIndividual","updateIndividuals","_handleFreeHandSelection","event","zoomLevel","currentZoomLevel","selectedPoints","i","length"],"mappings":"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","file":"bp2019-map-widget.js","sourcesContent":["import { assertListenerInterface, assertFreeHandSelectionListenerInterface } from \"../src/internal/individuals-as-points/common/interfaces.js\"\nimport { KenyaMap, SomaliaMap } from \"../src/internal/individuals-as-points/map/map.js\"\n\nimport Morph from \"src/components/widgets/lively-morph.js\"\nimport d3 from 'src/external/d3.v5.js'\n\nimport FreehandDrawer from '../src/internal/individuals-as-points/common/drawFreehand.js'\nimport inside from \"../src/internal/individuals-as-points/common/npm-point-in-polygon.js\"\n\nimport { SelectActionType, InspectActionType, FilterActionType, ColorActionType } from '../src/internal/individuals-as-points/common/actions.js'\n\nconst initialPointSize = 5\n\nexport default class Bp2019MapWidget extends Morph {\n  async initialize() {\n    var iamReady \n    this.ready = new Promise( resolve => {\n      iamReady = resolve\n    })\n    this.listeners = []\n    this.name = \"bp2019-map-widget\"\n    this.currentMap\n    this.drawingCanvas = this.get(\"#bp2019-map-widget-drawing-canvas\")\n    this.uniquePolygonCanvas = this.get(\"#bp2019-map-widget-unique-polygon-canvas\")\n    this.uniqueIndividualCanvas = this.get(\"#bp2019-map-widget-unique-individual-canvas\")\n    this.canvasWindow = this.get(\"#bp2019-map-widget-canvas-container\")\n    this.freehandSelectionSVG = this.get(\"#bp2019-map-widget-free-hand-selection-svg\")\n    this.controlWidget = this.get(\"bp2019-map-control-widget\")\n    this.controlPanelContainer = this.get(\"#map-control-widget-container\")\n    this.controlWidget.addSizeListener(this)\n    this.collapsed = false\n    \n    this.currentActions = {}\n    \n    // freehand drawCanvas the size of canvas-window\n    this.drawer = new FreehandDrawer(this.canvasWindow, this.drawingCanvas, this.freehandSelectionSVG)\n    this.drawer.addListener(this)\n    \n    iamReady()\n  }\n  \n  attachedCallback() {\n    // here goes checking for windows stuff\n  }\n  \n  detachedCallback() {\n\n  }\n                                            \n  // ------------------------------------------\n  // Public Methods\n  // ------------------------------------------\n  // *** Interface to application ***\n  \n  setGeoData(geoData) {\n    this.geoData = geoData.data\n  }\n  \n  setContainerType(type) {\n    this.containerType = type\n  }\n  \n  onSizeChange(collapsed) {\n    this.collapsed = collapsed\n    this.setExtent(this.extent)\n  }\n  \n  setDataProcessor(dataProcessor) {\n    this.dataProcessor = dataProcessor  \n    this._propagateDataProcessor()\n  }\n  \n  setColorStore(colorStore) {\n    this.colorStore = colorStore\n  }\n  \n  getData() {\n    return this.individuals\n  }\n  \n  async setData(individuals) {\n    let currentExtent = this.extent\n    this.setExtent({x: 1000, y: 1000})\n    this.individuals = individuals\n    await this._initializeWithData()\n    this.setExtent(currentExtent)\n  }\n  \n  setExtent(extent) {\n    this.extent = extent\n    if (this.collapsed) {\n      if (this.containerType === \"pane\") {\n        lively.setExtent(this.canvasWindow, lively.pt(extent.x, extent.y))\n        this.controlWidget.setExtent(lively.pt(45, extent.y))\n        this.setLocalControls()\n      } else {\n        lively.setExtent(this.canvasWindow, lively.pt(extent.x - 50, extent.y))\n        this.controlWidget.setExtent(lively.pt(45, extent.y))\n      }\n      \n    } else {\n      if (this.containerType === \"pane\") {\n        lively.setExtent(this.canvasWindow, lively.pt(extent.x, extent.y))\n        this.controlWidget.setExtent(lively.pt(200, extent.y))\n        this.setLocalControls()\n      } else {\n        lively.setExtent(this.canvasWindow, lively.pt(extent.x * 0.73, extent.y))\n        this.controlWidget.setExtent(lively.pt(extent.x * 0.23, extent.y))\n      }\n    }\n    \n    let currentCanvasExtent = lively.getExtent(this.canvasWindow)\n    d3.select(this.freehandSelectionSVG)\n      .attr(\"width\", currentCanvasExtent.x + \"px\")\n      .attr(\"height\", currentCanvasExtent.y + \"px\")\n\n    if (this.currentMap) { // should be removed\n      this.drawingCanvas.width = currentCanvasExtent.x\n      this.drawingCanvas.height = currentCanvasExtent.y\n      this.uniquePolygonCanvas.width = currentCanvasExtent.x\n      this.uniquePolygonCanvas.height = currentCanvasExtent.y\n      this.uniqueIndividualCanvas.width = currentCanvasExtent.x\n      this.uniqueIndividualCanvas.height = currentCanvasExtent.y\n      this.currentMap.updateZoom()\n    }\n  }\n  \n  async activate() {\n    // should be removed\n    await this.ready\n    if (this.currentMap) {\n      this.currentMap.updateZoom()\n    }\n  }\n  \n  // *** Interface to control menu ***\n  \n  async applyAction(action){\n    this._dispatchAction(action)   \n  }\n  \n  addListener(listener) {\n    assertListenerInterface(listener)\n    this.listeners.push(listener)\n  }\n  \n  freehandSelectionCreated() {\n    this.currentMap.draw()\n    this.drawer.drawSelections()\n    this.drawer.applyTransform(this.currentMap.zoomer.transform)\n  }\n  \n  freehandSelectionDeleted(selection) {\n    this.currentMap.draw()\n    this.drawer.drawSelections()\n    this.drawer.applyTransform(this.currentMap.zoomer.transform)\n    \n\n    this.dispatchEvent(new CustomEvent(\"freehand-selection-deleted\", {\n      detail: {\n        selection: selection\n      },\n      bubbles: true\n    }))\n  }\n  \n  freehandSelectionOnContextMenu(evt, selection, selectionSVG) {\n    let linePointsArray = selection.linePoints.map(point => [point.x, point.y])\n    let selectedIndividuals = this.individuals.filter(point => inside([point.drawing.position.x, point.drawing.position.y], linePointsArray))\n    \n    this.dispatchEvent(new CustomEvent(\"freehand-selection-contextmenu\", {\n      detail: {\n        freehandSelectionSVGElement: selectionSVG,\n        clientX: evt.clientX,\n        clientY: evt.clientY,\n        individualsSelection: {selectedIndividuals: selectedIndividuals, selectionColor: selection.color}\n      },\n      bubbles: true\n    }))\n  }\n  \n  setInteractionMode(mode) {\n    if (mode === \"selection\") {\n      this._removeEventListenersForNavigation()\n      this._addEventListenersForSelection()\n    } else if (mode === \"navigation\") {\n      this._removeEventListenersForSelection()\n      this._addEventListenersForNavigation()\n    }\n  }\n  \n  setLocalControls() {\n    this.unsetLocalControls()\n    \n    var myWindow = lively.findWindow(this)\n    if (myWindow.isWindow) {\n      myWindow.get(\".window-content\").style.overflow = \"visible\"\n    }\n    \n    this.controlPanelContainer.style.display = \"block\"\n    \n    let parentPosition = lively.getGlobalPosition(this)\n    \n    lively.setGlobalPosition(\n      this.controlPanelContainer, \n      parentPosition.addPt(lively.pt(lively.getExtent(this.parentElement).x, 0))\n    )\n\n    this.controlPanelContainer.style.zIndex = 20000\n  }\n  \n  unsetLocalControls() {\n    this.controlPanelContainer.style.display = \"none\"\n  }\n\n  // ------------------------------------------\n  // Private Methods\n  // ------------------------------------------\n  \n  _addEventListenersForSelection() {\n    this.drawer.start()\n  }\n  \n  _removeEventListenersForSelection() {\n    this.drawer.stop()\n  }\n  \n  _addEventListenersForNavigation() {\n    this.currentMap.addEventListenersForNavigation()\n  }\n  \n  _removeEventListenersForNavigation() {\n    this.currentMap.removeEventListenersForNavigation()\n  }\n  \n  _propagateDataProcessor() {\n    this.controlWidget.setDataProcessor(this.dataProcessor)  \n  }\n  \n  async _initializeWithData() {\n    this.controlWidget = this._registerControlWidget()\n    this.districtTooltipDiv = this.controlWidget.getDistrictTooltip()\n    this.individualTooltipDiv = this.controlWidget.getIndividualTooltip()\n    \n    await this._buildMap()\n    this._addEventListenersForNavigation()\n  }\n  \n  _registerControlWidget() {\n    let controlWidget = this.get(\"#bp2019-map-control-widget\")\n    controlWidget.addListener(this)\n    controlWidget.initializeAfterDataFetch()\n    \n    return controlWidget\n  }\n  \n  _applyActionToListeners(action){\n    this.listeners.forEach((listener) => {\n      listener.applyAction(action);\n    })\n  }\n  \n  async _buildMap() {\n    if (this.currentMap) {\n      this.currentMap.clear()\n    }\n    switch(this.dataProcessor.datasetName) {\n      case 'Somalia':\n        this.currentMap = new SomaliaMap(this, initialPointSize)\n        break\n      case 'Kenya':\n        this.currentMap = new KenyaMap(this, initialPointSize)\n        break\n      default:\n        throw new Error(\"this dataset is not supported\")\n    }\n    \n    this._initializeCurrentMap()\n    this.currentMap.setGeoData(this.geoData)\n    await this.currentMap.create(this.individuals)\n  }\n  \n  _initializeCurrentMap() {\n    this.currentMap.setDataProcessor(this.dataProcessor)\n    this.currentMap.setColorStore(this.colorStore)\n  }\n  \n  _dispatchAction(action) {\n    switch(action.getType()) {\n      case (ColorActionType):\n        this._handleColorAction(action)\n        break\n      case (InspectActionType):\n        this._handleInspectAction(action)\n        break\n      case (SelectActionType):\n        this._handleSelectAction(action)\n        break\n      case (FilterActionType):\n        this._handleFilterAction(action)\n        break\n      default:\n        this._handleNotSupportedAction(action)\n     }\n  }\n  \n  _handleColorAction(colorAction) {\n    colorAction.runOn(this.individuals)  \n    this.currentMap.draw()\n  }\n  \n  _handleInspectAction(action) {\n    this.currentActions[\"inspect\"] = action\n    action.runOn(this.individuals)\n    this.currentMap.individualClicker.deselectSelectedIndividual()\n    if (!action.selection) {\n      this.currentMap.individualClicker.selectIndividual(null)\n    } else {\n      let individual = this._getIndividualById(action.selection.id)\n      this.currentMap.individualClicker.selectIndividual(individual)\n    }\n    \n    this.currentMap.draw()\n  }\n  \n  _handleFilterAction(action){\n    let filteredIndividuals = action.runOn(this.individuals)\n    if (!filteredIndividuals.includes(this.currentMap.dataHandler.selectedIndividual)) {\n      this.currentMap.individualClicker.deselectSelectedIndividual()\n    }\n    \n    this.currentMap.updateIndividuals(filteredIndividuals)\n  }\n  \n  _handleSelectAction(action) {\n    action.runOn(this.individuals)\n    this.currentMap.draw()\n  }\n  \n  _handleFreeHandSelection(linePoints, event) {\n    let zoomLevel = this.currentMap.zoomer.currentZoomLevel\n    let linePointsArray = linePoints.map(point => [point.x / zoomLevel, point.y / zoomLevel])\n    let selectedPoints = this.individuals.filter(point => inside([point.drawing.position.x, point.drawing.position.y], linePointsArray))\n    \n    this.dispatchEvent(new CustomEvent(\"selection-contextmenu\", {\n      detail: {\n        selectedPoints: selectedPoints,\n        clientX: event.clientX,\n        clientY: event.clientY,\n        selectionColor: \"CadetBlue\"\n      },\n      bubbles: true\n    }))\n  }\n  \n  _handleNotSupportedAction(action) {}\n  \n  _getIndividualById(id) {\n    for (let i = 0; i < this.individuals.length; i++) {\n      if (this.individuals[i].id === id) {\n        return this.individuals[i]\n      }\n    }\n  }\n}"]}