{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-drawio/src/client/morphic/event-helpers.js"],"names":["globalPosition","e","clientX","clientY","elementsUnder","pos","elements","Array","from","document","elementsFromPoint","result","filter","ea","isMetaNode","reverse","shadowRoot","unshift","find","tagName","match","distanceTo","yDist","Math","abs","y","xDist","x","sqrt","getTargetNode","target","body","noticableDistanceTo","offset","nodes","pt"],"mappings":";;;;AAWO,WAASA,cAAT,CAAwBC,CAAxB,EAA2B;AAChC,WAAO,mDAAGA,EAAEC,OAAL,EAAcD,EAAEE,OAAhB,CAAP;AACD;;4BAFeH,c;;AAIT,WAASI,aAAT,CAAuBH,CAAvB,EAA0B;;AAE/B,QAAII,MAAM,+DAAeJ,CAAf,CAAV;AACA,QAAIK,WAAWC,MAAMC,IAAN,CAAWC,SAASC,iBAAT,CAA2BT,EAAEC,OAA7B,EAAsCD,EAAEE,OAAxC,CAAX,CAAf;;AAEA,QAAIQ,SAASJ,MAAMC,IAAN,CAAWF,QAAX,EAAqBM,MAArB,CAA4BC,MAAM,CAACA,GAAGC;AACnD;AADa,KAAb,CAEA,KAAI,IAAID,EAAR,IAAcP,SAASS,OAAT,EAAd,EAAkC;AAChC,UAAIF,GAAGG,UAAH,IAAiBH,GAAGG,UAAH,CAAcN,iBAAnC,EAAsD;AACpDC,eAAOM,OAAP,CAAe,GAAGV,MAAMC,IAAN,CAAWK,GAAGG,UAAH,CAAcN,iBAAd,CAAgCT,EAAEC,OAAlC,EAA2CD,EAAEE,OAA7C,CAAX,EAAkES,MAAlE,CAAyEC,MAAM,CAACA,GAAGC,UAAnF,CAAlB;AAED;AACF;AACD,QAAIH,OAAOO,IAAP,CAAYL,MAAMA,GAAGM,OAAH,IAAcN,GAAGM,OAAH,CAAWC,KAAX,CAAiB,MAAjB,CAAhC,CAAJ,EAA+D;AAC3D;AACH;;AAED,WAAOT,MAAP;AACD;;2BAlBeP,a;;AAoBT,WAASiB,UAAT,CAAoBpB,CAApB,EAAuBI,GAAvB,EAA4B;AACjC,QAAIiB,QAAQC,KAAKC,GAAL,CAASnB,IAAIoB,CAAJ,GAAQ,+DAAexB,CAAf,EAAkBwB,CAAnC,CAAZ;AACA,QAAIC,QAAQH,KAAKC,GAAL,CAASnB,IAAIsB,CAAJ,GAAQ,+DAAe1B,CAAf,EAAkB0B,CAAnC,CAAZ;AACA,WAAOJ,KAAKK,IAAL,CAAWF,QAAQA,KAAT,GAAmBJ,QAAQA,KAArC,CAAP;AACD;;wBAJeD,U;;AAMT,WAASQ,aAAT,CAAuB5B,CAAvB,EAA0B;AAC/B,QAAI6B,SAAS,8DAAc7B,CAAd,EAAiB,CAAjB,CAAb;AACA,WAAOQ,SAASsB,IAAT,KAAkBD,MAAlB,GAA2B,IAA3B,GAAkCA,MAAzC;AACD;;2BAHeD,a;;AAKT,WAASG,mBAAT,CAA6B/B,CAA7B,EAAgCI,GAAhC,EAAqC;AAC1C,WAAO,2DAAWJ,CAAX,EAAcI,GAAd,oDAAqB4B,MAA5B;AACD;;iCAFeD,mB;;;;AA9CJE,W;;AACJC,Q,eAAAA,E;;;;;;;;;;;AAQJF,Y,GAAS,E","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"]}