@aiszlab/relax 2.0.8-beta.2 → 2.0.8-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,7 +6,7 @@ var contains = function contains(root) {
6
6
  return false;
7
7
  }
8
8
  // Use native if support
9
- if (!!root.contains) {
9
+ if (root.contains) {
10
10
  return root.contains(node);
11
11
  }
12
12
  // `document.contains` not support with IE11
@@ -4,7 +4,7 @@ var contains = function contains(root) {
4
4
  return false;
5
5
  }
6
6
  // Use native if support
7
- if (!!root.contains) {
7
+ if (root.contains) {
8
8
  return root.contains(node);
9
9
  }
10
10
  // `document.contains` not support with IE11
@@ -1,34 +1,45 @@
1
1
  'use strict';
2
2
 
3
+ var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
3
4
  var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
5
+ var react = require('react');
4
6
  var useBoolean = require('./use-boolean.cjs');
5
- var chain = require('../utils/chain.cjs');
6
7
  var useEvent = require('./use-event.cjs');
7
- var useDefault = require('./use-default.cjs');
8
+ var contains = require('../dom/contains.cjs');
8
9
 
9
10
  var useHover = function useHover() {
10
11
  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
11
12
  onEnter = _ref.onEnter,
12
- onLeave = _ref.onLeave;
13
+ onLeave = _ref.onLeave,
14
+ ref = _ref.ref;
13
15
  var _useBoolean = useBoolean.useBoolean(false),
14
16
  _useBoolean2 = _slicedToArray(_useBoolean, 2),
15
17
  isHovered = _useBoolean2[0],
16
18
  _useBoolean2$ = _useBoolean2[1],
17
19
  turnOn = _useBoolean2$.turnOn,
18
20
  turnOff = _useBoolean2$.turnOff;
19
- var onPointerEnter = useEvent.useEvent(function (event) {
20
- chain.chain(onEnter, turnOn)(event);
21
+ var enter = useEvent.useEvent(function (event) {
22
+ onEnter === null || onEnter === void 0 || onEnter(event);
23
+ turnOn();
21
24
  });
22
- var onPointerLeave = useEvent.useEvent(function (event) {
23
- chain.chain(onLeave, turnOff)(event);
25
+ var leave = useEvent.useEvent(function (event) {
26
+ onLeave === null || onLeave === void 0 || onLeave(event);
27
+ turnOff();
24
28
  });
25
- var hoverProps = useDefault.useDefault(function () {
26
- return {
27
- onPointerEnter: onPointerEnter,
28
- onPointerLeave: onPointerLeave
29
- };
30
- });
31
- return [isHovered, hoverProps];
29
+ var moveOut = react.useCallback(function (event) {
30
+ if (contains.contains(ref === null || ref === void 0 ? void 0 : ref.current, event.relatedTarget)) {
31
+ return;
32
+ }
33
+ leave(event);
34
+ }, []);
35
+ return [isHovered, _objectSpread({
36
+ onMouseEnter: enter,
37
+ onPointerEnter: enter,
38
+ onMouseLeave: leave,
39
+ onPointerLeave: leave
40
+ }, !!ref && {
41
+ onMouseOut: moveOut
42
+ })];
32
43
  };
33
44
 
34
45
  exports.useHover = useHover;
@@ -1,14 +1,18 @@
1
- import { type PointerEventHandler } from "react";
1
+ import { type PointerEventHandler, type MouseEventHandler, type RefObject } from "react";
2
2
  type UsingHover<T> = {
3
- onEnter?: PointerEventHandler<T>;
4
- onLeave?: PointerEventHandler<T>;
3
+ onEnter?: MouseEventHandler<T>;
4
+ onLeave?: MouseEventHandler<T>;
5
+ ref?: RefObject<T>;
5
6
  };
6
7
  type UsedHover<T> = [
7
8
  boolean,
8
9
  {
9
10
  onPointerEnter: PointerEventHandler<T>;
10
11
  onPointerLeave: PointerEventHandler<T>;
12
+ onMouseEnter: MouseEventHandler<T>;
13
+ onMouseLeave: MouseEventHandler<T>;
14
+ onMouseOut?: MouseEventHandler<T>;
11
15
  }
12
16
  ];
13
- export declare const useHover: <T extends Element = Element>({ onEnter, onLeave, }?: UsingHover<T>) => UsedHover<T>;
17
+ export declare const useHover: <T extends Element = Element>({ onEnter, onLeave, ref, }?: UsingHover<T>) => UsedHover<T>;
14
18
  export {};
@@ -1,32 +1,43 @@
1
+ import _objectSpread from '@babel/runtime/helpers/objectSpread2';
1
2
  import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
3
+ import { useCallback } from 'react';
2
4
  import { useBoolean } from './use-boolean.mjs';
3
- import { chain } from '../utils/chain.mjs';
4
5
  import { useEvent } from './use-event.mjs';
5
- import { useDefault } from './use-default.mjs';
6
+ import { contains } from '../dom/contains.mjs';
6
7
 
7
8
  var useHover = function useHover() {
8
9
  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
9
10
  onEnter = _ref.onEnter,
10
- onLeave = _ref.onLeave;
11
+ onLeave = _ref.onLeave,
12
+ ref = _ref.ref;
11
13
  var _useBoolean = useBoolean(false),
12
14
  _useBoolean2 = _slicedToArray(_useBoolean, 2),
13
15
  isHovered = _useBoolean2[0],
14
16
  _useBoolean2$ = _useBoolean2[1],
15
17
  turnOn = _useBoolean2$.turnOn,
16
18
  turnOff = _useBoolean2$.turnOff;
17
- var onPointerEnter = useEvent(function (event) {
18
- chain(onEnter, turnOn)(event);
19
+ var enter = useEvent(function (event) {
20
+ onEnter === null || onEnter === void 0 || onEnter(event);
21
+ turnOn();
19
22
  });
20
- var onPointerLeave = useEvent(function (event) {
21
- chain(onLeave, turnOff)(event);
23
+ var leave = useEvent(function (event) {
24
+ onLeave === null || onLeave === void 0 || onLeave(event);
25
+ turnOff();
22
26
  });
23
- var hoverProps = useDefault(function () {
24
- return {
25
- onPointerEnter: onPointerEnter,
26
- onPointerLeave: onPointerLeave
27
- };
28
- });
29
- return [isHovered, hoverProps];
27
+ var moveOut = useCallback(function (event) {
28
+ if (contains(ref === null || ref === void 0 ? void 0 : ref.current, event.relatedTarget)) {
29
+ return;
30
+ }
31
+ leave(event);
32
+ }, []);
33
+ return [isHovered, _objectSpread({
34
+ onMouseEnter: enter,
35
+ onPointerEnter: enter,
36
+ onMouseLeave: leave,
37
+ onPointerLeave: leave
38
+ }, !!ref && {
39
+ onMouseOut: moveOut
40
+ })];
30
41
  };
31
42
 
32
43
  export { useHover };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aiszlab/relax",
3
- "version": "2.0.8-beta.2",
3
+ "version": "2.0.8-beta.3",
4
4
  "description": "react utils collection",
5
5
  "exports": {
6
6
  ".": {