{"version":3,"names":["LivelyHand","__SystemJSRewritingHack","_export","setters","_srcComponentsWidgetsLivelyMorphJs","Morph","default","_srcClientGraphicsJs","pt","_srcClientMorphicSelectingJs","Selecting","_srcComponentsHaloLivelyHaloGrabItemJs","GrabItem","execute","_recorder_","_src_components_halo_lively_hand_js","Object","defineProperty","get","set","thisIsVererySecretVariableName","enumerable","configurable","initialize","setAttribute","lively","removeEventListener","outerWorldContext","addEventListener","e","onPointerDown","info","isMetaNode","world","worldContext","isWorld","document","body","parentElement","parentNode","grab","element","drop","pos","getClientPosition","appendChild","setClientPosition","childNodes","forEach","droptarget","dropTarget","elementUnderHand","evt","path","composedPath","slice","indexOf","srcElement","filter","ea","isIgnoredOnMagnify","canDropInto","startGrabbing","target","style","visibility","clientX","clientY","onPointerMove","onPointerUp","altKey","preferences","window","LastEvent2","preventDefault","dropIndicator","remove","showElement","border","innerHTML","migrate","hand","querySelector","ensureHand"],"sources":["lively-hand.js"],"sourcesContent":["import Morph from 'src/components/widgets/lively-morph.js';\nimport { pt } from \"src/client/graphics.js\"\nimport Selecting from \"src/client/morphic/selecting.js\"\nimport GrabItem from \"src/components/halo/lively-halo-grab-item.js\"\n\n\n/*\n * Classic old Morphic-like drag and drop of graphical elements\n */\n\nexport default class LivelyHand extends Morph {\n\n  initialize() {\n    this.setAttribute(\"data-lively4-donotpersist\", \"all\");\n    lively.removeEventListener(\"Hand\", this.outerWorldContext())\n    lively.addEventListener(\"Hand\", this.outerWorldContext(), \"pointerdown\",\n      e => this.onPointerDown(e))\n  }\n\n  get info() {\n    return this.get(\"#info\")\n  }\n\n  get isMetaNode() {\n    return true\n  }\n\n  outerWorldContext() {\n    var world = this.worldContext()\n    return world.isWorld ?\n      world :\n      document.body.parentElement\n  }\n\n\n  worldContext() {\n    return this.parentNode || document.body\n  }\n\n  grab(element) {\n    this.drop()\n    var pos = lively.getClientPosition(element)\n    this.appendChild(element)\n    lively.setClientPosition(element, pos)\n  }\n\n  drop() {\n    this.childNodes.forEach(element => {\n      var pos = lively.getClientPosition(element)\n      var droptarget = this.dropTarget || this.worldContext()\n      droptarget.appendChild(element)\n      lively.setClientPosition(element, pos)\n    })\n  }\n\n  elementUnderHand(evt) {\n\n    var path = evt.composedPath().slice(evt.composedPath().indexOf(evt.srcElement))\n      .filter(ea => !Selecting.isIgnoredOnMagnify(ea) &&\n        GrabItem.canDropInto(this, ea)\n      )\n    return path[0]\n  }\n\n  startGrabbing(target, evt) {\n    // this.style.display = \"block\"\n    this.style.visibility = \"visible\"\n    if (evt) {\n      lively.setClientPosition(this, pt(evt.clientX, evt.clientY));\n\n    }\n    lively.addEventListener(\"Hand\", document.body.parentElement, \"pointermove\",\n      e => this.onPointerMove(e))\n    lively.addEventListener(\"Hand\", document.body.parentElement, \"pointerup\",\n      e => this.onPointerUp(e))\n    this.grab(target)\n  }\n\n  onPointerDown(evt) {\n    // document.body.parentElement.setPointerCapture(evt.pointerId)\n    if (evt.altKey && !lively.preferences.get(\"DisableAltGrab\")) {\n      window.LastEvent2 = evt\n\n      var target = this.elementUnderHand(evt)\n      if (!target) return;\n      // lively.notify(\"grab this\" + target)\n      evt.preventDefault()\n      this.startGrabbing(target, evt)\n    }\n    // this.offset = lively.globalPosition(this)\n  }\n\n  onPointerMove(evt) {\n    if (this.dropIndicator) this.dropIndicator.remove()\n    this.dropTarget = this.elementUnderHand(evt)\n    if (this.dropTarget) {\n      this.dropIndicator = lively.showElement(this.dropTarget)\n      this.dropIndicator.style.border = \"3px dashed rgba(0,100,0,0.5)\"\n      this.dropIndicator.innerHTML = \"\"\n    }\n    lively.setClientPosition(this, pt(evt.clientX, evt.clientY))\n  }\n\n  onPointerUp(evt) {\n    if (this.dropIndicator) this.dropIndicator.remove()\n\n    // document.body.parentElement.releasePointerCapture(evt.pointerId)\n    lively.removeEventListener(\"Hand\", document.body.parentElement, \"pointermove\")\n    lively.removeEventListener(\"Hand\", document.body.parentElement, \"pointerup\")\n    this.drop()\n    this.style.visibility = \"hidden\"\n  }\n\n  static migrate() {\n    var hand = document.body.querySelector(\":scope > lively-hand\")\n    if (hand) {\n      hand.remove()\n      lively.ensureHand() // lazy... reinitialize\n    }\n  }\n\n}\n\n\n// does not work for booting .... \n// LivelyHand.migrate()\n"],"mappings":"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"}