{"version":3,"sources":["https://lively-kernel.org/lively4/BP2019RH1/components/bp2019-global-control-widget.js"],"names":["Morph","assertActionWidgetInterface","assertListenerInterface","assertSizeListenerInterface","collapse","GlobalControlWidget","initialize","windowTitle","listeners","widgets","sizeListeners","collapsed","toggleButton","get","addEventListener","classList","toggle","_setCollapsedPosition","extent","setExtent","setDataProcessor","dataProcessor","setColorStore","colorStore","initializeAfterDataFetch","_initializeWidgets","applyAction","action","forEach","listener","addListener","push","addSizeListener","clearListeners","close","parentElement","remove","loadState","state","widget","setData","data","lively","pt","y","setPosition","position","setToNotCollapsable","style","display","x","attributes","getAllAttributes","valuesByAttribute","getValuesByAttribute","_initializeWidgetWithData","widgetName","dataForWidget","initializeWithData"],"mappings":"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","file":"bp2019-global-control-widget.js","sourcesContent":["import Morph from 'src/components/widgets/lively-morph.js'\nimport { assertActionWidgetInterface, assertListenerInterface, assertSizeListenerInterface } from '../src/internal/individuals-as-points/common/interfaces.js';\n\nimport { collapse } from \"../src/internal/individuals-as-points/common/utils.js\"\n\nexport default class GlobalControlWidget extends Morph {\n  async initialize() {\n    this.windowTitle = \"Global controls\"\n    this.listeners = []\n    this.widgets = []\n    this.sizeListeners = []\n    \n    this.collapsed = false\n    \n    this.toggleButton = this.get(\"#control-panel-toggle-button\")\n    this.toggleButton.addEventListener(\"click\", () => {\n      this.collapsed = !this.collapsed\n      collapse(this, \"#control-panel-container\", \"toggle\")\n      this.toggleButton.classList.toggle(\"collapse-button\")\n      this.toggleButton.classList.toggle(\"expand-button\")\n      this._setCollapsedPosition()\n      if (this.extent) {\n        this.setExtent(this.extent)\n      }\n    })\n    \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  async initializeAfterDataFetch() {\n    this._initializeWidgets()\n  }\n  \n  applyAction(action) {\n    this.listeners.forEach( (listener) => {\n      listener.applyAction(action)\n    })\n  }\n  \n  addListener(listener) {\n    assertListenerInterface(listener)\n    this.listeners.push(listener)\n  }\n  \n  addSizeListener(listener) {\n    assertSizeListenerInterface(listener)\n    this.sizeListeners.push(listener)\n  }\n  \n  clearListeners() {\n    this.listeners = []\n  }\n  \n  close() {\n    if(this.parentElement) this.parentElement.remove()\n  }\n  \n  loadState(state) {\n    this.setDataProcessor(state.dataProcessor)\n    this.setColorStore(state.colorStore)\n    this.widgets.forEach(widget => widget.loadState(state))\n  }\n    \n  setData(data) {\n    \n  }\n  \n  setExtent(extent) {\n    this.extent = extent\n    if (this.collapsed) {\n      lively.setExtent(this, lively.pt(45, extent.y))\n    } else {\n      lively.setExtent(this, extent)\n    }\n  }\n  \n  setPosition(position) {\n    this.position = position\n  }\n  \n  setToNotCollapsable() {\n    this.toggleButton.style.display = \"none\"\n  }\n  \n  // ------------------------------------------\n  // Private Methods\n  // ------------------------------------------\n  \n  _setCollapsedPosition() {\n    if (this.collapsed) {\n      lively.setPosition(this, lively.pt(this.position.x + 155, this.position.y))\n    } else {\n      lively.setPosition(this, this.position)\n    }\n  }\n   \n  _initializeWidgets() {\n    let attributes = this.dataProcessor.getAllAttributes()\n    let valuesByAttribute = this.dataProcessor.getValuesByAttribute()\n    this._initializeWidgetWithData(\"#color-widget\", attributes)\n    this._initializeWidgetWithData(\"#select-widget\", valuesByAttribute)\n    this._initializeWidgetWithData(\"#filter-widget\", valuesByAttribute)\n  }\n  \n  _initializeWidgetWithData(widgetName, dataForWidget) {\n    let widget = this.get(widgetName)\n    assertActionWidgetInterface(widget)\n    widget.addListener(this)\n    widget.setDataProcessor(this.dataProcessor)\n    widget.setColorStore(this.colorStore)\n    widget.initializeWithData(dataForWidget)\n    this.widgets.push(widget)\n  }\n}\n"]}