{"version":3,"sources":["https://lively-kernel.org/lively4/BP2019RH1/components/bp2019-venn-widget.js"],"names":["assertListenerInterface","VennDiagram","Morph","ThemeGroupAddedActionType","ThemeGroupUpdatedActionType","ThemeGroupRemovedActionType","ColorActionType","FilterActionType","SelectActionType","InspectActionType","NullActionType","NullAction","CANVAS_WIDTH","CANVAS_HEIGHT","VennWidget","initialize","dataProcessor","undefined","colorStore","strokeStyle","listeners","name","controlWidget","get","addListener","addSizeListener","canvasContainer","controlPanelContainer","collapsed","canvas","freehandSelectionSVG","freehandCanvas","vennDiagram","currentActions","id","setDataProcessor","_propagateDataProcessor","setColorStore","_propagateColorStore","setExtent","extent","setHeight","y","lively","_updateCanvasExtent","getData","individuals","setData","_initializeWithData","setContainerType","type","containerType","setLocalControls","unsetLocalControls","myWindow","findWindow","isWindow","style","overflow","display","parentPosition","getGlobalPosition","setGlobalPosition","addPt","pt","getExtent","parentElement","x","zIndex","setStrokeStyle","updateStrokeStyle","applyAction","action","loadState","Object","keys","forEach","localAction","_dispatchAction","listener","push","stop","stopSimulation","activate","onSizeChange","_initializeControlWidget","_initializeVennDiagramWithData","initializeAfterDataFetch","initializeWithData","_applyActionToListeners","getType","_addThemeGroup","_updateThemeGroup","_removeThemeGroup","_colorIndividuals","_filterIndividuals","_selectIndividuals","_inspectIndividual","_handleNotSupportedAction","addedAction","addThemeGroup","uuid","themes","color","_signalLocalActionsChanged","updatedAction","updateThemeGroup","removedAction","removeThemeGroup","colorAction","recolorIndividuals","filterAction","filterIndividuals","selectAction","selectIndividuals","inspectAction","vennDigram","inspectIndividual","extentOfParentContainer","getBoundingClientRect","newCanvasWidth","width","newCanvasHeight","height","setCanvasExtent","dispatchEvent","CustomEvent","detail","localActions","bubbles"],"mappings":"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","file":"bp2019-venn-widget.js","sourcesContent":["import { assertListenerInterface } from \"../src/internal/individuals-as-points/common/interfaces.js\"\nimport VennDiagram from \"../src/internal/individuals-as-points/venn/venn-diagram.js\"\nimport Morph from 'src/components/widgets/lively-morph.js'\nimport { ThemeGroupAddedActionType, ThemeGroupUpdatedActionType, ThemeGroupRemovedActionType, ColorActionType, FilterActionType, SelectActionType, InspectActionType, NullActionType, NullAction } from \"../src/internal/individuals-as-points/common/actions.js\"\n\nexport const CANVAS_WIDTH = 1000\nexport const CANVAS_HEIGHT = 600\n\nexport default class VennWidget extends Morph {\n  async initialize() {\n    this.dataProcessor = undefined\n    this.colorStore = undefined\n    this.strokeStyle = false\n      \n    this.listeners = []\n    this.name = \"venn-widget\"\n    this.controlWidget = this.get(\"#venn-widget-control-widget\")\n    this.controlWidget.addListener(this)\n    this.controlWidget.addSizeListener(this)\n    this.canvasContainer = this.get('#venn-widget-canvas-container')\n    this.controlPanelContainer = this.get(\"#venn-widget-control-widget-container\")\n    this.collapsed = false\n    this.canvas = this.get('#venn-widget-canvas')\n    this.freehandSelectionSVG = this.get(\"#bp2019-venn-widget-free-hand-selection-svg\")\n    this.freehandCanvas = this.get('#venn-widget-freehand-canvas')\n    \n    this.vennDiagram = new VennDiagram(this, this.canvas, this.freehandSelectionSVG, this.freehandCanvas)\n\n    this.currentActions = {id : \"localActionsVenn\"}\n  }\n  \n  \n  // ------------------------------------------\n  // Public Methods\n  // ------------------------------------------\n  \n\n  // *** Interface to application ***\n  setDataProcessor(dataProcessor) {\n    this.dataProcessor = dataProcessor\n    this._propagateDataProcessor()\n  }\n  \n  setColorStore(colorStore) {\n    this.colorStore = colorStore\n    this._propagateColorStore()\n  }\n  \n  setExtent(extent) {\n    this.controlWidget.setHeight(extent.y)\n    lively.setExtent(this.canvasContainer, extent)\n    this._updateCanvasExtent()\n  }\n  \n  getData() {\n    return this.individuals\n  }\n  \n  async setData(individuals) {\n    this.individuals = individuals\n    await this._initializeWithData()\n  }\n  \n  setContainerType(type) {\n    this.containerType = type\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    lively.setGlobalPosition(this.controlPanelContainer, \n          parentPosition.addPt(lively.pt(lively.getExtent(this.parentElement).x, 0)));    \n\n    /*if(!this.collapsed) {\n      lively.setExtent(this.controlPanelContainer, lively.pt(200, this.canvas.height))\n    } else {\n      lively.setExtent(this.controlPanelContainer, lively.pt(40, this.canvas.height))\n    }*/\n\n    this.controlPanelContainer.style.zIndex = 20000; \n  }\n  \n  unsetLocalControls() {\n    this.controlPanelContainer.style.display = \"none\";\n  }\n  \n  setStrokeStyle(strokeStyle) {\n    this.strokeStyle = strokeStyle\n    this.vennDiagram.setStrokeStyle(strokeStyle)\n  }\n  \n  updateStrokeStyle(strokeStyle) {\n    this.strokeStyle = strokeStyle\n    this.vennDiagram.updateStrokeStyle(strokeStyle)\n  }\n  \n  // *** Interface to control menu ***\n  \n  async applyAction(action){\n    if (action.id === \"localActionsVenn\") {\n      this.controlWidget.loadState(action)\n      Object.keys(action).forEach(localAction => {\n        if (!(typeof action[localAction] === \"string\")) {\n          this._dispatchAction(action[localAction])\n        }\n      })\n    } else if (!action.id) {\n      this._dispatchAction(action)\n    }\n  }\n  \n  addListener(listener) {\n    assertListenerInterface(listener);\n    this.listeners.push(listener);\n  }\n  \n  async stop(){\n    this.vennDiagram.stopSimulation()\n  }\n  \n  async activate() {\n    this._updateCanvasExtent()\n  }\n  \n  onSizeChange(collapsed) {\n    this.collapsed = collapsed\n    this._updateCanvasExtent()\n  }\n  \n  // ------------------------------------------\n  // Private Methods\n  // ------------------------------------------\n  \n  _propagateDataProcessor() {\n    this.controlWidget.setDataProcessor(this.dataProcessor)  \n    this.vennDiagram.setDataProcessor(this.dataProcessor)\n  }\n  \n  _propagateColorStore() {\n    this.controlWidget.setColorStore(this.colorStore)\n    this.vennDiagram.setColorStore(this.colorStore)\n  }\n  \n  async _initializeWithData(){\n    this._initializeControlWidget()\n    await this._initializeVennDiagramWithData()\n  }\n  \n  _initializeControlWidget() {\n    this.controlWidget.initializeAfterDataFetch(this.individuals)\n  }\n  \n  async _initializeVennDiagramWithData() {\n    this.vennDiagram.setColorStore(this.colorStore)\n    await this.vennDiagram.initializeWithData(this.individuals)\n  }\n    \n  _applyActionToListeners(action){\n    this.listeners.forEach((listener) => {\n      listener.applyAction(action);\n    })\n  }\n  \n  \n  _dispatchAction(action) {\n    switch(action.getType()) {\n      case (ThemeGroupAddedActionType):\n        this._addThemeGroup(action);\n        break;\n      case (ThemeGroupUpdatedActionType):\n        this._updateThemeGroup(action);\n        break;\n      case (ThemeGroupRemovedActionType):\n        this._removeThemeGroup(action);\n        break;\n      case (ColorActionType):\n        this._colorIndividuals(action);\n        break;\n      case (FilterActionType):\n        this._filterIndividuals(action);\n        break;\n      case (SelectActionType):\n        this._selectIndividuals(action);\n        break;\n      case (InspectActionType):\n        this._inspectIndividual(action);\n        break;\n      default:\n        this._handleNotSupportedAction(action);\n     }\n  }\n  \n  _addThemeGroup(addedAction){\n    this.vennDiagram.addThemeGroup(\n      addedAction.uuid,\n      addedAction.name, \n      addedAction.themes, \n      addedAction.color)\n    this.currentActions[addedAction.uuid] = addedAction\n    this._signalLocalActionsChanged()\n  }\n  \n  _updateThemeGroup(updatedAction){\n    this.vennDiagram.updateThemeGroup(\n      updatedAction.uuid,\n      updatedAction.name, \n      updatedAction.themes, \n      updatedAction.color)\n    this.currentActions[updatedAction.name] = updatedAction\n    this._signalLocalActionsChanged()\n  }\n  \n  _removeThemeGroup(removedAction){\n    this.vennDiagram.removeThemeGroup(removedAction.uuid)\n    delete this.currentActions[removedAction.uuid]\n    delete this.currentActions[removedAction.name]\n    this._signalLocalActionsChanged()\n  }\n  \n  _colorIndividuals(colorAction){\n    this.vennDiagram.recolorIndividuals(colorAction)\n  }\n  \n  _filterIndividuals(filterAction) {\n    this.vennDiagram.filterIndividuals(filterAction)\n  }\n  \n  _selectIndividuals(selectAction) {\n    this.vennDiagram.selectIndividuals(selectAction)\n  }\n  \n  _inspectIndividual(inspectAction) {\n    if(this.vennDigram) this.vennDiagram.inspectIndividual(inspectAction)\n  }\n\n  _handleNotSupportedAction(action) {\n  }\n  \n  _updateCanvasExtent() {\n    let extentOfParentContainer = this.canvasContainer.getBoundingClientRect()\n    let newCanvasWidth = extentOfParentContainer.width\n    let newCanvasHeight = extentOfParentContainer.height\n    \n    this.canvas.width = newCanvasWidth\n    this.canvas.height = newCanvasHeight\n    \n    this.freehandCanvas.width = newCanvasWidth\n    this.freehandCanvas.height = newCanvasHeight\n    this.freehandSelectionSVG.style.width = newCanvasWidth\n    this.freehandSelectionSVG.style.height = newCanvasHeight\n    \n    this.vennDiagram.setCanvasExtent(newCanvasWidth, newCanvasHeight)\n    \n    if (!this.collapsed) {\n      lively.setExtent(this.controlPanelContainer, lively.pt(200, this.canvas.height))\n    } else {\n      lively.setExtent(this.controlPanelContainer, lively.pt(40, this.canvas.height))\n    }\n    \n    if (this.containerType === \"pane\") {\n      this.setLocalControls()\n    }\n  }\n  \n  _signalLocalActionsChanged(){\n    this.dispatchEvent(new CustomEvent(\"local-actions-changed\", {\n      detail: {\n        localActions: [this.currentActions]\n      },\n      bubbles: true\n    }))\n  }\n}"]}