{"version":3,"names":["Selection","__SystemJSRewritingHack","_export","setters","_reactiveJsx","_childText","childText","_childElement","childElement","_children","children","_attributeStringLiteral","attributeStringLiteral","_attributes","attributes","_element","element","_addSourceLocation","addSourceLocation","_srcComponentsWidgetsLivelyMorphJs","Morph","default","_srcClientMorphicNodeHelpersJs","nodes","_srcClientMorphicEventHelpersJs","events","_srcClientGraphicsJs","pt","rect","_srcComponentsHaloLivelyHaloJs","HaloService","execute","_recorder_","_src_components_halo_lively_selection_js","Object","defineProperty","get","set","thisIsVererySecretVariableName","enumerable","configurable","isMetaNode","isSelection","load","window","lively","setTimeout","current","document","createElement","file","end","column","line","start","components","openInBody","remove","registerOn","documentElement","target","removeEventListener","addEventListener","e","onPointerDown","onPointerDownPre","initialize","startPositions","Map","originalExtents","originalOffset","allowsSelection","evt","classList","contains","livelyAllowsSelection","ctrlKey","altKey","composedPath","find","ea","body","pointerType","showEvent","style","display","touchAction","startSelection","button","hand","childNodes","length","disabled","sourceCapabilities","firesTouchEvents","showPoint","clientX","clientY","onPointerMove","onPointerUp","selectionOffset","context","evtPos","parentElement","appendChild","setClientPosition","topLeft","minPt","bottomRight","maxPt","selectionBounds","setExtent","subPt","Array","from","filter","getBoundingClientRect","r","eaRect","left","top","width","height","containsRect","releasePointerCapture","pointerId","minP","maxP","forEach","that","showHalos","haloRemove","console","log","haloCopyObject","haloItem","html","clipboard","nodesToHTML","lastClickPos","getClientPosition","result","pasteHTMLDataInto","haloDragStart","fromPos","concat","getPosition","haloDragTo","toPos","delta","setPosition","addPt","haloGrabStart","startPos","isCopyItem","startEventPos","add","pos","haloGrabMove","grabHaloItem","globalPosition","haloGrabStop","positions","dropTarget","droptargetAtEvent","i","offset","position","localizePosition","s","haloResizeStart","eventOffset","getExtent","parentNode","haloResizeMove","newExtent","oldExtent","scale","scaleBy","x","y","oldRelativePos","scaleByPt","haloResizeStop","livelyInspect","contentNode","inspector","selection"],"sources":["lively-selection.js"],"sourcesContent":["import Morph from 'src/components/widgets/lively-morph.js';\n\nimport * as nodes from 'src/client/morphic/node-helpers.js';\nimport * as events from 'src/client/morphic/event-helpers.js';\nimport {pt, rect} from 'src/client/graphics.js';\n\nimport {default as HaloService} from \"src/components/halo/lively-halo.js\"\n\n// import Clipboard from 'src/client/clipboard.js'; // #TODO Problems with cyclic dependencies...\n\n// document.querySelectorAll(\"lively-selection\").forEach(ea => ea.remove())\n/*MD \n\n# Lively Selection \n\n- allows to drag a rectangle around elements and interact with them as a group\n- registers itself in load()\n\nMD*/\n\n\nexport default class Selection extends Morph {\n  \n  get isMetaNode() { return true}\n  get isSelection() { return true}\n \n  static async load() {\n    if (!window.lively) {\n      return setTimeout(() => {Selection.load()}, 100) // defere\n    }\n    \n    if (!this.current){\n      this.current = document.createElement(\"lively-selection\")\n      await lively.components.openInBody(this.current)\n      this.current.remove()\n    } \n    this.current.registerOn(document.documentElement)\n  }\n  \n  registerOn(target) {\n    lively.removeEventListener(\"Selection\", target)\n    lively.addEventListener(\"Selection\", target, \"pointerdown\", \n      e => Selection.current.onPointerDown(e))  // select in bubling phase ...\n    lively.addEventListener(\"Selection\", target, \"pointerdown\", \n      e => Selection.current.onPointerDownPre(e), true)  // pre select in capturing phase ...\n  }\n \n  initialize() {\n    // super.initialize()\n    this.nodes = [];\n    this.startPositions = new Map();\n    this.originalExtents = new Map();\n    this.originalOffset = new Map();\n  }\n\n  allowsSelection(element, evt) {\n    // the \"evt\" is important, because an element might be picky about it...\n     return (element.classList && element.classList.contains(\"lively-group\"))\n       || (element.livelyAllowsSelection && element.livelyAllowsSelection(evt))\n       // ||(element.tagName == \"LIVELY-CONTAINER\")\n  }\n  \n  onPointerDownPre(evt) {\n    // lively.showEvent(evt)\n\n    if (evt.ctrlKey || evt.altKey) return;\n    var target = evt.composedPath().find(ea => this.allowsSelection(ea, evt)); // start with the innermost\n    // console.log('evt path:' + evt.composedPath().map(ea => ea.classList).join(\"|\")+ \": \" + target)\n    \n    if (evt.composedPath()[0] !== document.body && evt.composedPath()[0] !==  document.documentElement && !target) return \n    if (evt.pointerType == \"touch\") return; // no selection via touch\n    \n    lively.showEvent(evt).style.display = \"none\"; // #HACK, weired event shit.. without it the world scrolls #TODO\n    document.documentElement.style.touchAction = \"none\"\n\n    if (target) {\n      // we won't be called in the bubbling, so we do it now\n      this.startSelection(target, evt)\n    }\n    \n  }\n  \n  onPointerDown(evt) {\n    var target;\n    if (evt.ctrlKey || evt.altKey) return;\n    if (evt.button === 1 || evt.button === 2) { // middle mouse or riught mouse button\n      return\n    }\n    \n    if (evt.composedPath()[0] === document.body || evt.composedPath()[0] ===  document.documentElement) {\n      target = document.body\n    } \n    if (evt.pointerType == \"touch\") return; // no selection via touch\n    \n    if (!target)\n      target = evt.composedPath().find(ea => ea.classList && ea.classList.contains(\"lively-group\"))\n    // if (target) lively.showElement(target)\n    if (!target) return;\n    \n    document.documentElement.style.touchAction = \"none\"\n    // document.documentElement.setPointerCapture(evt.pointerId)\n    \n    if (lively.hand && lively.hand.childNodes.length > 0) return; // in drag\n    if (this.disabled) return\n    \n    // don't select with touch \n    if (evt.sourceCapabilities && evt.sourceCapabilities.firesTouchEvents) {\n      lively.showPoint(pt(evt.clientX, evt.clientY))     \n      return\n    }\n    this.startSelection(target, evt)\n  }\n\n  startSelection(target, evt) {\n    lively.addEventListener(\"Selection\", document.documentElement, \"pointermove\", \n      e => this.onPointerMove(e))\n    lively.addEventListener(\"Selection\", document.documentElement, \"pointerup\", \n      e => this.onPointerUp(e))\n\n    this.selectionOffset = pt(evt.clientX, evt.clientY)\n    this.context = target;\n    this.nodes = [];\n  }\n  \n  \n  onPointerMove(evt) {\n    var evtPos =  pt(evt.clientX, evt.clientY);\n\n    if (!this.parentElement) {  \n      document.body.appendChild(this)\n      lively.setClientPosition(this, this.selectionOffset);\n    }\n    \n    var topLeft = this.selectionOffset.minPt(evtPos);\n    var bottomRight = this.selectionOffset.maxPt(evtPos);\n  \n    this.selectionBounds = rect(topLeft, bottomRight);\n    lively.setClientPosition(this,  topLeft);\n    lively.setExtent(this, bottomRight.subPt(topLeft));\n  \n    this.nodes = Array.from(this.context.childNodes)\n      .filter( ea =>  !ea.isMetaNode)\n      .filter( ea => {\n        if (!ea.getBoundingClientRect || ea.isMetaNode) return false;\n        var r = ea.getBoundingClientRect();\n        var eaRect = rect(r.left, r.top,  r.width, r.height);\n        return this.selectionBounds.containsRect(eaRect);\n      });\n  }\n\n  onPointerUp(evt) {\n    lively.removeEventListener(\"Selection\", document.documentElement, \"pointermove\")\n    lively.removeEventListener(\"Selection\", document.documentElement, \"pointerup\")\n\n    document.documentElement.style.touchAction = \"\"    \n    document.documentElement.releasePointerCapture(evt.pointerId)\n    \n    if (this.nodes.length > 0) {\n      var minP=this.selectionBounds.bottomRight(); \n      var maxP=this.selectionBounds.topLeft();\n        \n      this.nodes.forEach( ea => {\n        var r = ea.getBoundingClientRect();\n        var eaRect = rect(r.left, r.top,  r.width, r.height);\n        minP = eaRect.topLeft().minPt(minP);\n        maxP = eaRect.bottomRight().maxPt(maxP);\n      });\n      lively.setClientPosition(this, minP);\n      lively.setExtent(this, maxP.subPt(minP));\n    \n      window.that=this;\n      setTimeout(()=> {\n        HaloService.showHalos(this);\n      },0 )\n    } else {\n      this.remove();\n    }\n    // console.log(\"drag end\")\n\n  }\n\n\n  haloRemove() {\n    this.nodes.forEach(ea => {\n      console.log(\"selection.remove \" + ea);\n      ea.remove();\n    });\n    this.remove();\n  }\n\n  haloCopyObject(haloItem) {\n    \n    // this.nodes = this.nodes.map(ea => {\n    //   var copy = haloItem.cloneObject(ea);\n    //   ea.parentNode.appendChild(copy); \n    //   return copy;\n    // }).filter( ea => ea);\n    \n    var html = lively.clipboard.nodesToHTML(this.nodes)\n    lively.clipboard.lastClickPos = lively.getClientPosition(this) // used in pasted as offset\n    var result = lively.clipboard.pasteHTMLDataInto(html, this.parentElement, true)\n    \n    this.nodes = result\n    return this;\n  }\n \n \n  haloDragStart(fromPos) {\n    this.startPositions = new Map();\n    this.nodes.concat([this]).forEach(ea => {\n      this.startPositions.set(ea, lively.getPosition(ea));\n    })\n }\n \n  haloDragTo(toPos, fromPos) {\n    var delta = toPos.subPt(fromPos);\n    this.nodes.concat([this]).forEach(ea => {\n      nodes.setPosition(ea, this.startPositions.get(ea).addPt(delta));\n    });\n    window.that = this\n    HaloService.showHalos(this);\n  }\n \n  // cleanup:\n  haloGrabStart(evt, haloItem, startPos) {\n    if (haloItem.isCopyItem) {\n      console.log(\"copy items...\");\n      this.haloCopyObject(haloItem);\n    }\n    this.startEventPos = startPos;\n\n    this.startPositions.set(this, lively.getPosition(this)); // #BUG this is to late, because drag is detacted later...\n    this.nodes.forEach( ea => {\n      ea.classList.add(\"lively4-grabbed\")\n      var pos = lively.getPosition(ea);\n      this.startPositions.set(ea, pos);\n    });\n  }\n  \n  haloGrabMove(evt, grabHaloItem) {\n    \n    this.haloDragTo(events.globalPosition(evt), this.startEventPos);\n  }\n  \n  haloGrabStop(evt, grabHaloItem) {\n   var positions = new Map();\n    // first add temorarily to selection ... so that we do not drop into each other\n    this.nodes.forEach( ea => {\n      ea.classList.remove(\"lively4-grabbed\")\n      positions.set(ea, nodes.globalPosition(ea));\n      this.appendChild(ea);\n    });\n\n    var dropTarget = grabHaloItem.droptargetAtEvent(this, evt);\n\n    // then drop into the real target\n    dropTarget = dropTarget || document.body; // we have to drop somewhere\n    var i=0;\n    var offset = nodes.globalPosition(dropTarget);\n    this.nodes.forEach( ea => {\n      dropTarget.appendChild(ea);\n      ea.style.position = \"absolute\";\n      \n      var pos = positions.get(ea);\n      if (dropTarget.localizePosition) {s\n        pos = dropTarget.localizePosition(pos);\n      } else {\n        pos = pos.subPt(offset);\n      }\n      nodes.setPosition(ea, pos);\n    });\n    HaloService.showHalos(this);\n  }\n  \n  haloResizeStart(evt, haloItem) {\n    this.eventOffset = events.globalPosition(evt);\n    this.nodes.concat([this]).forEach( ea => {\n       this.startPositions.set(ea, nodes.globalPosition(ea));\n       this.originalExtents.set(ea, nodes.getExtent(ea));\n       this.originalOffset.set(ea, nodes.globalPosition(this).subPt(\n        nodes.globalPosition(ea.parentNode)));\n    });\n  }\n  \n  haloResizeMove(evt, haloItem) {\n    var delta = events.globalPosition(evt).subPt(this.eventOffset)\n    var newExtent = this.originalExtents.get(this).addPt(delta)\n  \n    var oldExtent = this.originalExtents.get(this)\n    var scale = newExtent.scaleBy(1/ oldExtent.x, 1/oldExtent.y)\n    \n    //nodes.setExtent(ea, this.originalExtents.get(ea).scaleByPt(scale))\n    nodes.setExtent(this, newExtent)\n    \n    this.nodes.forEach( ea => {\n      var oldRelativePos = this.startPositions.get(ea).subPt(this.startPositions.get(this)) \n      \n      lively.showPoint(this.originalOffset.get(ea))  \n      \n      nodes.setPosition(ea, this.originalOffset.get(ea).addPt(oldRelativePos.scaleByPt(scale)))\n      nodes.setExtent(ea, this.originalExtents.get(ea).scaleByPt(scale))               \n    });\n  }\n  \n  haloResizeStop(evt, haloItem) {\n    \n  }\n  \n  livelyInspect(contentNode, inspector) {\n    var selection = <div class=\"element\"><i>selection</i></div>\n    contentNode.appendChild(selection)\n    this.nodes.forEach(ea => {\n      selection.appendChild(inspector.display(ea, false, null, this));\n    })\n  }\n  \n  \n}  \n\nSelection.load()\n\n"],"mappings":"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"}