@grafana/ui
Version:
Grafana Components Library
1 lines • 2.88 kB
Source Map (JSON)
{"version":3,"file":"usePointerDistance.mjs","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"],"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,eAAM,MAAA,CAAc,EAAE,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAA;AAElD,EAAA,MAAM,GAAA,GAAM,WAAA,CAAoC,CAAC,GAAA,KAAQ;AACvD,IAAA,OAAA,CAAQ,OAAA,GAAU,SAAS,GAAG,CAAA;AAAA,EAChC,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,KAAA,GAAQ,WAAA;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,OAAO,OAAA,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;;;;"}