@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":";;AAegB,SAAA,qBAAA,CAAsB,WAAW,EAAqB,EAAA;AACpE,EAAA,IAAI,OAAU,GAAA,EAAE,CAAG,EAAA,CAAA,EAAG,GAAG,CAAE,EAAA;AAE3B,EAAM,MAAA,GAAA,GAA0B,CAAC,GAAQ,KAAA;AACvC,IAAA,OAAA,GAAU,SAAS,GAAG,CAAA;AAAA,GACxB;AAEA,EAAM,MAAA,KAAA,GAA8B,CAAC,GAAA,EAAK,gBAAmB,GAAA,QAAA,KAC3D,cAAc,OAAS,EAAA,QAAA,CAAS,GAAG,CAAA,EAAG,gBAAgB,CAAA;AAExD,EAAO,OAAA,EAAE,KAAK,KAAM,EAAA;AACtB;AAEgB,SAAA,kBAAA,CAAmB,WAAW,EAAqB,EAAA;AACjE,EAAM,MAAA,OAAA,GAAUA,eAAM,MAAc,CAAA,EAAE,GAAG,CAAG,EAAA,CAAA,EAAG,GAAG,CAAA;AAElD,EAAM,MAAA,GAAA,GAAM,WAAoC,CAAA,CAAC,GAAQ,KAAA;AACvD,IAAQ,OAAA,CAAA,OAAA,GAAU,SAAS,GAAG,CAAA;AAAA,GAChC,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,KAAQ,GAAA,WAAA;AAAA,IACZ,CAAC,GAAK,EAAA,gBAAA,GAAmB,QAAa,KAAA,aAAA,CAAc,QAAQ,OAAS,EAAA,QAAA,CAAS,GAAG,CAAA,EAAG,gBAAgB,CAAA;AAAA,IACpG,CAAC,QAAQ;AAAA,GACX;AAEA,EAAO,OAAA,OAAA,CAAQ,OAAO,EAAE,GAAA,EAAK,OAAU,CAAA,EAAA,CAAC,GAAK,EAAA,KAAK,CAAC,CAAA;AACrD;AAEA,SAAS,SAAS,GAAiC,EAAA;AACjD,EAAA,OAAO,EAAE,CAAG,EAAA,GAAA,CAAI,OAAS,EAAA,CAAA,EAAG,IAAI,OAAQ,EAAA;AAC1C;AAEA,SAAS,aAAA,CAAc,MAAe,EAAA,MAAA,EAAe,QAA2B,EAAA;AAC9E,EAAO,OAAA,IAAA,CAAK,KAAM,CAAA,MAAA,CAAO,CAAI,GAAA,MAAA,CAAO,GAAG,MAAO,CAAA,CAAA,GAAI,MAAO,CAAA,CAAC,CAAI,GAAA,QAAA;AAChE;;;;"}