{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-mpm-debugging/src/components/halo/lively-halo-item.js"],"names":["lively","Morph","Halo","HaloItem","isHaloItem","isMetaNode","initialize","registerMouseEvents","hideHalo","hideHalos","registerEvent","eventName","methodName","removeEventListener","addEventListener","e","startCustomDragging","startCustomDrag","evt","HaloService","isDragging","document","stopCustomDrag","start","body","parentElement","dragEvt","move","showHalos","window","that","wasDragging","stop","stopPropagation"],"mappings":";;;;;;AAGOA,Y;;AACAC,W;;AAEAC,U;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGP;;;;AAIe,YAAMC,QAAN,SAAuBF,KAAvB,CAA6B;;AAE1C,YAAIG,UAAJ,GAAiB;AAAE,iBAAO,IAAP;AAAY;;AAE/B,YAAIC,UAAJ,GAAiB;AAAE,iBAAO,IAAP;AAAY;;AAE/BC,qBAAa;AACX;AACA,eAAKC,mBAAL;AACD;;AAEDC,mBAAW;AACTN,eAAKO,SAAL;AACD;;AAEDF,8BAAsB;AACpB,eAAKG,aAAL,CAAmB,OAAnB,EAA4B,SAA5B;AACA,eAAKA,aAAL,CAAmB,aAAnB,EAAkC,aAAlC;AACA,eAAKA,aAAL,CAAmB,WAAnB,EAAgC,WAAhC;AACD;;AAEDA,sBAAcC,SAAd,EAAyBC,UAAzB,EAAqC;AACnC,cAAI,KAAKA,UAAL,CAAJ,EAAsB;AACpBZ,mBAAOa,mBAAP,CAA2B,SAA3B,EAAsC,IAAtC,EAA4CF,SAA5C;AACAX,mBAAOc,gBAAP,CAAwB,SAAxB,EAAmC,IAAnC,EAAyCH,SAAzC,EACEI,KAAK,KAAKH,UAAL,EAAiBG,CAAjB,CADP;AAED;AACF;;AAEDC,8BAAsB;AACpBhB,iBAAOa,mBAAP,CAA2B,MAA3B,EAAmC,IAAnC,EAAyC,WAAzC;AACAb,iBAAOc,gBAAP,CAAwB,MAAxB,EAAgC,IAAhC,EAAsC,WAAtC,EAAoDC,KAAK,KAAKE,eAAL,CAAqBF,CAArB,CAAzD;AACD;;AAEDE,wBAAgBC,GAAhB,EAAqB;AACnBC,sBAAYC,UAAZ,GAAyB,IAAzB;AACApB,iBAAOa,mBAAP,CAA2B,MAA3B,EAAmCQ,QAAnC,EAA6C,SAA7C;AACArB,iBAAOc,gBAAP,CAAwB,MAAxB,EAAgCO,QAAhC,EAA0C,SAA1C,EAAqDN,KAAK,KAAKO,cAAL,CAAoBP,CAApB,CAA1D;;AAEA,eAAKQ,KAAL,CAAWL,GAAX;;AAEA;AACAlB,iBAAOa,mBAAP,CAA2B,MAA3B,EAAmCQ,SAASG,IAAT,CAAcC,aAAjD,EAAgE,WAAhE;AACAzB,iBAAOc,gBAAP,CAAwB,MAAxB,EAAgCO,SAASG,IAAT,CAAcC,aAA9C,EAA6D,WAA7D,EAA2EC,OAAD,IAAa;AACrF,iBAAKC,IAAL,CAAUD,OAAV;AACA;AACAP,wBAAYS,SAAZ,CAAsBC,OAAOC,IAA7B;AACD,WAJD;AAKD;;AAEDR,uBAAeJ,GAAf,EAAoB;AAClBlB,iBAAOa,mBAAP,CAA2B,MAA3B,EAAmCQ,QAAnC,EAA6C,SAA7C;AACA;AACA,cAAIU,cAAc,KAAKX,UAAvB;AACA,eAAKY,IAAL,CAAUd,GAAV;AACA;AACAlB,iBAAOa,mBAAP,CAA2B,MAA3B,EAAmCQ,SAASG,IAAT,CAAcC,aAAjD,EAAgE,WAAhE;;AAEA,cAAIM,WAAJ,EAAiB;AACfZ,wBAAYS,SAAZ,CAAsBC,OAAOC,IAA7B;AACAZ,gBAAIe,eAAJ;AACD;AACDd,sBAAYC,UAAZ,GAA0B,KAA1B;AACD;;AA/DyC;;yBAAvBjB,Q","file":"lively-halo-item.js","sourcesContent":["/*\n * Abstract HaloItem class, that is used for elements/buttons in Halo\n */\nimport lively from 'src/client/lively.js'\nimport Morph from 'src/components/widgets/lively-morph.js'\n\nimport Halo from 'src/components/halo/lively-halo.js';\n\n\n/*\n * HaloItem are buttons layouted in from o halo around the object \n */\n\nexport default class HaloItem extends Morph {\n  \n  get isHaloItem() { return true}\n  \n  get isMetaNode() { return true}\n  \n  initialize() {\n    // super.initialize()\n    this.registerMouseEvents()\n  }\n\n  hideHalo() {\n    Halo.hideHalos()\n  }\n\n  registerMouseEvents() {\n    this.registerEvent('click', 'onClick')\n    this.registerEvent('pointerdown', 'onMouseDown')\n    this.registerEvent('pointerup', 'onMouseUp')\n  }\n  \n  registerEvent(eventName, methodName) {\n    if (this[methodName]) {\n      lively.removeEventListener('Morphic', this, eventName)\n      lively.addEventListener('Morphic', this, eventName, \n        e => this[methodName](e))\n    }  \n  }\n  \n  startCustomDragging() {\n    lively.removeEventListener(\"Drag\", this, 'mousedown');\n    lively.addEventListener(\"Drag\", this, 'mousedown',  e => this.startCustomDrag(e));\n  }\n \n  startCustomDrag(evt) {\n    HaloService.isDragging = true;\n    lively.removeEventListener(\"Drag\", document, 'mouseup');\n    lively.addEventListener(\"Drag\", document, 'mouseup', e => this.stopCustomDrag(e) );\n\n    this.start(evt);\n\n    // attach mousemove handler to body only after mousedown occured\n    lively.removeEventListener(\"Drag\", document.body.parentElement, 'mousemove')\n    lively.addEventListener(\"Drag\", document.body.parentElement, 'mousemove', (dragEvt) => {\n      this.move(dragEvt);\n      // update position of halos on mousemove\n      HaloService.showHalos(window.that);\n    });\n  }\n  \n  stopCustomDrag(evt) {\n    lively.removeEventListener(\"Drag\", document, 'mouseup');\n    // save this as dragging.stop will overwrite the current value\n    var wasDragging = this.isDragging;\n    this.stop(evt);\n    // detach mousemove handler from body\n    lively.removeEventListener(\"Drag\", document.body.parentElement, 'mousemove')\n\n    if (wasDragging) {\n      HaloService.showHalos(window.that);\n      evt.stopPropagation();\n    }\n    HaloService.isDragging  = false \n  }\n\n  \n}\n"]}