{"version":3,"sources":["https://lively-kernel.org/lively4/BP2019RH1/all-in-one-product/widgets/group-widget.js"],"names":["Morph","FilterWidget","initialize","name","listeners","valuesByAttribute","attributeSelect","get","applyButton","addEventListener","applyGrouping","setData","data","setValuesByAttributes","valuesByAttributes","setGroupAttributes","Object","keys","forEach","listener","applyAction","addListener","push","attributes","clearSelectOptions","attribute","appendChild","Option","getSelectedGroupAttribute","options","selectedIndex","value","select","length","remove"],"mappings":";;;;;;AAAOA,W;;;;;;;;;;;;;;;;;;AAEQ,YAAMC,YAAN,SAA2BD,KAA3B,CAAiC;AAC9C,cAAME,UAAN,GAAmB;AACjB,eAAKC,IAAL,GAAY,OAAZ;;AAEA,eAAKC,SAAL,GAAiB,EAAjB;AACA,eAAKC,iBAAL,GAAyB,EAAzB;;AAEA,eAAKC,eAAL,GAAuB,KAAKC,GAAL,CAAS,kBAAT,CAAvB;AACA,eAAKC,WAAL,GAAmB,KAAKD,GAAL,CAAS,cAAT,CAAnB;;AAEA,eAAKC,WAAL,CAAiBC,gBAAjB,CAAkC,OAAlC,EAA2C,MAAM;AAC/C,iBAAKC,aAAL;AACD,WAFD;AAGD;;AAEDC,gBAAQC,IAAR,EAAc;AACZ,eAAKC,qBAAL,CAA2BD,IAA3B;AACD;;AAEDC,8BAAsBC,kBAAtB,EAA0C;AACxC,eAAKT,iBAAL,GAAyBS,kBAAzB;AACA,eAAKC,kBAAL,CAAwBC,OAAOC,IAAP,CAAYH,kBAAZ,CAAxB;AACD;;AAEDJ,wBAAgB;AACd,eAAKN,SAAL,CAAec,OAAf,CAAyBC,QAAD,IAAc;AACpCA,qBAASC,WAAT,CAAqB,IAArB;AACD,WAFD;AAGD;;AAEDC,oBAAYF,QAAZ,EAAsB;AACpB,eAAKf,SAAL,CAAekB,IAAf,CAAoBH,QAApB;AACD;;AAEDJ,2BAAmBQ,UAAnB,EAA+B;AAC7B,eAAKC,kBAAL,CAAwB,KAAKlB,eAA7B;AACAiB,qBAAWL,OAAX,CAAqBO,SAAD,IAAe;AACjC,iBAAKnB,eAAL,CAAqBoB,WAArB,CAAiC,IAAIC,MAAJ,CAAWF,SAAX,CAAjC;AACD,WAFD;AAGD;;AAEDG,oCAA4B;AAC1B,iBAAO,KAAKtB,eAAL,CAAqBuB,OAArB,CAA6B,KAAKvB,eAAL,CAAqBwB,aAAlD,EAAiEC,KAAxE;AACD;;AAEDP,2BAAmBQ,MAAnB,EAA2B;AACzB,iBAAMA,OAAOH,OAAP,CAAeI,MAAf,GAAwB,CAA9B,EAAiC;AAC/BD,mBAAOH,OAAP,CAAeK,MAAf,CAAsB,CAAtB;AACD;AACF;AAjD6C;;yBAA3BjC,Y","file":"group-widget.js","sourcesContent":["import Morph from 'src/components/widgets/lively-morph.js'\n\nexport default class FilterWidget extends Morph {\n  async initialize() {\n    this.name = \"group\";\n    \n    this.listeners = [];\n    this.valuesByAttribute = {};\n    \n    this.attributeSelect = this.get(\"#attributeSelect\");\n    this.applyButton = this.get(\"#applyButton\");\n    \n    this.applyButton.addEventListener(\"click\", () => {\n      this.applyGrouping();\n    });\n  }\n  \n  setData(data) {\n    this.setValuesByAttributes(data);\n  }\n  \n  setValuesByAttributes(valuesByAttributes) {\n    this.valuesByAttribute = valuesByAttributes;\n    this.setGroupAttributes(Object.keys(valuesByAttributes));\n  }\n  \n  applyGrouping() {\n    this.listeners.forEach( (listener) => {\n      listener.applyAction(this);\n    });\n  }\n  \n  addListener(listener) {\n    this.listeners.push(listener);\n  }\n  \n  setGroupAttributes(attributes) {\n    this.clearSelectOptions(this.attributeSelect);\n    attributes.forEach( (attribute) => {\n      this.attributeSelect.appendChild(new Option(attribute));\n    });\n  }\n  \n  getSelectedGroupAttribute() {\n    return this.attributeSelect.options[this.attributeSelect.selectedIndex].value\n  }\n  \n  clearSelectOptions(select) {\n    while(select.options.length > 0) {\n      select.options.remove(0);\n    }\n  }\n}"]}