@aiszlab/relax 1.4.3 → 1.4.5
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.
- package/dist/hooks/use-debounce-callback.cjs +16 -10
- package/dist/hooks/use-debounce-callback.mjs +16 -10
- package/dist/hooks/use-drag.d.ts +49 -0
- package/dist/hooks/use-infinite-scroll.cjs +40 -36
- package/dist/hooks/use-infinite-scroll.d.ts +6 -3
- package/dist/hooks/use-infinite-scroll.mjs +40 -36
- package/dist/hooks/use-is-mounted.d.ts +2 -2
- package/dist/hooks/use-throttle-callback.cjs +22 -18
- package/dist/hooks/use-throttle-callback.mjs +22 -18
- package/dist/hooks/use-update-state.d.ts +12 -0
- package/dist/is/is-html-element.cjs +0 -1
- package/dist/is/is-html-element.mjs +0 -1
- package/dist/is/is-mobile.cjs +2 -1
- package/dist/is/is-mobile.mjs +2 -1
- package/dist/is/is-overflow.cjs +0 -1
- package/dist/is/is-overflow.mjs +0 -1
- package/dist/types/first.d.ts +1 -1
- package/dist/utils/first.cjs +0 -1
- package/dist/utils/first.mjs +0 -1
- package/dist/utils/max.cjs +4 -10
- package/dist/utils/max.d.ts +3 -1
- package/dist/utils/max.mjs +4 -10
- package/dist/utils/min.cjs +6 -12
- package/dist/utils/min.d.ts +3 -1
- package/dist/utils/min.mjs +6 -12
- package/package.json +4 -4
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
|
|
3
4
|
var react = require('react');
|
|
4
5
|
var debounce = require('../utils/debounce.cjs');
|
|
5
6
|
var useEvent = require('./use-event.cjs');
|
|
@@ -13,17 +14,22 @@ var useDebouncer = function useDebouncer(debouncer) {
|
|
|
13
14
|
pipe: null
|
|
14
15
|
} : debouncer;
|
|
15
16
|
}, [debouncer]);
|
|
17
|
+
var callback = useEvent.useEvent(function (piped) {
|
|
18
|
+
if (_debouncer.pipe) {
|
|
19
|
+
return _debouncer.callback(piped);
|
|
20
|
+
}
|
|
21
|
+
return _debouncer.callback.apply(_debouncer, _toConsumableArray(piped));
|
|
22
|
+
});
|
|
23
|
+
var pipe = useEvent.useEvent(function () {
|
|
24
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
25
|
+
args[_key] = arguments[_key];
|
|
26
|
+
}
|
|
27
|
+
if (!_debouncer.pipe) return args;
|
|
28
|
+
return _debouncer.pipe.apply(_debouncer, args);
|
|
29
|
+
});
|
|
16
30
|
return {
|
|
17
|
-
callback:
|
|
18
|
-
|
|
19
|
-
}),
|
|
20
|
-
pipe: useEvent.useEvent(function () {
|
|
21
|
-
var _debouncer$pipe, _debouncer$pipe2;
|
|
22
|
-
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
23
|
-
args[_key] = arguments[_key];
|
|
24
|
-
}
|
|
25
|
-
return (_debouncer$pipe = (_debouncer$pipe2 = _debouncer.pipe) === null || _debouncer$pipe2 === void 0 ? void 0 : _debouncer$pipe2.call.apply(_debouncer$pipe2, [_debouncer].concat(args))) !== null && _debouncer$pipe !== void 0 ? _debouncer$pipe : args;
|
|
26
|
-
})
|
|
31
|
+
callback: callback,
|
|
32
|
+
pipe: pipe
|
|
27
33
|
};
|
|
28
34
|
};
|
|
29
35
|
/**
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
|
|
1
2
|
import { useRef, useEffect, useMemo } from 'react';
|
|
2
3
|
import { debounce } from '../utils/debounce.mjs';
|
|
3
4
|
import { useEvent } from './use-event.mjs';
|
|
@@ -11,17 +12,22 @@ var useDebouncer = function useDebouncer(debouncer) {
|
|
|
11
12
|
pipe: null
|
|
12
13
|
} : debouncer;
|
|
13
14
|
}, [debouncer]);
|
|
15
|
+
var callback = useEvent(function (piped) {
|
|
16
|
+
if (_debouncer.pipe) {
|
|
17
|
+
return _debouncer.callback(piped);
|
|
18
|
+
}
|
|
19
|
+
return _debouncer.callback.apply(_debouncer, _toConsumableArray(piped));
|
|
20
|
+
});
|
|
21
|
+
var pipe = useEvent(function () {
|
|
22
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
23
|
+
args[_key] = arguments[_key];
|
|
24
|
+
}
|
|
25
|
+
if (!_debouncer.pipe) return args;
|
|
26
|
+
return _debouncer.pipe.apply(_debouncer, args);
|
|
27
|
+
});
|
|
14
28
|
return {
|
|
15
|
-
callback:
|
|
16
|
-
|
|
17
|
-
}),
|
|
18
|
-
pipe: useEvent(function () {
|
|
19
|
-
var _debouncer$pipe, _debouncer$pipe2;
|
|
20
|
-
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
21
|
-
args[_key] = arguments[_key];
|
|
22
|
-
}
|
|
23
|
-
return (_debouncer$pipe = (_debouncer$pipe2 = _debouncer.pipe) === null || _debouncer$pipe2 === void 0 ? void 0 : _debouncer$pipe2.call.apply(_debouncer$pipe2, [_debouncer].concat(args))) !== null && _debouncer$pipe !== void 0 ? _debouncer$pipe : args;
|
|
24
|
-
})
|
|
29
|
+
callback: callback,
|
|
30
|
+
pipe: pipe
|
|
25
31
|
};
|
|
26
32
|
};
|
|
27
33
|
/**
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { type DragEvent } from "react";
|
|
2
|
+
export type UsingDrag = {
|
|
3
|
+
/** Optional callback invoked upon drag end. */
|
|
4
|
+
onDragEnd?: (event: DragEvent<HTMLDivElement>, state: DragState) => void;
|
|
5
|
+
/** Optional callback invoked upon drag movement. */
|
|
6
|
+
onDragMove?: (event: DragEvent<HTMLDivElement>, state: DragState) => void;
|
|
7
|
+
/** Optional callback invoked upon drag start. */
|
|
8
|
+
onDragStart?: (event: DragEvent<HTMLDivElement>, state: DragState) => void;
|
|
9
|
+
};
|
|
10
|
+
export type DragState = {
|
|
11
|
+
/**
|
|
12
|
+
* @description
|
|
13
|
+
* x position
|
|
14
|
+
*/
|
|
15
|
+
x: number;
|
|
16
|
+
/**
|
|
17
|
+
* @description
|
|
18
|
+
* y position
|
|
19
|
+
*/
|
|
20
|
+
y: number;
|
|
21
|
+
/**
|
|
22
|
+
* @description
|
|
23
|
+
* offset X
|
|
24
|
+
*/
|
|
25
|
+
offsetX?: number;
|
|
26
|
+
/**
|
|
27
|
+
* @description
|
|
28
|
+
* offset Y
|
|
29
|
+
*/
|
|
30
|
+
offsetY?: number;
|
|
31
|
+
/**
|
|
32
|
+
* @description
|
|
33
|
+
* Whether a drag is currently in progress.
|
|
34
|
+
*/
|
|
35
|
+
isDragging: boolean;
|
|
36
|
+
};
|
|
37
|
+
export type UsedDrag = [
|
|
38
|
+
DragState,
|
|
39
|
+
{
|
|
40
|
+
onDragEnd: (event: DragEvent<HTMLDivElement>) => void;
|
|
41
|
+
onDragMove: (event: DragEvent<HTMLDivElement>) => void;
|
|
42
|
+
onDragStart: (event: DragEvent<HTMLDivElement>) => void;
|
|
43
|
+
}
|
|
44
|
+
];
|
|
45
|
+
/**
|
|
46
|
+
* @description
|
|
47
|
+
* Hook for dragging
|
|
48
|
+
*/
|
|
49
|
+
export default function useDrag({ onDragEnd: _onDragEnd, onDragMove: _onDragMove, onDragStart: _onDragStart, }?: UsingDrag | undefined): UsedDrag;
|
|
@@ -1,64 +1,68 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
|
4
3
|
var react = require('react');
|
|
5
4
|
var useEvent = require('./use-event.cjs');
|
|
6
5
|
var debounce = require('../utils/debounce.cjs');
|
|
6
|
+
var first = require('../utils/first.cjs');
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* @description
|
|
10
10
|
* use infinite scroll
|
|
11
11
|
*/
|
|
12
|
-
var useInfiniteScroll = function useInfiniteScroll(
|
|
13
|
-
var _ref
|
|
12
|
+
var useInfiniteScroll = function useInfiniteScroll() {
|
|
13
|
+
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
14
|
+
_ref$hasMore = _ref.hasMore,
|
|
14
15
|
hasMore = _ref$hasMore === void 0 ? true : _ref$hasMore,
|
|
15
16
|
_ref$distance = _ref.distance,
|
|
16
17
|
distance = _ref$distance === void 0 ? 0 : _ref$distance,
|
|
17
18
|
onLoadMore = _ref.onLoadMore;
|
|
18
|
-
var
|
|
19
|
-
var
|
|
19
|
+
var sentinelRef = react.useRef(null);
|
|
20
|
+
var viewportRef = react.useRef(null);
|
|
21
|
+
// `useEvent` keep loadMore always the same
|
|
20
22
|
var loadMore = useEvent.useEvent(function () {
|
|
21
23
|
onLoadMore === null || onLoadMore === void 0 || onLoadMore();
|
|
22
24
|
});
|
|
23
25
|
react.useEffect(function () {
|
|
24
|
-
var
|
|
25
|
-
var
|
|
26
|
+
var _viewportRef$current;
|
|
27
|
+
var _sentinel = sentinelRef.current;
|
|
28
|
+
var _viewport = (_viewportRef$current = viewportRef.current) !== null && _viewportRef$current !== void 0 ? _viewportRef$current : globalThis.window.document.body;
|
|
29
|
+
// no more data, never listen
|
|
26
30
|
if (!hasMore) return;
|
|
27
|
-
|
|
28
|
-
// use
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}, options);
|
|
41
|
-
observer.observe(loader);
|
|
31
|
+
// when _sentinel is not provided
|
|
32
|
+
// use `scroll` event to listen `viewport`
|
|
33
|
+
// it is not recommended, has performance issue!!!
|
|
34
|
+
if (!_sentinel) {
|
|
35
|
+
var _debounce = debounce.debounce(function () {
|
|
36
|
+
if (_viewport.scrollHeight - _viewport.scrollTop > _viewport.clientHeight + distance) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
loadMore();
|
|
40
|
+
}, 200),
|
|
41
|
+
next = _debounce.next,
|
|
42
|
+
abort = _debounce.abort;
|
|
43
|
+
_viewport.addEventListener("scroll", next);
|
|
42
44
|
return function () {
|
|
43
|
-
|
|
45
|
+
abort();
|
|
46
|
+
_viewport.removeEventListener("scroll", next);
|
|
44
47
|
};
|
|
45
48
|
}
|
|
46
|
-
//
|
|
47
|
-
var
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
49
|
+
// use `IntersectionObserver` to check current node is in viewport
|
|
50
|
+
var _listener = new IntersectionObserver(function (entries) {
|
|
51
|
+
var _element = first.first(entries);
|
|
52
|
+
if (!_element) return;
|
|
53
|
+
if (!_element.isIntersecting) return;
|
|
54
|
+
loadMore();
|
|
55
|
+
}, {
|
|
56
|
+
root: _viewport,
|
|
57
|
+
rootMargin: "0px 0px ".concat(distance, "px 0px")
|
|
58
|
+
});
|
|
59
|
+
_listener.observe(_sentinel);
|
|
56
60
|
return function () {
|
|
57
|
-
|
|
58
|
-
|
|
61
|
+
_listener.unobserve(_sentinel);
|
|
62
|
+
_listener.disconnect();
|
|
59
63
|
};
|
|
60
64
|
}, [hasMore]);
|
|
61
|
-
return [
|
|
65
|
+
return [sentinelRef, viewportRef];
|
|
62
66
|
};
|
|
63
67
|
|
|
64
68
|
exports.useInfiniteScroll = useInfiniteScroll;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type RefObject } from "react";
|
|
2
|
-
type
|
|
2
|
+
type UsingInfiniteScroll = {
|
|
3
3
|
/**
|
|
4
4
|
* @description
|
|
5
5
|
* hasMore
|
|
@@ -16,10 +16,13 @@ type UseInfiniteScrollProps = {
|
|
|
16
16
|
*/
|
|
17
17
|
onLoadMore?: () => void;
|
|
18
18
|
};
|
|
19
|
-
type UsedInfiniteScroll = [
|
|
19
|
+
type UsedInfiniteScroll<S, V> = [
|
|
20
|
+
sentinelRef: RefObject<S | null>,
|
|
21
|
+
viewportRef: RefObject<V | null>
|
|
22
|
+
];
|
|
20
23
|
/**
|
|
21
24
|
* @description
|
|
22
25
|
* use infinite scroll
|
|
23
26
|
*/
|
|
24
|
-
export declare const useInfiniteScroll: ({ hasMore, distance, onLoadMore
|
|
27
|
+
export declare const useInfiniteScroll: <S extends HTMLElement = HTMLElement, V extends HTMLElement = HTMLElement>({ hasMore, distance, onLoadMore }?: UsingInfiniteScroll) => UsedInfiniteScroll<S, V>;
|
|
25
28
|
export {};
|
|
@@ -1,62 +1,66 @@
|
|
|
1
|
-
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
2
1
|
import { useRef, useEffect } from 'react';
|
|
3
2
|
import { useEvent } from './use-event.mjs';
|
|
4
3
|
import { debounce } from '../utils/debounce.mjs';
|
|
4
|
+
import { first } from '../utils/first.mjs';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* @description
|
|
8
8
|
* use infinite scroll
|
|
9
9
|
*/
|
|
10
|
-
var useInfiniteScroll = function useInfiniteScroll(
|
|
11
|
-
var _ref
|
|
10
|
+
var useInfiniteScroll = function useInfiniteScroll() {
|
|
11
|
+
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
|
12
|
+
_ref$hasMore = _ref.hasMore,
|
|
12
13
|
hasMore = _ref$hasMore === void 0 ? true : _ref$hasMore,
|
|
13
14
|
_ref$distance = _ref.distance,
|
|
14
15
|
distance = _ref$distance === void 0 ? 0 : _ref$distance,
|
|
15
16
|
onLoadMore = _ref.onLoadMore;
|
|
16
|
-
var
|
|
17
|
-
var
|
|
17
|
+
var sentinelRef = useRef(null);
|
|
18
|
+
var viewportRef = useRef(null);
|
|
19
|
+
// `useEvent` keep loadMore always the same
|
|
18
20
|
var loadMore = useEvent(function () {
|
|
19
21
|
onLoadMore === null || onLoadMore === void 0 || onLoadMore();
|
|
20
22
|
});
|
|
21
23
|
useEffect(function () {
|
|
22
|
-
var
|
|
23
|
-
var
|
|
24
|
+
var _viewportRef$current;
|
|
25
|
+
var _sentinel = sentinelRef.current;
|
|
26
|
+
var _viewport = (_viewportRef$current = viewportRef.current) !== null && _viewportRef$current !== void 0 ? _viewportRef$current : globalThis.window.document.body;
|
|
27
|
+
// no more data, never listen
|
|
24
28
|
if (!hasMore) return;
|
|
25
|
-
|
|
26
|
-
// use
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}, options);
|
|
39
|
-
observer.observe(loader);
|
|
29
|
+
// when _sentinel is not provided
|
|
30
|
+
// use `scroll` event to listen `viewport`
|
|
31
|
+
// it is not recommended, has performance issue!!!
|
|
32
|
+
if (!_sentinel) {
|
|
33
|
+
var _debounce = debounce(function () {
|
|
34
|
+
if (_viewport.scrollHeight - _viewport.scrollTop > _viewport.clientHeight + distance) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
loadMore();
|
|
38
|
+
}, 200),
|
|
39
|
+
next = _debounce.next,
|
|
40
|
+
abort = _debounce.abort;
|
|
41
|
+
_viewport.addEventListener("scroll", next);
|
|
40
42
|
return function () {
|
|
41
|
-
|
|
43
|
+
abort();
|
|
44
|
+
_viewport.removeEventListener("scroll", next);
|
|
42
45
|
};
|
|
43
46
|
}
|
|
44
|
-
//
|
|
45
|
-
var
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
47
|
+
// use `IntersectionObserver` to check current node is in viewport
|
|
48
|
+
var _listener = new IntersectionObserver(function (entries) {
|
|
49
|
+
var _element = first(entries);
|
|
50
|
+
if (!_element) return;
|
|
51
|
+
if (!_element.isIntersecting) return;
|
|
52
|
+
loadMore();
|
|
53
|
+
}, {
|
|
54
|
+
root: _viewport,
|
|
55
|
+
rootMargin: "0px 0px ".concat(distance, "px 0px")
|
|
56
|
+
});
|
|
57
|
+
_listener.observe(_sentinel);
|
|
54
58
|
return function () {
|
|
55
|
-
|
|
56
|
-
|
|
59
|
+
_listener.unobserve(_sentinel);
|
|
60
|
+
_listener.disconnect();
|
|
57
61
|
};
|
|
58
62
|
}, [hasMore]);
|
|
59
|
-
return [
|
|
63
|
+
return [sentinelRef, viewportRef];
|
|
60
64
|
};
|
|
61
65
|
|
|
62
66
|
export { useInfiniteScroll };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
type
|
|
1
|
+
type UsingIsMounted = {
|
|
2
2
|
/**
|
|
3
3
|
* @description
|
|
4
4
|
* after mount, react will rerender current component
|
|
@@ -9,5 +9,5 @@ type UseIsMountedBy = {
|
|
|
9
9
|
* @description
|
|
10
10
|
* `useIsMounted`
|
|
11
11
|
*/
|
|
12
|
-
export declare const useIsMounted: ({ rerender }?:
|
|
12
|
+
export declare const useIsMounted: ({ rerender }?: UsingIsMounted) => () => boolean;
|
|
13
13
|
export {};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
|
|
3
4
|
var react = require('react');
|
|
4
5
|
var throttle = require('../utils/throttle.cjs');
|
|
5
6
|
var useEvent = require('./use-event.cjs');
|
|
@@ -7,25 +8,28 @@ var isFunction = require('../is/is-function.cjs');
|
|
|
7
8
|
var useDefault = require('./use-default.cjs');
|
|
8
9
|
|
|
9
10
|
var useThrottler = function useThrottler(throttler) {
|
|
10
|
-
var
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
11
|
+
var _throttler = react.useMemo(function () {
|
|
12
|
+
return isFunction.isFunction(throttler) ? {
|
|
13
|
+
callback: throttler,
|
|
14
|
+
pipe: null
|
|
15
|
+
} : throttler;
|
|
16
|
+
}, [throttler]);
|
|
17
|
+
var callback = useEvent.useEvent(function (piped) {
|
|
18
|
+
if (_throttler.pipe) {
|
|
19
|
+
return _throttler.callback(piped);
|
|
20
|
+
}
|
|
21
|
+
return _throttler.callback.apply(_throttler, _toConsumableArray(piped));
|
|
22
|
+
});
|
|
23
|
+
var pipe = useEvent.useEvent(function () {
|
|
24
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
25
|
+
args[_key] = arguments[_key];
|
|
26
|
+
}
|
|
27
|
+
if (!_throttler.pipe) return args;
|
|
28
|
+
return _throttler.pipe.apply(_throttler, args);
|
|
29
|
+
});
|
|
18
30
|
return {
|
|
19
|
-
callback:
|
|
20
|
-
|
|
21
|
-
}),
|
|
22
|
-
pipe: useEvent.useEvent(function () {
|
|
23
|
-
var _pipe;
|
|
24
|
-
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
25
|
-
args[_key] = arguments[_key];
|
|
26
|
-
}
|
|
27
|
-
return (_pipe = pipe === null || pipe === void 0 ? void 0 : pipe.apply(void 0, args)) !== null && _pipe !== void 0 ? _pipe : args;
|
|
28
|
-
})
|
|
31
|
+
callback: callback,
|
|
32
|
+
pipe: pipe
|
|
29
33
|
};
|
|
30
34
|
};
|
|
31
35
|
/**
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
|
|
1
2
|
import { useRef, useEffect, useMemo } from 'react';
|
|
2
3
|
import { throttle } from '../utils/throttle.mjs';
|
|
3
4
|
import { useEvent } from './use-event.mjs';
|
|
@@ -5,25 +6,28 @@ import { isFunction } from '../is/is-function.mjs';
|
|
|
5
6
|
import { useDefault } from './use-default.mjs';
|
|
6
7
|
|
|
7
8
|
var useThrottler = function useThrottler(throttler) {
|
|
8
|
-
var
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
9
|
+
var _throttler = useMemo(function () {
|
|
10
|
+
return isFunction(throttler) ? {
|
|
11
|
+
callback: throttler,
|
|
12
|
+
pipe: null
|
|
13
|
+
} : throttler;
|
|
14
|
+
}, [throttler]);
|
|
15
|
+
var callback = useEvent(function (piped) {
|
|
16
|
+
if (_throttler.pipe) {
|
|
17
|
+
return _throttler.callback(piped);
|
|
18
|
+
}
|
|
19
|
+
return _throttler.callback.apply(_throttler, _toConsumableArray(piped));
|
|
20
|
+
});
|
|
21
|
+
var pipe = useEvent(function () {
|
|
22
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
23
|
+
args[_key] = arguments[_key];
|
|
24
|
+
}
|
|
25
|
+
if (!_throttler.pipe) return args;
|
|
26
|
+
return _throttler.pipe.apply(_throttler, args);
|
|
27
|
+
});
|
|
16
28
|
return {
|
|
17
|
-
callback:
|
|
18
|
-
|
|
19
|
-
}),
|
|
20
|
-
pipe: useEvent(function () {
|
|
21
|
-
var _pipe;
|
|
22
|
-
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
23
|
-
args[_key] = arguments[_key];
|
|
24
|
-
}
|
|
25
|
-
return (_pipe = pipe === null || pipe === void 0 ? void 0 : pipe.apply(void 0, args)) !== null && _pipe !== void 0 ? _pipe : args;
|
|
26
|
-
})
|
|
29
|
+
callback: callback,
|
|
30
|
+
pipe: pipe
|
|
27
31
|
};
|
|
28
32
|
};
|
|
29
33
|
/**
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { SetStateAction } from "react";
|
|
2
|
+
type Callback<S> = (state: S) => void;
|
|
3
|
+
type StateSetter<S> = (state: SetStateAction<S>, callback?: Callback<S>) => void;
|
|
4
|
+
type UsedUpdateState<S> = [S, StateSetter<S>];
|
|
5
|
+
/**
|
|
6
|
+
* @description
|
|
7
|
+
* in class component
|
|
8
|
+
* use setState second parameter callback to get the latest state
|
|
9
|
+
*/
|
|
10
|
+
declare function useUpdateState<S = undefined>(): UsedUpdateState<S | undefined>;
|
|
11
|
+
declare function useUpdateState<S>(initialState: S): UsedUpdateState<S>;
|
|
12
|
+
export { useUpdateState };
|
package/dist/is/is-mobile.cjs
CHANGED
|
@@ -8,7 +8,8 @@ var isMobile = function isMobile() {
|
|
|
8
8
|
if (typeof navigator === "undefined" || typeof window === "undefined") {
|
|
9
9
|
return false;
|
|
10
10
|
}
|
|
11
|
-
var agent = navigator.userAgent || navigator.vendor
|
|
11
|
+
var agent = navigator.userAgent || navigator.vendor;
|
|
12
|
+
if (!agent) return false;
|
|
12
13
|
return /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(agent) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(agent === null || agent === void 0 ? void 0 : agent.substring(0, 4));
|
|
13
14
|
};
|
|
14
15
|
|
package/dist/is/is-mobile.mjs
CHANGED
|
@@ -6,7 +6,8 @@ var isMobile = function isMobile() {
|
|
|
6
6
|
if (typeof navigator === "undefined" || typeof window === "undefined") {
|
|
7
7
|
return false;
|
|
8
8
|
}
|
|
9
|
-
var agent = navigator.userAgent || navigator.vendor
|
|
9
|
+
var agent = navigator.userAgent || navigator.vendor;
|
|
10
|
+
if (!agent) return false;
|
|
10
11
|
return /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(agent) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(agent === null || agent === void 0 ? void 0 : agent.substring(0, 4));
|
|
11
12
|
};
|
|
12
13
|
|
package/dist/is/is-overflow.cjs
CHANGED
|
@@ -9,7 +9,6 @@ function isOverflow() {
|
|
|
9
9
|
if (element === document.body) {
|
|
10
10
|
return document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight) && window.innerWidth > document.body.offsetWidth;
|
|
11
11
|
}
|
|
12
|
-
// not body
|
|
13
12
|
return element.scrollHeight > element.clientHeight;
|
|
14
13
|
}
|
|
15
14
|
|
package/dist/is/is-overflow.mjs
CHANGED
|
@@ -7,7 +7,6 @@ function isOverflow() {
|
|
|
7
7
|
if (element === document.body) {
|
|
8
8
|
return document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight) && window.innerWidth > document.body.offsetWidth;
|
|
9
9
|
}
|
|
10
|
-
// not body
|
|
11
10
|
return element.scrollHeight > element.clientHeight;
|
|
12
11
|
}
|
|
13
12
|
|
package/dist/types/first.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export type First<T, R = undefined> = T extends string ? string : T extends [infer D, ...Array<unknown>] ? D : R;
|
|
1
|
+
export type First<T, R = undefined> = T extends string ? string : T extends [infer D, ...Array<unknown>] ? D : T extends Array<infer S> ? S | undefined : R;
|
package/dist/utils/first.cjs
CHANGED
package/dist/utils/first.mjs
CHANGED
package/dist/utils/max.cjs
CHANGED
|
@@ -2,16 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
*/
|
|
9
|
-
var max = function max() {
|
|
10
|
-
for (var _len = arguments.length, args = new Array(_len), _key2 = 0; _key2 < _len; _key2++) {
|
|
11
|
-
args[_key2] = arguments[_key2];
|
|
5
|
+
function max(values, pipe) {
|
|
6
|
+
if (!pipe) {
|
|
7
|
+
return Math.max.apply(Math, _toConsumableArray(values));
|
|
12
8
|
}
|
|
13
|
-
var values = args[0],
|
|
14
|
-
pipe = args[1];
|
|
15
9
|
var _values = values.reduce(function (prev, _value) {
|
|
16
10
|
var _key = pipe(_value);
|
|
17
11
|
if (!prev.has(_key)) {
|
|
@@ -21,6 +15,6 @@ var max = function max() {
|
|
|
21
15
|
}, new Map());
|
|
22
16
|
var _max = Math.max.apply(Math, _toConsumableArray(_values.keys()));
|
|
23
17
|
return _values.get(_max);
|
|
24
|
-
}
|
|
18
|
+
}
|
|
25
19
|
|
|
26
20
|
exports.max = max;
|
package/dist/utils/max.d.ts
CHANGED
package/dist/utils/max.mjs
CHANGED
|
@@ -1,15 +1,9 @@
|
|
|
1
1
|
import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
*/
|
|
7
|
-
var max = function max() {
|
|
8
|
-
for (var _len = arguments.length, args = new Array(_len), _key2 = 0; _key2 < _len; _key2++) {
|
|
9
|
-
args[_key2] = arguments[_key2];
|
|
3
|
+
function max(values, pipe) {
|
|
4
|
+
if (!pipe) {
|
|
5
|
+
return Math.max.apply(Math, _toConsumableArray(values));
|
|
10
6
|
}
|
|
11
|
-
var values = args[0],
|
|
12
|
-
pipe = args[1];
|
|
13
7
|
var _values = values.reduce(function (prev, _value) {
|
|
14
8
|
var _key = pipe(_value);
|
|
15
9
|
if (!prev.has(_key)) {
|
|
@@ -19,6 +13,6 @@ var max = function max() {
|
|
|
19
13
|
}, new Map());
|
|
20
14
|
var _max = Math.max.apply(Math, _toConsumableArray(_values.keys()));
|
|
21
15
|
return _values.get(_max);
|
|
22
|
-
}
|
|
16
|
+
}
|
|
23
17
|
|
|
24
18
|
export { max };
|
package/dist/utils/min.cjs
CHANGED
|
@@ -2,16 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
*/
|
|
9
|
-
var min = function min() {
|
|
10
|
-
for (var _len = arguments.length, args = new Array(_len), _key2 = 0; _key2 < _len; _key2++) {
|
|
11
|
-
args[_key2] = arguments[_key2];
|
|
5
|
+
function min(values, pipe) {
|
|
6
|
+
if (!pipe) {
|
|
7
|
+
return Math.min.apply(Math, _toConsumableArray(values));
|
|
12
8
|
}
|
|
13
|
-
var values = args[0],
|
|
14
|
-
pipe = args[1];
|
|
15
9
|
var _values = values.reduce(function (prev, _value) {
|
|
16
10
|
var _key = pipe(_value);
|
|
17
11
|
if (!prev.has(_key)) {
|
|
@@ -19,8 +13,8 @@ var min = function min() {
|
|
|
19
13
|
}
|
|
20
14
|
return prev;
|
|
21
15
|
}, new Map());
|
|
22
|
-
var
|
|
23
|
-
return _values.get(
|
|
24
|
-
}
|
|
16
|
+
var _min = Math.min.apply(Math, _toConsumableArray(_values.keys()));
|
|
17
|
+
return _values.get(_min);
|
|
18
|
+
}
|
|
25
19
|
|
|
26
20
|
exports.min = min;
|
package/dist/utils/min.d.ts
CHANGED
package/dist/utils/min.mjs
CHANGED
|
@@ -1,15 +1,9 @@
|
|
|
1
1
|
import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
*/
|
|
7
|
-
var min = function min() {
|
|
8
|
-
for (var _len = arguments.length, args = new Array(_len), _key2 = 0; _key2 < _len; _key2++) {
|
|
9
|
-
args[_key2] = arguments[_key2];
|
|
3
|
+
function min(values, pipe) {
|
|
4
|
+
if (!pipe) {
|
|
5
|
+
return Math.min.apply(Math, _toConsumableArray(values));
|
|
10
6
|
}
|
|
11
|
-
var values = args[0],
|
|
12
|
-
pipe = args[1];
|
|
13
7
|
var _values = values.reduce(function (prev, _value) {
|
|
14
8
|
var _key = pipe(_value);
|
|
15
9
|
if (!prev.has(_key)) {
|
|
@@ -17,8 +11,8 @@ var min = function min() {
|
|
|
17
11
|
}
|
|
18
12
|
return prev;
|
|
19
13
|
}, new Map());
|
|
20
|
-
var
|
|
21
|
-
return _values.get(
|
|
22
|
-
}
|
|
14
|
+
var _min = Math.min.apply(Math, _toConsumableArray(_values.keys()));
|
|
15
|
+
return _values.get(_min);
|
|
16
|
+
}
|
|
23
17
|
|
|
24
18
|
export { min };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aiszlab/relax",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.5",
|
|
4
4
|
"description": "react utils collection",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"@babel/core": "^7.25.2",
|
|
45
45
|
"@babel/plugin-transform-runtime": "^7.25.4",
|
|
46
|
-
"@babel/preset-env": "^7.25.
|
|
46
|
+
"@babel/preset-env": "^7.25.7",
|
|
47
47
|
"@babel/preset-react": "^7.24.7",
|
|
48
48
|
"@babel/preset-typescript": "^7.24.7",
|
|
49
49
|
"@jest/globals": "^29.7.0",
|
|
@@ -52,14 +52,14 @@
|
|
|
52
52
|
"@rollup/plugin-typescript": "^12.1.0",
|
|
53
53
|
"@testing-library/react": "^16.0.1",
|
|
54
54
|
"@types/babel__core": "^7.20.5",
|
|
55
|
-
"@types/react": "^18.3.
|
|
55
|
+
"@types/react": "^18.3.11",
|
|
56
56
|
"@types/react-dom": "^18.3.0",
|
|
57
57
|
"@types/react-is": "^18.3.0",
|
|
58
58
|
"jest": "^29.7.0",
|
|
59
59
|
"jest-environment-jsdom": "^29.7.0",
|
|
60
60
|
"react": "^18.3.1",
|
|
61
61
|
"react-dom": "^18.3.1",
|
|
62
|
-
"rollup": "^4.
|
|
62
|
+
"rollup": "^4.24.0",
|
|
63
63
|
"typescript": "5.6.2"
|
|
64
64
|
},
|
|
65
65
|
"peerDependencies": {
|