Blame view

天文台pc/tianwentai-ui/node_modules/framer-motion/dist/es/events/use-dom-event.mjs 1.05 KB
bc518174   王天杨   提交两个项目文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
  "use client";
  import { useEffect } from 'react';
  import { addDomEvent } from 'motion-dom';
  
  /**
   * Attaches an event listener directly to the provided DOM element.
   *
   * Bypassing React's event system can be desirable, for instance when attaching non-passive
   * event handlers.
   *
   * ```jsx
   * const ref = useRef(null)
   *
   * useDomEvent(ref, 'wheel', onWheel, { passive: false })
   *
   * return <div ref={ref} />
   * ```
   *
   * @param ref - React.RefObject that's been provided to the element you want to bind the listener to.
   * @param eventName - Name of the event you want listen for.
   * @param handler - Function to fire when receiving the event.
   * @param options - Options to pass to `Event.addEventListener`.
   *
   * @public
   */
  function useDomEvent(ref, eventName, handler, options) {
      useEffect(() => {
          const element = ref.current;
          if (handler && element) {
              return addDomEvent(element, eventName, handler, options);
          }
      }, [ref, eventName, handler, options]);
  }
  
  export { useDomEvent };
  //# sourceMappingURL=use-dom-event.mjs.map