{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-bp2019/src/components/halo/lively-halo-resize-item.js"],"names":["HaloItem","nodes","events","pt","Preferences","Snapping","Grid","HaloResizeItem","initialize","lively","addEventListener","e","onMouseDown","evt","start","document","body","parentElement","move","onPointerUp","removeEventListener","stop","preventDefault","target","window","that","snapping","halo","console","error","info","showInfoBox","update","haloResizeStart","initialExtent","getExtent","eventOffset","globalPosition","removeRestrictions","haloResizeMove","delta","clientX","clientY","subPt","newextent","addPt","rounded","setExtent","optSnapPosition","altKey","style","position","snapBounds","innerHTML","x","y","HaloService","showHalos","haloResizeStop","node","minWidth","minHeight","maxWidth","maxHeight"],"mappings":"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","file":"lively-halo-resize-item.js","sourcesContent":["import HaloItem from 'src/components/halo/lively-halo-item.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 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 HaloResizeItem extends HaloItem {\n  initialize() {\n    lively.addEventListener(\"Morphic\", this, 'mousedown',  e => this.onMouseDown(e));\n  }\n\n  onMouseDown(evt) {\n    this.start(evt);\n\n    // attach mousemove handler to body only after mousedown occured\n    lively.addEventListener(\"HaloResize\", document.body.parentElement, 'pointermove', (evt) => {\n      this.move(evt);\n    });\n    // and capture the following mouse up anywere \n    lively.addEventListener(\"HaloResize\", document.body.parentElement, 'pointerup',  e => this.onPointerUp(e));\n  }\n\n  onPointerUp(evt) {\n    lively.removeEventListener(\"HaloResize\", document.body.parentElement, 'pointerup');\n    lively.removeEventListener(\"HaloResize\", document.body.parentElement, 'pointermove');\n\n    this.stop(evt);\n  }\n\n  start(evt) {\n    evt.preventDefault();\n    this.target = window.that\n    this.snapping = new Snapping(this.target) \n    \n    if (!this.halo) {\n      console.error(\"this.halo dont defined....\")\n      return\n    }\n    \n    \n    if(this.halo.info)\n      this.halo.info.stop();\n    this.halo.info = lively.showInfoBox(this.target)\n    this.halo.info.update()\n\n    if (this.target.haloResizeStart) {\n      this.target.haloResizeStart(evt, this)\n    } else {\n      this.initialExtent  = lively.getExtent(this.target)\n      this.eventOffset  = events.globalPosition(evt)\n      this.removeRestrictions(this.target)\n    }\n  }\n\n  move(evt) {\n    \n    evt.preventDefault();\n    if (this.target.haloResizeMove) {\n      this.target.haloResizeMove(evt, this)\n    } else {\n      var delta = pt(evt.clientX, evt.clientY).subPt(this.eventOffset)\n      // console.log(\"this.initialExtent \" + this.initialExtent)\n\n      var newextent =  this.initialExtent.addPt(delta);\n      newextent = newextent.rounded()\n\n      lively.setExtent(this.target, Grid.optSnapPosition(newextent, evt)) \n      if(!evt.altKey && that.style.position == \"absolute\") {\n        this.snapping.snapBounds(\"bottomRight\")\n      }\n      newextent = lively.getExtent(this.target)\n      this.halo.info.innerHTML = \"resize w=\" + newextent.x + \" h=\" + newextent.y \n\n      HaloService.showHalos(window.that);\n    }\n  }\n\n  stop(evt) {\n    this.halo.info.stop()\n    evt.preventDefault();\n    if (this.target.haloResizeStop) {\n      this.target.haloResizeStop(evt, this)\n    } else {\n      // do nothing... anymore\n    }\n  }\n\n  removeRestrictions(node) {\n    node.style.minWidth = null;\n    node.style.minHeight = null;\n    node.style.maxWidth = null;\n    node.style.maxHeight = null;\n  }\n    \n}"]}