{"version":3,"sources":["https://lively-kernel.org/lively4/BP2019RH1/components/bp2019-activate-deactivate-list-widget.js"],"names":["Morph","assertActivateDeactivateListListenerInterface","Bp2019ActivateDeactivateListWidget","initialize","listeners","activeItems","inactiveItems","inactiveItemsSelect","get","activeItemsSelect","addEventListener","_activateSelectedItems","_deactivateSelectedItems","addListener","listener","push","setActiveItems","itemNames","_setSelectionContent","setInactiveItems","activatedItems","_getSelectedOptions","_removeItemsFromSelect","_addItemsToSelect","activatedItemNames","_getValuesFromOptions","forEach","onItemsActivated","deactivatedItems","deactivatedItemNames","onItemsDeactivated","select","items","item","options","length","removeChild","result","i","option","selected","value","_clearSelectionContent","_createNewSelectionItems","remove","itemName","Option"],"mappings":"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","file":"bp2019-activate-deactivate-list-widget.js","sourcesContent":["\"enable aexpr\";\n\nimport Morph from 'src/components/widgets/lively-morph.js';\n\nimport { assertActivateDeactivateListListenerInterface } from \"https://lively-kernel.org/lively4/BP2019RH1/src/internal/individuals-as-points/common/interfaces.js\"\n\nexport default class Bp2019ActivateDeactivateListWidget extends Morph {\n  async initialize() {\n    this.listeners = []\n    this.activeItems = []\n    this.inactiveItems = []\n    \n    this.inactiveItemsSelect = this.get(\"#inactive-items-select\")\n    this.activeItemsSelect = this.get(\"#active-items-select\")\n    \n    this.get(\"#activate-button\").addEventListener(\"click\", () => {this._activateSelectedItems()})\n    this.get(\"#deactivate-button\").addEventListener(\"click\", () => {this._deactivateSelectedItems()})\n  }\n  \n  addListener(listener) {\n    assertActivateDeactivateListListenerInterface(listener)\n    this.listeners.push(listener)\n  }\n  \n  setActiveItems(itemNames) {\n    this.activeItems = itemNames\n    this._setSelectionContent(this.activeItemsSelect, itemNames)\n  }\n  \n  setInactiveItems(itemNames) {\n    this.inactiveItems = itemNames\n    this._setSelectionContent(this.inactiveItemsSelect, itemNames)\n  }\n  \n  _activateSelectedItems() {\n    let activatedItems = this._getSelectedOptions(this.inactiveItemsSelect)\n    this._removeItemsFromSelect(this.inactiveItemsSelect, activatedItems)\n    this._addItemsToSelect(this.activeItemsSelect, activatedItems)\n    \n    let activatedItemNames = this._getValuesFromOptions(activatedItems)\n    \n    this.listeners.forEach(listener => {\n      listener.onItemsActivated(activatedItemNames)\n    })\n  }\n  \n  _deactivateSelectedItems() {\n    let deactivatedItems = this._getSelectedOptions(this.activeItemsSelect)\n    this._removeItemsFromSelect(this.activeItemsSelect, deactivatedItems)\n    this._addItemsToSelect(this.inactiveItemsSelect, deactivatedItems)\n    \n    let deactivatedItemNames = this._getValuesFromOptions(deactivatedItems)\n    \n    this.listeners.forEach(listener => {\n      listener.onItemsDeactivated(deactivatedItemNames)\n    })\n  }\n  \n  _addItemsToSelect(select, items) {\n    items.forEach(item => {\n      select.options[select.options.length] = item\n    })\n  }\n  \n  _removeItemsFromSelect(select, items) {\n    items.forEach(item => {\n      select.removeChild(item)\n    })\n  }\n  \n  _getSelectedOptions(select) {\n    let result = [];\n    let options = select && select.options;\n    \n    for (let i = 0; i < options.length; i++) {\n      let option = options[i]\n      if (option.selected) {\n        result.push(option)\n      }  \n    }\n    \n    return result;\n  }\n  \n  _getValuesFromOptions(options) {\n    let result = []\n    \n    for(let i = 0; i < options.length; i++) {\n      result.push(options[i].value)\n    }\n    \n    return result\n  }\n  \n  _setSelectionContent(select, itemNames) {\n    this._clearSelectionContent(select)\n    this._createNewSelectionItems(select, itemNames)\n  }\n  \n  _clearSelectionContent(select) {\n    while(select.options.length > 0) {\n      select.options.remove(0);\n    }\n  }\n  \n  _createNewSelectionItems(select, itemNames) {\n    itemNames.forEach(itemName => {\n      select.options[select.options.length] = new Option(itemName)\n    })\n  }\n  \n}"]}