{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-function-completion/src/components/halo/lively-halo-drag-item.js"],"names":["lively","nodes","events","pt","HaloItem","Preferences","Snapping","Grid","HaloDragItem","initialize","startCustomDragging","start","evt","dragTarget","window","that","dragStartNodePosition","getPosition","dragStartEventPosition","globalPosition","preventDefault","snapping","halo","info","showInfoBox","haloDragStart","move","isDragging","noticableDistanceTo","dragTo","stop","clearHelpers","haloDragTo","eventPos","newPosition","subPt","addPt","rounded","style","position","setPosition","optSnapPosition","altKey","snap","innerHTML"],"mappings":"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","file":"lively-halo-drag-item.js","sourcesContent":["import lively from 'src/client/lively.js'\nimport * as nodes from 'src/client/morphic/node-helpers.js';\nimport * as events from 'src/client/morphic/event-helpers.js';\nimport {pt} from 'src/client/graphics.js'\nimport HaloItem from 'src/components/halo/lively-halo-item.js';\nimport Preferences from 'src/client/preferences.js'; \nimport Snapping from \"src/client/morphic/snapping.js\"\nimport {Grid} from 'src/client/morphic/snapping.js';\n\nexport default class HaloDragItem extends HaloItem {\n\n  initialize() {\n    this.startCustomDragging()\n  }\n\n  // Drag API\n  start(evt) {\n    this.dragTarget = window.that;\n    if (this.dragTarget) {\n      this.dragStartNodePosition = lively.getPosition(this.dragTarget);\n      this.dragStartEventPosition = events.globalPosition(evt);\n      evt.preventDefault();\n    \n      this.snapping = new Snapping(this.dragTarget) \n      this.halo.info =  lively.showInfoBox(this.dragTarget)\n     \n      if (this.dragTarget.haloDragStart) {\n        this.dragTarget.haloDragStart(this.dragStartEventPosition)\n      }\n    }\n  }\n  \n  move(evt) {\n    if (this.dragTarget && !this.isDragging && \n      events.noticableDistanceTo(evt, this.dragStartEventPosition)) {\n      // this.dragTarget.style.position = 'absolute';\n      this.isDragging = true;\n    }\n    if (this.isDragging) {\n      this.dragTo(evt);\n    }\n  }\n   \n  stop(evt) {\n    this.halo.info.stop()\n    //  STOP DRAGGING\n    if (this.isDragging) {    \n      this.isDragging = false;\n      evt.preventDefault();\n    }\n    this.dragTarget = null;\n    this.dragStartEventPosition = null;\n    this.dragStartNodePosition = null;\n    this.snapping.clearHelpers()\n    this.snapping = null\n  }\n\n  dragTo(evt) {\n    if (this.dragTarget.haloDragTo) {\n      this.dragTarget.haloDragTo(events.globalPosition(evt), this.dragStartEventPosition)\n    } else {\n      var eventPos = events.globalPosition(evt);\n      var newPosition = eventPos.subPt(this.dragStartEventPosition).\n        addPt(this.dragStartNodePosition)\n        \n      newPosition = newPosition.rounded()\n      if (this.dragTarget.style.position == \"absolute\") {\n        lively.setPosition(this.dragTarget, Grid.optSnapPosition(newPosition, evt));\n        if(!evt.altKey) {\n          this.snapping.snap()\n        }\n      } else {\n         lively.setPosition(this.dragTarget, newPosition, \"relative\");\n      }\n      this.halo.info.innerHTML = \"drag \" + lively.getPosition(this.dragTarget)\n    }\n    evt.preventDefault();\n  }\n}"]}