{"version":3,"sources":["https://lively-kernel.org/lively4/composed-offset/src/components/halo/lively-halo-item.js"],"names":["lively","Morph","Halo","HaloService","default","HaloItem","isHaloItem","isMetaNode","halo","parentElement","v","initialize","registerMouseEvents","hideHalo","hideHalos","registerEvent","eventName","methodName","removeEventListener","addEventListener","e","startCustomDragging","startCustomDrag","evt","isDragging","document","stopCustomDrag","start","body","dragEvt","move","showHalos","window","that","wasDragging","stop","stopPropagation"],"mappings":";;;;;;AAGOA,Y;;AACAC,W;;AAEAC,U;AAEYC,iB,kCAAXC,O;;;;;;;;;;;AALDJ,iD;;;;;;;;;;;;;AACAC,gD;;;;;;;;;;;;;AAEAC,+C;;;;;;;;;;;;;AAEYC,sD;;;;;;;;;AAEnB;;;;AAIe,YAAME,QAAN,SAAuBJ,KAAvB,CAA6B;;AAE1C,YAAIK,UAAJ,GAAiB;AAAE,iBAAO,IAAP;AAAY;;AAE/B,YAAIC,UAAJ,GAAiB;AAAE,iBAAO,IAAP;AAAY;;AAE/B,YAAIC,IAAJ,GAAW;AACT,iBAAO,KAAKC,aAAZ;AACD;;AAED,YAAID,IAAJ,CAASE,CAAT,EAAY;AACV;AACD;;AAGDC,qBAAa;AACX;AACA,eAAKC,mBAAL;AACD;;AAEDC,mBAAW;AACTX,eAAKY,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;AACpBjB,mBAAOkB,mBAAP,CAA2B,SAA3B,EAAsC,IAAtC,EAA4CF,SAA5C;AACAhB,mBAAOmB,gBAAP,CAAwB,SAAxB,EAAmC,IAAnC,EAAyCH,SAAzC,EACEI,KAAK,KAAKH,UAAL,EAAiBG,CAAjB,CADP;AAED;AACF;;AAEDC,8BAAsB;AACpBrB,iBAAOkB,mBAAP,CAA2B,MAA3B,EAAmC,IAAnC,EAAyC,WAAzC;AACAlB,iBAAOmB,gBAAP,CAAwB,MAAxB,EAAgC,IAAhC,EAAsC,WAAtC,EAAoDC,KAAK,KAAKE,eAAL,CAAqBF,CAArB,CAAzD;AACD;;AAEDE,wBAAgBC,GAAhB,EAAqB;AACnBpB,sBAAYqB,UAAZ,GAAyB,IAAzB;AACAxB,iBAAOkB,mBAAP,CAA2B,MAA3B,EAAmCO,QAAnC,EAA6C,SAA7C;AACAzB,iBAAOmB,gBAAP,CAAwB,MAAxB,EAAgCM,QAAhC,EAA0C,SAA1C,EAAqDL,KAAK,KAAKM,cAAL,CAAoBN,CAApB,CAA1D;;AAEA,eAAKO,KAAL,CAAWJ,GAAX;;AAEA;AACAvB,iBAAOkB,mBAAP,CAA2B,MAA3B,EAAmCO,SAASG,IAAT,CAAcnB,aAAjD,EAAgE,WAAhE;AACAT,iBAAOmB,gBAAP,CAAwB,MAAxB,EAAgCM,SAASG,IAAT,CAAcnB,aAA9C,EAA6D,WAA7D,EAA2EoB,OAAD,IAAa;AACrF,iBAAKC,IAAL,CAAUD,OAAV;AACA;AACA1B,wBAAY4B,SAAZ,CAAsBC,OAAOC,IAA7B;AACD,WAJD;AAKD;;AAEDP,uBAAeH,GAAf,EAAoB;AAClBvB,iBAAOkB,mBAAP,CAA2B,MAA3B,EAAmCO,QAAnC,EAA6C,SAA7C;AACA;AACA,cAAIS,cAAc,KAAKV,UAAvB;AACA,eAAKW,IAAL,CAAUZ,GAAV;AACA;AACAvB,iBAAOkB,mBAAP,CAA2B,MAA3B,EAAmCO,SAASG,IAAT,CAAcnB,aAAjD,EAAgE,WAAhE;;AAEA,cAAIyB,WAAJ,EAAiB;AACf/B,wBAAY4B,SAAZ,CAAsBC,OAAOC,IAA7B;AACAV,gBAAIa,eAAJ;AACD;AACDjC,sBAAYqB,UAAZ,GAA0B,KAA1B;AACD;;AAxEyC;;yBAAvBnB,Q;;;;;;;;6BAAAA,yC","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\nimport {default as HaloService} from \"src/components/halo/lively-halo.js\"\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  get halo() {\n    return this.parentElement\n  }\n  \n  set halo(v) {\n    // nothing to set here any more\n  }\n  \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"]}