{"version":3,"sources":["https://lively-kernel.org/lively4/BP2019RH1/components/bp2019-theme-group-item-widget.js"],"names":["Morph","assertListenerInterface","ThemeGroupAction","ThemeGroupWidget","initialize","listeners","themeGroupNameContainer","get","themesList","_setupRemoveButton","_setupColorPicker","addListener","listener","push","setName","name","innerHTML","setThemes","themes","_clearExistingThemes","_addNewThemes","setColorForValue","color","value","_applyThemeGroupItemUpdated","addEventListener","_applyThemeGroupItemRemoved","themeGroupColorSelection","themeListItem","lastElementChild","removeChild","forEach","theme","_createNewThemeListItem","appendChild","themeItem","removeThemeGroupItem"],"mappings":";;;;;;;;;;;;AAAOA,W;;AACEC,6B,qDAAAA,uB;;AACAC,sB,kDAAAA,gB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEM,YAAMC,gBAAN,SAA+BH,KAA/B,CAAqC;AAClD,cAAMI,UAAN,GAAmB;AACjB,eAAKC,SAAL,GAAiB,EAAjB;AACA,eAAKC,uBAAL,GAA+B,KAAKC,GAAL,CAAS,6BAAT,CAA/B;AACA,eAAKC,UAAL,GAAkB,KAAKD,GAAL,CAAS,0BAAT,CAAlB;;AAEA,eAAKE,kBAAL;AACA,eAAKC,iBAAL;AACD;;AAED;AACA;AACA;;AAEAC,oBAAYC,QAAZ,EAAsB;AACpB,eAAKP,SAAL,CAAeQ,IAAf,CAAoBD,QAApB;AACD;;AAEDE,gBAAQC,IAAR,EAAc;AACZ,eAAKA,IAAL,GAAYA,IAAZ;AACA,eAAKT,uBAAL,CAA6BU,SAA7B,GAAyCD,IAAzC;AACD;;AAEDE,kBAAUC,MAAV,EAAkB;AAChB,eAAKC,oBAAL;AACA,eAAKC,aAAL,CAAmBF,MAAnB;AACD;;AAEDG,yBAAiBC,KAAjB,EAAwBC,KAAxB,EAA+B;AAC7B,eAAKD,KAAL,GAAaA,KAAb;AACA,eAAKE,2BAAL;AACD;;AAED;AACA;AACA;;AAEAf,6BAAqB;AACnB,eAAKF,GAAL,CAAS,sBAAT,EAAiCkB,gBAAjC,CACE,OADF,EACW,MAAM,KAAKC,2BAAL,EADjB;AAED;;AAEDhB,4BAAoB;AAClB,eAAKiB,wBAAL,GAAgC,KAAKpB,GAAL,CAAS,8BAAT,CAAhC;AACA,eAAKoB,wBAAL,CAA8BhB,WAA9B,CAA0C,IAA1C;AAED;;AAEDQ,+BAAuB;AACrB,cAAIS,gBAAgB,KAAKpB,UAAL,CAAgBqB,gBAApC;AACA,iBAAOD,aAAP,EAAsB;AACpB,iBAAKpB,UAAL,CAAgBsB,WAAhB,CAA4BF,aAA5B;AACAA,4BAAgB,KAAKpB,UAAL,CAAgBqB,gBAAhC;AACD;AACF;;AAEDT,sBAAcF,MAAd,EAAsB;AACpBA,iBAAOa,OAAP,CAAeC,SAAS;AACtB,gBAAIJ,gBAAgB,KAAKK,uBAAL,CAA6BD,KAA7B,CAApB;AACA,iBAAKxB,UAAL,CAAgB0B,WAAhB,CAA4BN,aAA5B;AACD,WAHD;AAID;;AAEDK,gCAAwBD,KAAxB,EAA+B;AAC7B,cAAIG,wEAAsB,sBAAtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAAJ;AACAA,oBAAUnB,SAAV,GAAsBgB,KAAtB;AACA,iBAAOG,SAAP;AACD;;AAEDT,sCAA8B;AAC5B,eAAKrB,SAAL,CAAe0B,OAAf,CAAuBnB,YAAY;AACjCA,qBAASwB,oBAAT,CAA8B,IAA9B;AACD,WAFD;AAGD;;AAEDZ,sCAA8B;AAC5B,eAAKnB,SAAL,CAAe0B,OAAf,CAAuBnB,YAAY;AACjCA,qBAASwB,oBAAT,CAA8B,IAA9B;AACD,WAFD;AAGD;;AA/EiD;;yBAA/BjC,gB","file":"bp2019-theme-group-item-widget.js","sourcesContent":["import Morph from 'src/components/widgets/lively-morph.js'\nimport { assertListenerInterface } from '../src/internal/individuals-as-points/common/interfaces.js'\nimport { ThemeGroupAction } from '../src/internal/individuals-as-points/common/actions.js'\n\nexport default class ThemeGroupWidget extends Morph {\n  async initialize() {\n    this.listeners = []\n    this.themeGroupNameContainer = this.get('#theme-group-name-container')\n    this.themesList = this.get('#theme-group-themes-list')\n    \n    this._setupRemoveButton()\n    this._setupColorPicker()\n  }\n  \n  // ------------------------------------------\n  // Public Methods\n  // ------------------------------------------\n  \n  addListener(listener) {\n    this.listeners.push(listener)\n  }\n\n  setName(name) {\n    this.name = name\n    this.themeGroupNameContainer.innerHTML = name\n  }\n  \n  setThemes(themes) {\n    this._clearExistingThemes()\n    this._addNewThemes(themes)\n  }\n  \n  setColorForValue(color, value) {\n    this.color = color\n    this._applyThemeGroupItemUpdated()\n  }\n  \n  // ------------------------------------------\n  // Private Methods\n  // ------------------------------------------\n  \n  _setupRemoveButton() {\n    this.get('#theme-group-removed').addEventListener(\n      \"click\", () => this._applyThemeGroupItemRemoved())\n  }\n  \n  _setupColorPicker() {\n    this.themeGroupColorSelection = this.get('#theme-group-color-selection')\n    this.themeGroupColorSelection.addListener(this)\n    \n  }\n  \n  _clearExistingThemes() {\n    let themeListItem = this.themesList.lastElementChild;\n    while (themeListItem) { \n      this.themesList.removeChild(themeListItem); \n      themeListItem = this.themesList.lastElementChild; \n    } \n  }\n  \n  _addNewThemes(themes) {\n    themes.forEach(theme => {\n      let themeListItem = this._createNewThemeListItem(theme)\n      this.themesList.appendChild(themeListItem)\n    })\n  }\n  \n  _createNewThemeListItem(theme) {\n    let themeItem = <li class=\"list-group-item py-1\"></li>;\n    themeItem.innerHTML = theme\n    return themeItem\n  }\n  \n  _applyThemeGroupItemRemoved() {\n    this.listeners.forEach(listener => {\n      listener.removeThemeGroupItem(this)\n    })\n  }\n  \n  _applyThemeGroupItemUpdated() {\n    this.listeners.forEach(listener => {\n      listener.removeThemeGroupItem(this)\n    })\n  }\n  \n  \n}"]}