{"version":3,"sources":["https://lively-kernel.org/lively4/BP2019RH-stable/src/internal/individuals-as-points/venn/force-center-annotation.js"],"names":["Annotation","constructor","forceCenterThemeGroups","individuals","hidden","x","y","heading","_generateHeading","contentItems","_generateContent","html","_generateHTML","updatePosition","forceCenterX","forceCenterY","_setPositionRelative","toggle","_show","_hide","removeHTML","parentNode","removeChild","_setVisibilityToHidden","_setVisibilityToVisibile","style","left","top","delimiter","forEach","forceCenterThemeGroup","name","_removeLastCharacters","length","content","themeGroupString","_generateStringForThemeGroup","push","themeGroup","themes","theme","annotationRootAsHTML","_buildAnnotationRootDiv","annotationHeadingAsHTML","_buildAnnotationHeadingParagraph","annotationContentAsHTML","_buildAnnotationContentParagraph","appendChild","rootDiv","Object","assign","_getStylePropertiesForRootDiv","position","textAlign","width","padding","marginTop","font","background","zIndex","visibility","borderRadius","headingParagraph","innerHTML","classList","add","_getBootstrapStylesForHeading","contentList","_appendThemesAsListItems","_getBootstrapStylesForContentList","contentItem","listItem","_getBootstrapStylesForContentItem","text","numberOfCharacters","substring"],"mappings":"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","file":"force-center-annotation.js","sourcesContent":["export default class Annotation {\n  \n  constructor(forceCenterThemeGroups) {\n    this.forceCenterThemeGroups = forceCenterThemeGroups\n    this.individuals = []\n    this.hidden = false\n    this.x = null\n    this.y = null\n    this.heading = this._generateHeading()\n    this.contentItems = this._generateContent()\n    this.html = this._generateHTML()\n    \n    }\n  \n  // ------------------------------------------\n  // Public Methods\n  // ------------------------------------------\n  \n  updatePosition(forceCenterX, forceCenterY) {\n    this._setPositionRelative(forceCenterX, forceCenterY)\n  }\n  \n  toggle() {\n    if(this.hidden) {\n      this._show()\n    } else {\n      this._hide()\n    }\n  }\n  \n  removeHTML() {\n    this.html.parentNode.removeChild(this.html)\n  }\n  \n  // ------------------------------------------\n  // Private Methods\n  // ------------------------------------------\n  \n  _hide() {\n    this.hidden = true\n    this._setVisibilityToHidden()\n  }\n  \n  _show() {\n    this.hidden = false\n    this._setVisibilityToVisibile()\n  }\n  \n  _setPositionRelative(forceCenterX, forceCenterY) {\n    this.html.style.left = (forceCenterX + 20) + \"px\"\n    this.html.style.top =  (forceCenterY + 20) + \"px\"\n  }\n  \n  _generateHeading() {\n    let heading = ''\n    let delimiter = ' & '\n    this.forceCenterThemeGroups.forEach( forceCenterThemeGroup => {\n      heading += forceCenterThemeGroup.name + delimiter\n    })\n    heading = this._removeLastCharacters(heading, delimiter.length)\n    return heading\n  }\n  \n  _generateContent() {\n    let content = []\n    this.forceCenterThemeGroups.forEach( forceCenterThemeGroup => {\n      let themeGroupString = this._generateStringForThemeGroup(forceCenterThemeGroup)\n      content.push(themeGroupString)\n    })\n    return content\n  }\n  \n  _generateStringForThemeGroup(themeGroup) {\n    let themeGroupString = ''\n    let delimiter = ' or '\n    themeGroup.themes.forEach( theme => {\n      themeGroupString += theme + delimiter\n    })\n    themeGroupString = this._removeLastCharacters(themeGroupString, delimiter.length)\n    return themeGroupString\n  }\n  \n  _generateHTML() {\n    let annotationRootAsHTML = this._buildAnnotationRootDiv();\n    let annotationHeadingAsHTML = this._buildAnnotationHeadingParagraph()\n    let annotationContentAsHTML = this._buildAnnotationContentParagraph()\n    \n    annotationRootAsHTML.appendChild(annotationHeadingAsHTML)\n    annotationRootAsHTML.appendChild(annotationContentAsHTML)\n    \n    return annotationRootAsHTML\n  }\n  \n  _buildAnnotationRootDiv() {\n    let rootDiv = <div></div>;\n    Object.assign(rootDiv.style, this._getStylePropertiesForRootDiv())\n    return rootDiv\n  }\n  \n  _getStylePropertiesForRootDiv() {\n    return {\n      position: 'absolute',\n      textAlign: 'center',\n      width: 'auto',\n      padding: '8px',\n      marginTop: '-20px',\n      font: '10px sans-serif',\n      background: 'rgba(100, 100, 100, 0.4)',\n      zIndex: '100',\n      visibility: 'visible',\n      borderRadius: \"10px\",\n    }\n  }\n    \n  _buildAnnotationHeadingParagraph() {\n    let headingParagraph = <p></p>;\n    headingParagraph.innerHTML = this.heading\n    headingParagraph.classList.add(...this._getBootstrapStylesForHeading())\n    return headingParagraph\n  }\n  \n  _getBootstrapStylesForHeading() {\n    return [\n      \"mb-0\",\n      \"text-center\",\n      \"font-weight-bold\"\n    ]\n  }\n  \n  _buildAnnotationContentParagraph() {\n    let contentList = <ul ></ul>;\n    contentList = this._appendThemesAsListItems(contentList)\n    contentList.classList.add(...this._getBootstrapStylesForContentList())\n    return contentList\n  }\n  \n  _appendThemesAsListItems(contentList) {\n    this.contentItems.forEach( contentItem => {\n      let listItem = <li style=\"background-color: rgba(255, 255, 255, 0.4)\"></li>;\n      listItem.innerHTML = contentItem\n      listItem.classList.add(...this._getBootstrapStylesForContentItem())\n      contentList.appendChild(listItem)\n    })\n    return contentList\n  }\n  \n  _getBootstrapStylesForContentList() {\n    return [\n      'list-group'\n    ]\n  }\n  \n  _getBootstrapStylesForContentItem() {\n    return [\n      'list-group-item',\n      'py-1'\n    ]\n  }\n    \n  // ------------------------------------------\n  // Utils\n  // ------------------------------------------\n  \n  _removeLastCharacters(text, numberOfCharacters) {\n    return text.substring(0, text.length - numberOfCharacters);\n  }\n  \n  _setVisibilityToVisibile() {\n    this.html.style.visibility = 'visible'\n  }\n  \n  _setVisibilityToHidden() {\n    this.html.style.visibility = 'hidden'\n  }\n}"]}