{"version":3,"sources":["https://lively-kernel.org/lively4/swd21-pipes-and-filters/src/components/tools/lively-target-button.js"],"names":["Morph","LivelyTargetButton","initialize","registerButtons","addEventListener","evt","onMouseEnter","onMouseLeave","removeHighlight","showHighlight","target","onChooseTarget","lively","sleep","document","body","onChooseTargetSelect","onChooseTargetHighlight","highlight","remove","showElement","highlightTarget","style","border","querySelector","color","composedPath","removeEventListener","dispatchEvent","CustomEvent","detail"],"mappings":";;;;;;AAOOA,W;;;;;;;;;;;AAAAA,gD;;;;;;;AAEQ,YAAMC,kBAAN,SAAiCD,KAAjC,CAAuC;AACpD,cAAME,UAAN,GAAmB;AACjB,eAAKC,eAAL;AACA,eAAKC,gBAAL,CAAsB,YAAtB,EAAoCC,OAAO,KAAKC,YAAL,CAAkBD,GAAlB,CAA3C;AACA,eAAKD,gBAAL,CAAsB,YAAtB,EAAoCC,OAAO,KAAKE,YAAL,CAAkBF,GAAlB,CAA3C;AAED;;AAED,cAAMC,YAAN,GAAqB;AACnB,eAAKE,eAAL;AACA,eAAKC,aAAL,CAAmB,KAAKC,MAAxB;AACD;;AAED,cAAMH,YAAN,GAAqB;AACnB,eAAKC,eAAL;AACD;;AAED,cAAMG,cAAN,GAAuB;AACrB,gBAAMC,OAAOC,KAAP,CAAa,CAAb,CAAN,CADqB,CACE;AACvBD,iBAAOR,gBAAP,CAAwB,cAAxB,EAAwCU,SAASC,IAAjD,EAAuD,OAAvD,EAAgEV,OAAO,KAAKW,oBAAL,CAA0BX,GAA1B,CAAvE;AACAO,iBAAOR,gBAAP,CAAwB,cAAxB,EAAwCU,SAASC,IAAjD,EAAuD,WAAvD,EAAoEV,OAAO,KAAKY,uBAAL,CAA6BZ,GAA7B,CAA3E;AAED;;AAEDG,0BAAkB;AAChB,cAAI,KAAKU,SAAT,EAAoB,KAAKA,SAAL,CAAeC,MAAf;AACrB;;AAEDV,sBAAcC,MAAd,EAAsB;AACpB,cAAI,CAACA,MAAL,EAAa;AACb,eAAKF,eAAL;AACA,eAAKU,SAAL,GAAiBN,OAAOQ,WAAP,CAAmB,KAAKC;AACzC;AADiB,WAAjB,CAEA,KAAKH,SAAL,CAAeI,KAAf,CAAqBC,MAArB,GAA8B,iBAA9B;AACA,eAAKL,SAAL,CAAeM,aAAf,CAA6B,KAA7B,EAAoCF,KAApC,CAA0CG,KAA1C,GAAkD,MAAlD;AACD;;AAEDR,gCAAwBZ,GAAxB,EAA6B;AAC3B,eAAKgB,eAAL,GAAuBhB,IAAIqB,YAAJ,GAAmB,CAAnB,CAAvB;AACA,eAAKjB,aAAL,CAAmB,KAAKY,eAAxB;AACD;;AAEDL,+BAAuB;AACrB,eAAKR,eAAL;AACAI,iBAAOe,mBAAP,CAA2B,cAA3B,EAA2Cb,SAASC,IAApD;AACA,eAAKL,MAAL,GAAc,KAAKW,eAAnB;AACA;AACA,eAAKO,aAAL,CAAmB,IAAIC,WAAJ,CAAgB,gBAAhB,EAAkC,EAACC,QAAQ,EAACpB,QAAQ,KAAKA,MAAd,EAAT,EAAlC,CAAnB;AACD;;AAhDmD;;yBAAjCT,kB;;;;;;;;6BAAAA,mD","file":"lively-target-button.js","sourcesContent":["/* # Target Selector button\n - click on button and then on target\n - previews possible targets on mouse over target\n - fires \"target-changeed\" event when \"this.target\" changes \n - shows current target on mouse over button itself\n*/\n\nimport Morph from 'src/components/widgets/lively-morph.js';\n\nexport default class LivelyTargetButton extends Morph {\n  async initialize() {\n    this.registerButtons()\n    this.addEventListener(\"mouseenter\", evt => this.onMouseEnter(evt))\n    this.addEventListener(\"mouseleave\", evt => this.onMouseLeave(evt))\n\n  }\n  \n  async onMouseEnter() {\n    this.removeHighlight()\n    this.showHighlight(this.target)    \n  }\n\n  async onMouseLeave() {\n    this.removeHighlight()\n  }\n  \n  async onChooseTarget() {\n    await lively.sleep(0); // not in this turn...\n    lively.addEventListener(\"TargetButton\", document.body, \"click\", evt => this.onChooseTargetSelect(evt))\n    lively.addEventListener(\"TargetButton\", document.body, \"mousemove\", evt => this.onChooseTargetHighlight(evt))\n\n  }\n\n  removeHighlight() {\n    if (this.highlight) this.highlight.remove()\n  }\n  \n  showHighlight(target) {\n    if (!target) return;\n    this.removeHighlight()\n    this.highlight = lively.showElement(this.highlightTarget)\n    // this.highlight.innerHTML = \"\"\n    this.highlight.style.border = \"2px dashed blue\"    \n    this.highlight.querySelector(\"pre\").style.color = \"blue\"\n  }\n\n  onChooseTargetHighlight(evt) {\n    this.highlightTarget = evt.composedPath()[0]\n    this.showHighlight(this.highlightTarget)\n  }\n  \n  onChooseTargetSelect() {\n    this.removeHighlight()\n    lively.removeEventListener(\"TargetButton\", document.body)\n    this.target = this.highlightTarget\n    // HaloService.showHalos(this.target)\n    this.dispatchEvent(new CustomEvent(\"target-changed\", {detail: {target: this.target}}))\n  }\n  \n}"]}