{"version":3,"file":"usePointerDistance.cjs","sources":["../../../src/utils/usePointerDistance.ts"],"sourcesContent":["import React, { useCallback, useMemo } from 'react';\n\ninterface Point {\n  x: number;\n  y: number;\n}\ntype PointerOrMouseEvent = React.PointerEvent | React.MouseEvent | PointerEvent | MouseEvent;\ntype PointerDistanceSet = (evt: PointerOrMouseEvent) => void;\ntype PointerDistanceCheck = (evt: PointerOrMouseEvent, distance?: number) => boolean;\n\ninterface PointerDistance {\n  set: PointerDistanceSet;\n  check: PointerDistanceCheck;\n}\n\nexport function createPointerDistance(distance = 10): PointerDistance {\n  let initial = { x: 0, y: 0 };\n\n  const set: PointerDistanceSet = (evt) => {\n    initial = getPoint(evt);\n  };\n\n  const check: PointerDistanceCheck = (evt, overrideDistance = distance) =>\n    checkDistance(initial, getPoint(evt), overrideDistance);\n\n  return { set, check };\n}\n\nexport function usePointerDistance(distance = 10): PointerDistance {\n  const initial = React.useRef<Point>({ x: 0, y: 0 });\n\n  const set = useCallback<PointerDistance['set']>((evt) => {\n    initial.current = getPoint(evt);\n  }, []);\n\n  const check = useCallback<PointerDistance['check']>(\n    (evt, overrideDistance = distance) => checkDistance(initial.current, getPoint(evt), overrideDistance),\n    [distance]\n  );\n\n  return useMemo(() => ({ set, check }), [set, check]);\n}\n\nfunction getPoint(evt: PointerOrMouseEvent): Point {\n  return { x: evt.clientX, y: evt.clientY };\n}\n\nfunction checkDistance(point1: Point, point2: Point, distance: number): boolean {\n  return Math.hypot(point1.x - point2.x, point1.y - point2.y) > distance;\n}\n"],"names":["React","useCallback","useMemo"],"mappings":";;;;;;;;;;;AAeO,SAAS,qBAAA,CAAsB,WAAW,EAAA,EAAqB;AACpE,EAAA,IAAI,OAAA,GAAU,EAAE,CAAA,EAAG,CAAA,EAAG,GAAG,CAAA,EAAE;AAE3B,EAAA,MAAM,GAAA,GAA0B,CAAC,GAAA,KAAQ;AACvC,IAAA,OAAA,GAAU,SAAS,GAAG,CAAA;AAAA,EACxB,CAAA;AAEA,EAAA,MAAM,KAAA,GAA8B,CAAC,GAAA,EAAK,gBAAA,GAAmB,QAAA,KAC3D,cAAc,OAAA,EAAS,QAAA,CAAS,GAAG,CAAA,EAAG,gBAAgB,CAAA;AAExD,EAAA,OAAO,EAAE,KAAK,KAAA,EAAM;AACtB;AAEO,SAAS,kBAAA,CAAmB,WAAW,EAAA,EAAqB;AACjE,EAAA,MAAM,OAAA,GAAUA,uBAAM,MAAA,CAAc,EAAE,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAA;AAElD,EAAA,MAAM,GAAA,GAAMC,iBAAA,CAAoC,CAAC,GAAA,KAAQ;AACvD,IAAA,OAAA,CAAQ,OAAA,GAAU,SAAS,GAAG,CAAA;AAAA,EAChC,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,KAAA,GAAQA,iBAAA;AAAA,IACZ,CAAC,GAAA,EAAK,gBAAA,GAAmB,QAAA,KAAa,aAAA,CAAc,QAAQ,OAAA,EAAS,QAAA,CAAS,GAAG,CAAA,EAAG,gBAAgB,CAAA;AAAA,IACpG,CAAC,QAAQ;AAAA,GACX;AAEA,EAAA,OAAOC,aAAA,CAAQ,OAAO,EAAE,GAAA,EAAK,OAAM,CAAA,EAAI,CAAC,GAAA,EAAK,KAAK,CAAC,CAAA;AACrD;AAEA,SAAS,SAAS,GAAA,EAAiC;AACjD,EAAA,OAAO,EAAE,CAAA,EAAG,GAAA,CAAI,OAAA,EAAS,CAAA,EAAG,IAAI,OAAA,EAAQ;AAC1C;AAEA,SAAS,aAAA,CAAc,MAAA,EAAe,MAAA,EAAe,QAAA,EAA2B;AAC9E,EAAA,OAAO,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,CAAA,GAAI,MAAA,CAAO,GAAG,MAAA,CAAO,CAAA,GAAI,MAAA,CAAO,CAAC,CAAA,GAAI,QAAA;AAChE;;;;;"}