{"version":3,"sources":["https://lively-kernel.org/lively4/swd21-event-sourcing/src/client/morphic/event-helpers.js"],"names":["nodes","pt","noticableDistanceTo","getTargetNode","distanceTo","elementsUnder","globalPosition","offset","e","clientX","clientY","pos","elements","Array","from","document","elementsFromPoint","result","filter","ea","isMetaNode","reverse","shadowRoot","unshift","find","tagName","match","yDist","Math","abs","y","xDist","x","sqrt","target","body"],"mappings":";;;;;;AAAYA,W;;AACJC,Q,eAAAA,E;;;;;;;;;;;yCA6CQC,oD;;;;;;;;;;;;;;mCALAC,8C;;;;;;;;;;;;;;gCANAC,2C;;;;;;;;;;;;;;mCApBAC,8C;;;;;;;;;;;;;;oCAJAC,+C;;;;;;;;;;;;;;AAXJN,gD;;;;;;;;;;;;;AACJC,6C;;;;;;;;;AAER;;AAEA;;;;AAIA,UAAIM,SAAS,EAAb;;;;;;;;AAAIA,iD;;;;;;;AAEG,eAASD,cAAT,CAAwBE,CAAxB,EAA2B;AAChC,eAAOP,GAAGO,EAAEC,OAAL,EAAcD,EAAEE,OAAhB,CAAP;AACD;;;;AAEM,eAASL,aAAT,CAAuBG,CAAvB,EAA0B;;AAE/B,YAAIG,MAAML,eAAeE,CAAf,CAAV;AACA,YAAII,WAAWC,MAAMC,IAAN,CAAWC,SAASC,iBAAT,CAA2BR,EAAEC,OAA7B,EAAsCD,EAAEE,OAAxC,CAAX,CAAf;;AAEA,YAAIO,SAASJ,MAAMC,IAAN,CAAWF,QAAX,EAAqBM,MAArB,CAA4BC,MAAM,CAACA,GAAGC;AACnD;AADa,SAAb,CAEA,KAAI,IAAID,EAAR,IAAcP,SAASS,OAAT,EAAd,EAAkC;AAChC,cAAIF,GAAGG,UAAH,IAAiBH,GAAGG,UAAH,CAAcN,iBAAnC,EAAsD;AACpDC,mBAAOM,OAAP,CAAe,GAAGV,MAAMC,IAAN,CAAWK,GAAGG,UAAH,CAAcN,iBAAd,CAAgCR,EAAEC,OAAlC,EAA2CD,EAAEE,OAA7C,CAAX,EAAkEQ,MAAlE,CAAyEC,MAAM,CAACA,GAAGC,UAAnF,CAAlB;AAED;AACF;AACD,YAAIH,OAAOO,IAAP,CAAYL,MAAMA,GAAGM,OAAH,IAAcN,GAAGM,OAAH,CAAWC,KAAX,CAAiB,MAAjB,CAAhC,CAAJ,EAA+D;AAC3D;AACH;;AAED,eAAOT,MAAP;AACD;;;;AAEM,eAASb,UAAT,CAAoBI,CAApB,EAAuBG,GAAvB,EAA4B;AACjC,YAAIgB,QAAQC,KAAKC,GAAL,CAASlB,IAAImB,CAAJ,GAAQxB,eAAeE,CAAf,EAAkBsB,CAAnC,CAAZ;AACA,YAAIC,QAAQH,KAAKC,GAAL,CAASlB,IAAIqB,CAAJ,GAAQ1B,eAAeE,CAAf,EAAkBwB,CAAnC,CAAZ;AACA,eAAOJ,KAAKK,IAAL,CAAWF,QAAQA,KAAT,GAAmBJ,QAAQA,KAArC,CAAP;AACD;;;;AAEM,eAASxB,aAAT,CAAuBK,CAAvB,EAA0B;AAC/B,YAAI0B,SAAS7B,cAAcG,CAAd,EAAiB,CAAjB,CAAb;AACA,eAAOO,SAASoB,IAAT,KAAkBD,MAAlB,GAA2B,IAA3B,GAAkCA,MAAzC;AACD;;;;AAEM,eAAShC,mBAAT,CAA6BM,CAA7B,EAAgCG,GAAhC,EAAqC;AAC1C,eAAOP,WAAWI,CAAX,EAAcG,GAAd,IAAqBJ,MAA5B;AACD","file":"event-helpers.js","sourcesContent":["import * as nodes from './node-helpers.js';\nimport {pt} from '../graphics.js';\n\n// todo: export class wrappers\n\n/**\nEvent(e).globalPosition();\n*/\n\nvar offset = 30;\n\nexport function globalPosition(e) {\n  return pt(e.clientX, e.clientY)\n}\n\nexport function elementsUnder(e) {\n  \n  var pos = globalPosition(e);\n  var elements = Array.from(document.elementsFromPoint(e.clientX, e.clientY));\n  \n  var result = Array.from(elements).filter(ea => !ea.isMetaNode)\n  // go deep one level #ContinueHere\n  for(var ea of elements.reverse()) {\n    if (ea.shadowRoot && ea.shadowRoot.elementsFromPoint) {\n      result.unshift(...Array.from(ea.shadowRoot.elementsFromPoint(e.clientX, e.clientY)).filter(ea => !ea.isMetaNode))\n      \n    }\n  }\n  if (result.find(ea => ea.tagName && ea.tagName.match(\"HALO\"))) {\n      debugger\n  }\n                  \n  return result\n}\n\nexport function distanceTo(e, pos) {\n  var yDist = Math.abs(pos.y - globalPosition(e).y);\n  var xDist = Math.abs(pos.x - globalPosition(e).x);\n  return Math.sqrt((xDist * xDist) + (yDist * yDist))\n}\n\nexport function getTargetNode(e) {\n  var target = elementsUnder(e)[0];\n  return document.body === target ? null : target;\n}\n\nexport function noticableDistanceTo(e, pos) {\n  return distanceTo(e, pos) > offset;\n}\n"]}