{"version":3,"sources":["https://lively-kernel.org/lively4/BP2019RH-stable/components/bp2019-venn-widget.js"],"names":["assertListenerInterface","VennDiagram","Morph","ThemeGroupAddedActionType","ThemeGroupUpdatedActionType","ThemeGroupRemovedActionType","ColorActionType","FilterActionType","SelectActionType","CANVAS_WIDTH","CANVAS_HEIGHT","VennWidget","initialize","dataProcessor","undefined","colorStore","listeners","name","controlWidget","get","addListener","addSizeListener","canvasContainer","controlPanelContainer","collapsed","canvas","vennDiagram","currentActions","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","applyAction","action","_dispatchAction","listener","push","stop","stopSimulation","activate","onSizeChange","_initializeControlWidget","_initializeVennDiagramWithData","initializeAfterDataFetch","initializeWithData","_applyActionToListeners","forEach","getType","_addThemeGroup","_updateThemeGroup","_removeThemeGroup","_colorIndividuals","_filterIndividuals","_selectIndividuals","_handleNotSupportedAction","addedAction","addThemeGroup","uuid","themes","color","updatedAction","updateThemeGroup","removedAction","removeThemeGroup","colorAction","recolorIndividuals","filterAction","filterIndividuals","selectAction","selectIndividuals","extentOfParentContainer","getBoundingClientRect","newCanvasWidth","width","newCanvasHeight","height","setCanvasExtent"],"mappings":";;;;;;AAASA,6B,qDAAAA,uB;;AACFC,iB;;AACAC,W;;AACEC,+B,kDAAAA,yB;AAA2BC,iC,kDAAAA,2B;AAA6BC,iC,kDAAAA,2B;AAA6BC,qB,kDAAAA,e;AAAiBC,sB,kDAAAA,gB;AAAkBC,sB,kDAAAA,gB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAE1H,YAAMC,eAAe,IAArB;;;;;;;;;;;;;;;;;;AACA,YAAMC,gBAAgB,GAAtB;;;;;;;;;;;;;;;;;;AAEQ,YAAMC,UAAN,SAAyBT,KAAzB,CAA+B;AAC5C,cAAMU,UAAN,GAAmB;AACjB,eAAKC,aAAL,GAAqBC,SAArB;AACA,eAAKC,UAAL,GAAkBD,SAAlB;;AAEA,eAAKE,SAAL,GAAiB,EAAjB;AACA,eAAKC,IAAL,GAAY,aAAZ;AACA,eAAKC,aAAL,GAAqB,KAAKC,GAAL,CAAS,6BAAT,CAArB;AACA,eAAKD,aAAL,CAAmBE,WAAnB,CAA+B,IAA/B;AACA,eAAKF,aAAL,CAAmBG,eAAnB,CAAmC,IAAnC;AACA,eAAKC,eAAL,GAAuB,KAAKH,GAAL,CAAS,+BAAT,CAAvB;AACA,eAAKI,qBAAL,GAA6B,KAAKJ,GAAL,CAAS,uCAAT,CAA7B;AACA,eAAKK,SAAL,GAAiB,KAAjB;AACA,eAAKC,MAAL,GAAc,KAAKN,GAAL,CAAS,qBAAT,CAAd;AACA,eAAKO,WAAL,GAAmB,IAAIzB,WAAJ,CAAgB,KAAKwB,MAArB,CAAnB;;AAEA,eAAKE,cAAL,GAAsB,EAAtB;AACD;;AAGD;AACA;AACA;;;AAGA;AACAC,yBAAiBf,aAAjB,EAAgC;AAC9B,eAAKA,aAAL,GAAqBA,aAArB;AACA,eAAKgB,uBAAL;AACD;;AAEDC,sBAAcf,UAAd,EAA0B;AACxB,eAAKA,UAAL,GAAkBA,UAAlB;AACA,eAAKgB,oBAAL;AACD;;AAEDC,kBAAUC,MAAV,EAAkB;AAChB,eAAKf,aAAL,CAAmBgB,SAAnB,CAA6BD,OAAOE,CAApC;AACAC,iBAAOJ,SAAP,CAAiB,KAAKV,eAAtB,EAAuCW,MAAvC;AACA,eAAKI,mBAAL;AACD;;AAEDC,kBAAU;AACR,iBAAO,KAAKC,WAAZ;AACD;;AAED,cAAMC,OAAN,CAAcD,WAAd,EAA2B;AACzB,eAAKA,WAAL,GAAmBA,WAAnB;AACA,gBAAM,KAAKE,mBAAL,EAAN;AACD;;AAEDC,yBAAiBC,IAAjB,EAAuB;AACrB,eAAKC,aAAL,GAAqBD,IAArB;AACD;;AAEDE,2BAAmB;AACjB,eAAKC,kBAAL;;AAEA,cAAIC,WAAWX,OAAOY,UAAP,CAAkB,IAAlB,CAAf;AACA,cAAID,SAASE,QAAb,EAAuB;AACrBF,qBAAS5B,GAAT,CAAa,iBAAb,EAAgC+B,KAAhC,CAAsCC,QAAtC,GAAiD,SAAjD;AACD;;AAED,eAAK5B,qBAAL,CAA2B2B,KAA3B,CAAiCE,OAAjC,GAA2C,OAA3C;;AAEA,cAAIC,iBAAiBjB,OAAOkB,iBAAP,CAAyB,IAAzB,CAArB;AACAlB,iBAAOmB,iBAAP,CAAyB,KAAKhC,qBAA9B,EACM8B,eAAeG,KAAf,CAAqBpB,OAAOqB,EAAP,CAAUrB,OAAOsB,SAAP,CAAiB,KAAKC,aAAtB,EAAqCC,CAA/C,EAAkD,CAAlD,CAArB,CADN;;AAGA;;;;;;AAMA,eAAKrC,qBAAL,CAA2B2B,KAA3B,CAAiCW,MAAjC,GAA0C,KAA1C;AACD;;AAEDf,6BAAqB;AACnB,eAAKvB,qBAAL,CAA2B2B,KAA3B,CAAiCE,OAAjC,GAA2C,MAA3C;AACD;;AAED;;AAEA,cAAMU,WAAN,CAAkBC,MAAlB,EAAyB;AACvB,eAAKC,eAAL,CAAqBD,MAArB;AACD;;AAED3C,oBAAY6C,QAAZ,EAAsB;AACpBjE,kCAAwBiE,QAAxB;AACA,eAAKjD,SAAL,CAAekD,IAAf,CAAoBD,QAApB;AACD;;AAED,cAAME,IAAN,GAAY;AACV,eAAKzC,WAAL,CAAiB0C,cAAjB;AACD;;AAED,cAAMC,QAAN,GAAiB;AACf,eAAKhC,mBAAL;AACD;;AAEDiC,qBAAa9C,SAAb,EAAwB;AACtB,eAAKA,SAAL,GAAiBA,SAAjB;AACA,eAAKa,mBAAL;AACD;;AAED;AACA;AACA;;;AAIAR,kCAA0B;AACxB,eAAKX,aAAL,CAAmBU,gBAAnB,CAAoC,KAAKf,aAAzC;AACA,eAAKa,WAAL,CAAiBE,gBAAjB,CAAkC,KAAKf,aAAvC;AACD;;AAEDkB,+BAAuB;AACrB,eAAKL,WAAL,CAAiBI,aAAjB,CAA+B,KAAKf,UAApC;AACD;;AAED,cAAM0B,mBAAN,GAA2B;AACzB,eAAK8B,wBAAL;AACA,gBAAM,KAAKC,8BAAL,EAAN;AACD;;AAEDD,mCAA2B;AACzB,eAAKrD,aAAL,CAAmBuD,wBAAnB,CAA4C,KAAKlC,WAAjD;AACD;;AAED,cAAMiC,8BAAN,GAAuC;AACrC,eAAK9C,WAAL,CAAiBI,aAAjB,CAA+B,KAAKf,UAApC;AACA,gBAAM,KAAKW,WAAL,CAAiBgD,kBAAjB,CAAoC,KAAKnC,WAAzC,CAAN;AACD;;AAEDoC,gCAAwBZ,MAAxB,EAA+B;AAC7B,eAAK/C,SAAL,CAAe4D,OAAf,CAAwBX,QAAD,IAAc;AACnCA,qBAASH,WAAT,CAAqBC,MAArB;AACD,WAFD;AAGD;;AAGDC,wBAAgBD,MAAhB,EAAwB;AACtB,kBAAOA,OAAOc,OAAP,EAAP;AACE,iBAAM1E,yBAAN;AACE,mBAAK2E,cAAL,CAAoBf,MAApB;AACA;AACF,iBAAM3D,2BAAN;AACE,mBAAK2E,iBAAL,CAAuBhB,MAAvB;AACA;AACF,iBAAM1D,2BAAN;AACE,mBAAK2E,iBAAL,CAAuBjB,MAAvB;AACA;AACF,iBAAMzD,eAAN;AACE,mBAAK2E,iBAAL,CAAuBlB,MAAvB;AACA;AACF,iBAAMxD,gBAAN;AACE,mBAAK2E,kBAAL,CAAwBnB,MAAxB;AACA;AACF,iBAAMvD,gBAAN;AACE,mBAAK2E,kBAAL,CAAwBpB,MAAxB;AACA;AACF;AACE,mBAAKqB,yBAAL,CAA+BrB,MAA/B;AApBJ;AAsBD;;AAEDe,uBAAeO,WAAf,EAA2B;AACzB,eAAK3D,WAAL,CAAiB4D,aAAjB,CACED,YAAYE,IADd,EAEEF,YAAYpE,IAFd,EAGEoE,YAAYG,MAHd,EAIEH,YAAYI,KAJd;AAKD;;AAEDV,0BAAkBW,aAAlB,EAAgC;AAC9B,eAAKhE,WAAL,CAAiBiE,gBAAjB,CACED,cAAcH,IADhB,EAEEG,cAAczE,IAFhB,EAGEyE,cAAcF,MAHhB,EAIEE,cAAcD,KAJhB;AAKD;;AAEDT,0BAAkBY,aAAlB,EAAgC;AAC9B,eAAKlE,WAAL,CAAiBmE,gBAAjB,CAAkCD,cAAcL,IAAhD;AACD;;AAEDN,0BAAkBa,WAAlB,EAA8B;AAC5B,eAAKpE,WAAL,CAAiBqE,kBAAjB,CAAoCD,WAApC;AACD;;AAEDZ,2BAAmBc,YAAnB,EAAiC;AAC/B,eAAKtE,WAAL,CAAiBuE,iBAAjB,CAAmCD,YAAnC;AACD;;AAEDb,2BAAmBe,YAAnB,EAAiC;AAC/B,eAAKxE,WAAL,CAAiByE,iBAAjB,CAAmCD,YAAnC;AACD;;AAEDd,kCAA0BrB,MAA1B,EAAkC,CACjC;;AAED1B,8BAAsB;AACpB,cAAI+D,0BAA0B,KAAK9E,eAAL,CAAqB+E,qBAArB,EAA9B;AACA,cAAIC,iBAAiBF,wBAAwBG,KAA7C;AACA,cAAIC,kBAAkBJ,wBAAwBK,MAA9C;;AAEA,eAAKhF,MAAL,CAAY8E,KAAZ,GAAoBD,cAApB;AACA,eAAK7E,MAAL,CAAYgF,MAAZ,GAAqBD,eAArB;;AAEA,eAAK9E,WAAL,CAAiBgF,eAAjB,CAAiCJ,cAAjC,EAAiDE,eAAjD;;AAEA,cAAI,CAAC,KAAKhF,SAAV,EAAqB;AACnBY,mBAAOJ,SAAP,CAAiB,KAAKT,qBAAtB,EAA6Ca,OAAOqB,EAAP,CAAU,GAAV,EAAe,KAAKhC,MAAL,CAAYgF,MAA3B,CAA7C;AACD,WAFD,MAEO;AACLrE,mBAAOJ,SAAP,CAAiB,KAAKT,qBAAtB,EAA6Ca,OAAOqB,EAAP,CAAU,EAAV,EAAc,KAAKhC,MAAL,CAAYgF,MAA1B,CAA7C;AACD;;AAED,cAAI,KAAK7D,aAAL,KAAuB,MAA3B,EAAmC;AACjC,iBAAKC,gBAAL;AACD;AACF;AA7N2C;;yBAAzBlC,U","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 } 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    \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.vennDiagram = new VennDiagram(this.canvas)\n    \n    this.currentActions = {}\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  // *** 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  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  \n  \n  _propagateDataProcessor() {\n    this.controlWidget.setDataProcessor(this.dataProcessor)  \n    this.vennDiagram.setDataProcessor(this.dataProcessor)\n  }\n  \n  _propagateColorStore() {\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      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  }\n  \n  _updateThemeGroup(updatedAction){\n    this.vennDiagram.updateThemeGroup(\n      updatedAction.uuid,\n      updatedAction.name, \n      updatedAction.themes, \n      updatedAction.color)\n  }\n  \n  _removeThemeGroup(removedAction){\n    this.vennDiagram.removeThemeGroup(removedAction.uuid)\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  _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.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}"]}