{"version":3,"sources":["https://lively-kernel.org/lively4/BP2019RH-stable/src/internal/individuals-as-points/venn/force-center.js"],"names":["Annotation","ForceCenter","constructor","themeGroups","x","undefined","y","is_center","annotation","individuals","setDataProcessor","dataProcessor","setColorStore","colorStore","contains","individual","forEach","themeGroup","resetIndividuals","addIndividual","addIndividualToAllGroups","_addIndividual","updateAnnotationCoordinates","updatePosition","setCenterForIndividual","center","resetIndividualsInGroups","getFirstGroup","includesGroup","uuid","includes","getAnnotation","html","toggleSingleClick","toggle","toggleDoubleClick","statisticsWidget","_openStatisticsWidget","_closeStatisticsWidget","removeInnerContent","removeHTML","statisticWidgetIsClosed","push","lively","openComponentInWindow","pt","setCreator","setData","setExtent","_closeStatiticsWidget","close"],"mappings":"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","file":"force-center.js","sourcesContent":["import Annotation from \"./force-center-annotation.js\"\n\nexport default class ForceCenter {\n  constructor(themeGroups) {\n    this.x = undefined\n    this.y = undefined\n    this.is_center = true\n    this.themeGroups = themeGroups\n    this.annotation = new Annotation(themeGroups)\n    this.individuals = []\n  }\n  \n  // ------------------------------------------\n  // Public Methods\n  // ------------------------------------------\n  \n  setDataProcessor(dataProcessor) {\n    this.dataProcessor = dataProcessor\n  }\n  \n  setColorStore(colorStore) {\n    this.colorStore = colorStore\n  }\n  \n  contains(individual) {\n    let contains = true\n    this.themeGroups.forEach(themeGroup => {\n      if(!themeGroup.contains(individual)) contains = false\n    })\n    \n    return contains\n  }\n  \n  resetIndividuals() {\n    this.individuals = []\n  }\n  \n  addIndividual(individual) {\n    this.addIndividualToAllGroups(individual)\n    this._addIndividual(individual)\n    \n  }\n  \n  updateAnnotationCoordinates() {\n    this.annotation.updatePosition(this.x, this.y)\n  }\n  \n  updatePosition(x, y) {\n    this.x = x\n    this.y = y\n    this.annotation.updatePosition(x, y)\n  }\n  \n  setCenterForIndividual(individual) {\n    individual.center = { x: this.x, y: this.y }\n  }\n  \n  addIndividualToAllGroups(individual) {\n    this.themeGroups.forEach(themeGroup => {\n      themeGroup.addIndividual(individual)\n    })\n  }\n  \n  resetIndividualsInGroups() {\n    this.themeGroups.forEach(themeGroup => {\n      themeGroup.resetIndividuals()\n    })\n  }\n  \n  getFirstGroup() {\n    return this.themeGroups[0]\n  }\n  \n  includesGroup(uuid) {\n    let includes = false\n    this.themeGroups.forEach(themeGroup => {\n      if(themeGroup.uuid === uuid) includes = true\n    })\n    \n    return includes\n  }\n  \n  getAnnotation() {\n    return this.annotation.html\n  }\n  \n  toggleSingleClick() {\n    this.annotation.toggle()\n  }\n  \n  toggleDoubleClick() {\n    if(!this.statisticsWidget) {\n      this._openStatisticsWidget()\n    } else {\n      this._closeStatisticsWidget()\n    }\n  }\n  \n  removeInnerContent() {\n    this.annotation.removeHTML()\n  }\n  \n  statisticWidgetIsClosed() {\n    this.statisticsWidget = undefined\n  }\n  \n  // ------------------------------------------\n  // Private Methods\n  // ------------------------------------------\n  \n  _addIndividual(individual) {\n    this.individuals.push(individual)\n  }\n  \n  async _openStatisticsWidget() {\n    this.statisticsWidget = await lively.openComponentInWindow('bp2019-statistic-widget', null, lively.pt(300, 700))\n    this.statisticsWidget.setCreator(this)\n    this.statisticsWidget.setDataProcessor(this.dataProcessor)\n    this.statisticsWidget.setColorStore(this.colorStore)\n    this.statisticsWidget.setData(this.individuals)\n    this.statisticsWidget.setExtent(lively.pt(300, 700))\n    //this.statisticsWidget.addBarChartForKeys(['age', 'gender', 'constituency'])\n  }\n  \n  _closeStatiticsWidget() {\n    this.statisticsWidget.close()\n    this.statisticsWidget = undefined\n  }\n}"]}