{"version":3,"names":["DragBehavior","pt","on","target","constructor","draggable","lively","addEventListener","evt","onDragStart","originalPosition","getPosition","offset","subPt","clientX","clientY","dataTransfer","setDragImage","document","createElement","onDrag","onDragEnd","dragBehaviorStart","offsetX","pos","addPt","dragBehaviorMove","setPosition","removeEventListener","dragBehaviorEnd"],"sources":["dragbehavior.js"],"sourcesContent":["import {pt} from \"src/client/graphics.js\" \n\nexport default class DragBehavior {\n  static on(target) {\n    return new DragBehavior(target)  \n  }\n  \n  constructor(target) {\n    this.target = target\n    this.target.draggable = true\n    lively.addEventListener(\"DragBehavior\", this.target, \"dragstart\", \n      (evt) => this.onDragStart(evt))\n\n  }\n  \n  onDragStart(evt) {\n    this.originalPosition = lively.getPosition(this.target)\n    this.offset = this.originalPosition.subPt(pt(evt.clientX, evt.clientY))\n    evt.dataTransfer.setDragImage(document.createElement(\"div\"), 0, 0); \n\n    lively.addEventListener(\"DragBehavior\", this.target, \"drag\", \n      (evt) => this.onDrag(evt))\n    lively.addEventListener(\"DragBehavior\", this.target, \"dragend\", \n      (evt) => this.onDragEnd(evt))\n      \n    if (this.target.dragBehaviorStart) {\n      this.target.dragBehaviorStart(evt, this.originalPosition)\n    }\n  }\n  \n  onDrag(evt) {\n    // console.log(\"pos \" + evt.clientX, evt.offsetX, evt.clientX - evt.offsetX, evt )\n    if (evt.clientX == 0 && evt.clientY == 0) return; // #Garbage event\n    if (evt.offsetX < 0) return; // another #Garbage event\n\n    var pos = pt(evt.clientX, evt.clientY).addPt(this.offset)\n    if (this.target.dragBehaviorMove) {\n      this.target.dragBehaviorMove(evt, pos, this.originalPosition)\n    } else {\n      lively.setPosition(this.target, pos)\n    }\n  }\n\n  onDragEnd(evt) {\n    lively.removeEventListener(\"DragBehavior\", this.target, \"drag\")\n    lively.removeEventListener(\"DragBehavior\", this.target, \"dragend\")\n\n    if (this.target.dragBehaviorEnd) {\n      this.target.dragBehaviorEnd(evt, this.originalPosition)\n    }\n  }\n}\n"],"mappings":"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"}