{"version":3,"sources":["../src/use-pan-event.ts"],"sourcesContent":["import { addPointerEvent } from \"@chakra-ui/event-utils\"\nimport { useLatestRef } from \"@chakra-ui/react-use-latest-ref\"\nimport { useEffect, useRef } from \"react\"\nimport { PanEvent } from \"./pan-event\"\nimport { AnyPointerEvent, PanEventHandler, PanEventHandlers } from \"./types\"\n\nexport interface UsePanEventProps {\n  onPan?: PanEventHandler\n  onPanStart?: PanEventHandler\n  onPanEnd?: PanEventHandler\n  onPanSessionStart?: PanEventHandler\n  onPanSessionEnd?: PanEventHandler\n  threshold?: number\n}\n\nexport function usePanEvent(\n  ref: React.RefObject<HTMLElement>,\n  options: UsePanEventProps,\n) {\n  const {\n    onPan,\n    onPanStart,\n    onPanEnd,\n    onPanSessionStart,\n    onPanSessionEnd,\n    threshold,\n  } = options\n\n  const hasPanEvents = Boolean(\n    onPan || onPanStart || onPanEnd || onPanSessionStart || onPanSessionEnd,\n  )\n\n  const panSession = useRef<PanEvent | null>(null)\n\n  const handlersRef = useLatestRef<Partial<PanEventHandlers>>({\n    onSessionStart: onPanSessionStart,\n    onSessionEnd: onPanSessionEnd,\n    onStart: onPanStart,\n    onMove: onPan,\n    onEnd(event, info) {\n      panSession.current = null\n      onPanEnd?.(event, info)\n    },\n  })\n\n  useEffect(() => {\n    panSession.current?.updateHandlers(handlersRef.current)\n  })\n\n  useEffect(() => {\n    const node = ref.current\n\n    if (!node || !hasPanEvents) return\n\n    function onPointerDown(event: AnyPointerEvent) {\n      panSession.current = new PanEvent(event, handlersRef.current, threshold)\n    }\n\n    return addPointerEvent(node, \"pointerdown\", onPointerDown)\n  }, [ref, hasPanEvents, handlersRef, threshold])\n\n  useEffect(() => {\n    return () => {\n      panSession.current?.end()\n      panSession.current = null\n    }\n  }, [])\n}\n"],"mappings":";;;;;;AAAA,SAAS,uBAAuB;AAChC,SAAS,oBAAoB;AAC7B,SAAS,WAAW,cAAc;AAa3B,SAAS,YACd,KACA,SACA;AACA,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,QAAM,eAAe;AAAA,IACnB,SAAS,cAAc,YAAY,qBAAqB;AAAA,EAC1D;AAEA,QAAM,aAAa,OAAwB,IAAI;AAE/C,QAAM,cAAc,aAAwC;AAAA,IAC1D,gBAAgB;AAAA,IAChB,cAAc;AAAA,IACd,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,MAAM,OAAO,MAAM;AACjB,iBAAW,UAAU;AACrB,2CAAW,OAAO;AAAA,IACpB;AAAA,EACF,CAAC;AAED,YAAU,MAAM;AA7ClB;AA8CI,qBAAW,YAAX,mBAAoB,eAAe,YAAY;AAAA,EACjD,CAAC;AAED,YAAU,MAAM;AACd,UAAM,OAAO,IAAI;AAEjB,QAAI,CAAC,QAAQ,CAAC;AAAc;AAE5B,aAAS,cAAc,OAAwB;AAC7C,iBAAW,UAAU,IAAI,SAAS,OAAO,YAAY,SAAS,SAAS;AAAA,IACzE;AAEA,WAAO,gBAAgB,MAAM,eAAe,aAAa;AAAA,EAC3D,GAAG,CAAC,KAAK,cAAc,aAAa,SAAS,CAAC;AAE9C,YAAU,MAAM;AACd,WAAO,MAAM;AA9DjB;AA+DM,uBAAW,YAAX,mBAAoB;AACpB,iBAAW,UAAU;AAAA,IACvB;AAAA,EACF,GAAG,CAAC,CAAC;AACP;","names":[]}