{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-drawio/src/client/morphic/dragbehavior.js"],"names":["pt","DragBehavior","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"],"mappings":";;;;;;AAAQA,Q,wBAAAA,E;;;;;AAEO,YAAMC,YAAN,CAAmB;AAChC,eAAOC,EAAP,CAAUC,MAAV,EAAkB;AAChB,iBAAO,mDAAIF,YAAJ,CAAiBE,MAAjB,CAAP;AACD;;AAEDC,oBAAYD,MAAZ,EAAoB;AAClB,eAAKA,MAAL,GAAcA,MAAd;AACA,eAAKA,MAAL,CAAYE,SAAZ,GAAwB,IAAxB;AACAC,iBAAOC,gBAAP,CAAwB,cAAxB,EAAwC,KAAKJ,MAA7C,EAAqD,WAArD,EACGK,GAAD,IAAS,KAAKC,WAAL,CAAiBD,GAAjB,CADX;AAGD;;AAEDC,oBAAYD,GAAZ,EAAiB;AACf,eAAKE,gBAAL,GAAwBJ,OAAOK,WAAP,CAAmB,KAAKR,MAAxB,CAAxB;AACA,eAAKS,MAAL,GAAc,KAAKF,gBAAL,CAAsBG,KAAtB,CAA4B,kDAAGL,IAAIM,OAAP,EAAgBN,IAAIO,OAApB,CAA5B,CAAd;AACAP,cAAIQ,YAAJ,CAAiBC,YAAjB,CAA8BC,SAASC,aAAT,CAAuB,KAAvB,CAA9B,EAA6D,CAA7D,EAAgE,CAAhE;;AAEAb,iBAAOC,gBAAP,CAAwB,cAAxB,EAAwC,KAAKJ,MAA7C,EAAqD,MAArD,EACGK,GAAD,IAAS,KAAKY,MAAL,CAAYZ,GAAZ,CADX;AAEAF,iBAAOC,gBAAP,CAAwB,cAAxB,EAAwC,KAAKJ,MAA7C,EAAqD,SAArD,EACGK,GAAD,IAAS,KAAKa,SAAL,CAAeb,GAAf,CADX;;AAGA,cAAI,KAAKL,MAAL,CAAYmB,iBAAhB,EAAmC;AACjC,iBAAKnB,MAAL,CAAYmB,iBAAZ,CAA8Bd,GAA9B,EAAmC,KAAKE,gBAAxC;AACD;AACF;;AAEDU,eAAOZ,GAAP,EAAY;AACV;AACA,cAAIA,IAAIM,OAAJ,IAAe,CAAf,IAAoBN,IAAIO,OAAJ,IAAe,CAAvC,EAA0C,OAFhC,CAEwC;AAClD,cAAIP,IAAIe,OAAJ,GAAc,CAAlB,EAAqB,OAHX,CAGmB;;AAE7B,cAAIC,MAAM,kDAAGhB,IAAIM,OAAP,EAAgBN,IAAIO,OAApB,EAA6BU,KAA7B,CAAmC,KAAKb,MAAxC,CAAV;AACA,cAAI,KAAKT,MAAL,CAAYuB,gBAAhB,EAAkC;AAChC,iBAAKvB,MAAL,CAAYuB,gBAAZ,CAA6BlB,GAA7B,EAAkCgB,GAAlC,EAAuC,KAAKd,gBAA5C;AACD,WAFD,MAEO;AACLJ,mBAAOqB,WAAP,CAAmB,KAAKxB,MAAxB,EAAgCqB,GAAhC;AACD;AACF;;AAEDH,kBAAUb,GAAV,EAAe;AACbF,iBAAOsB,mBAAP,CAA2B,cAA3B,EAA2C,KAAKzB,MAAhD,EAAwD,MAAxD;AACAG,iBAAOsB,mBAAP,CAA2B,cAA3B,EAA2C,KAAKzB,MAAhD,EAAwD,SAAxD;;AAEA,cAAI,KAAKA,MAAL,CAAY0B,eAAhB,EAAiC;AAC/B,iBAAK1B,MAAL,CAAY0B,eAAZ,CAA4BrB,GAA5B,EAAiC,KAAKE,gBAAtC;AACD;AACF;AAhD+B;;yBAAbT,Y","file":"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"]}