{"version":3,"names":["HaloItem","lively","Morph","Halo","HaloService","default","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"],"sources":["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"],"mappings":"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"}