@aiszlab/relax 1.3.17 → 1.4.0

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.
@@ -0,0 +1,63 @@
1
+ 'use strict';
2
+
3
+ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
4
+ var react = require('react');
5
+ var useDebounceCallback = require('./use-debounce-callback.cjs');
6
+ var useMounted = require('./use-mounted.cjs');
7
+
8
+ /**
9
+ * @description
10
+ * listen parent size change
11
+ * provider with\height to child
12
+ */
13
+ var useParentSize = function useParentSize() {
14
+ var parentRef = react.useRef(null);
15
+ var _useState = react.useState(0),
16
+ _useState2 = _slicedToArray(_useState, 2),
17
+ width = _useState2[0],
18
+ setWidth = _useState2[1];
19
+ var _useState3 = react.useState(0),
20
+ _useState4 = _slicedToArray(_useState3, 2),
21
+ height = _useState4[0],
22
+ setHeight = _useState4[1];
23
+ var _animation = react.useRef(0);
24
+ var _useDebounceCallback = useDebounceCallback.useDebounceCallback(function (_ref) {
25
+ var width = _ref.width,
26
+ height = _ref.height;
27
+ setWidth(width);
28
+ setHeight(height);
29
+ }, 300),
30
+ resize = _useDebounceCallback.next,
31
+ abort = _useDebounceCallback.abort;
32
+ useMounted.useMounted(function () {
33
+ var resizer = new ResizeObserver(function (entries) {
34
+ entries.forEach(function (entry) {
35
+ var _entry$contentRect;
36
+ var _ref2 = (_entry$contentRect = entry === null || entry === void 0 ? void 0 : entry.contentRect) !== null && _entry$contentRect !== void 0 ? _entry$contentRect : {},
37
+ width = _ref2.width,
38
+ height = _ref2.height;
39
+ _animation.current = window.requestAnimationFrame(function () {
40
+ resize({
41
+ width: width,
42
+ height: height
43
+ });
44
+ });
45
+ });
46
+ });
47
+ if (parentRef.current) {
48
+ resizer.observe(parentRef.current);
49
+ }
50
+ return function () {
51
+ cancelAnimationFrame(_animation.current);
52
+ resizer.disconnect();
53
+ abort();
54
+ };
55
+ });
56
+ return {
57
+ parentRef: parentRef,
58
+ width: width,
59
+ height: height
60
+ };
61
+ };
62
+
63
+ exports.useParentSize = useParentSize;
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @description
3
+ * listen parent size change
4
+ * provider with\height to child
5
+ */
6
+ export declare const useParentSize: <T extends HTMLElement = HTMLDivElement>() => {
7
+ parentRef: import("react").RefObject<T>;
8
+ width: number;
9
+ height: number;
10
+ };
@@ -0,0 +1,61 @@
1
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
2
+ import { useRef, useState } from 'react';
3
+ import { useDebounceCallback } from './use-debounce-callback.mjs';
4
+ import { useMounted } from './use-mounted.mjs';
5
+
6
+ /**
7
+ * @description
8
+ * listen parent size change
9
+ * provider with\height to child
10
+ */
11
+ var useParentSize = function useParentSize() {
12
+ var parentRef = useRef(null);
13
+ var _useState = useState(0),
14
+ _useState2 = _slicedToArray(_useState, 2),
15
+ width = _useState2[0],
16
+ setWidth = _useState2[1];
17
+ var _useState3 = useState(0),
18
+ _useState4 = _slicedToArray(_useState3, 2),
19
+ height = _useState4[0],
20
+ setHeight = _useState4[1];
21
+ var _animation = useRef(0);
22
+ var _useDebounceCallback = useDebounceCallback(function (_ref) {
23
+ var width = _ref.width,
24
+ height = _ref.height;
25
+ setWidth(width);
26
+ setHeight(height);
27
+ }, 300),
28
+ resize = _useDebounceCallback.next,
29
+ abort = _useDebounceCallback.abort;
30
+ useMounted(function () {
31
+ var resizer = new ResizeObserver(function (entries) {
32
+ entries.forEach(function (entry) {
33
+ var _entry$contentRect;
34
+ var _ref2 = (_entry$contentRect = entry === null || entry === void 0 ? void 0 : entry.contentRect) !== null && _entry$contentRect !== void 0 ? _entry$contentRect : {},
35
+ width = _ref2.width,
36
+ height = _ref2.height;
37
+ _animation.current = window.requestAnimationFrame(function () {
38
+ resize({
39
+ width: width,
40
+ height: height
41
+ });
42
+ });
43
+ });
44
+ });
45
+ if (parentRef.current) {
46
+ resizer.observe(parentRef.current);
47
+ }
48
+ return function () {
49
+ cancelAnimationFrame(_animation.current);
50
+ resizer.disconnect();
51
+ abort();
52
+ };
53
+ });
54
+ return {
55
+ parentRef: parentRef,
56
+ width: width,
57
+ height: height
58
+ };
59
+ };
60
+
61
+ export { useParentSize };
@@ -9,8 +9,7 @@ var useEvent = require('./use-event.cjs');
9
9
  */
10
10
  var useRaf = function useRaf(_callback) {
11
11
  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
12
- _ref$timely = _ref.timely,
13
- timely = _ref$timely === void 0 ? false : _ref$timely;
12
+ timely = _ref.timely;
14
13
  var callback = useEvent.useEvent(_callback);
15
14
  var timed = react.useRef(null);
16
15
  var isTimed = react.useRef(false);
@@ -1,7 +1,20 @@
1
+ type UsingRaf = [
2
+ _callback: Function,
3
+ {
4
+ /**
5
+ * @description
6
+ * run callback immediately
7
+ * if `timely` is true, run callback immediately
8
+ * otherwise, wait for next frame
9
+ */
10
+ timely?: boolean;
11
+ }?
12
+ ];
13
+ type UsedRaf = () => void;
14
+ type UseRaf = (...args: UsingRaf) => UsedRaf;
1
15
  /**
2
16
  * @description
3
17
  * raf
4
18
  */
5
- export declare const useRaf: (_callback: Function, { timely, }?: {
6
- timely?: boolean;
7
- }) => () => void;
19
+ export declare const useRaf: UseRaf;
20
+ export {};
@@ -7,8 +7,7 @@ import { useEvent } from './use-event.mjs';
7
7
  */
8
8
  var useRaf = function useRaf(_callback) {
9
9
  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
10
- _ref$timely = _ref.timely,
11
- timely = _ref$timely === void 0 ? false : _ref$timely;
10
+ timely = _ref.timely;
12
11
  var callback = useEvent(_callback);
13
12
  var timed = useRef(null);
14
13
  var isTimed = useRef(false);
@@ -0,0 +1,45 @@
1
+ 'use strict';
2
+
3
+ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
4
+ var react = require('react');
5
+ var isDomUsable = require('../is/is-dom-usable.cjs');
6
+ var useDebounceCallback = require('./use-debounce-callback.cjs');
7
+ var useMounted = require('./use-mounted.cjs');
8
+
9
+ /**
10
+ * @description
11
+ * Use the current screen size.
12
+ */
13
+ var useScreenSize = function useScreenSize() {
14
+ var _useState = react.useState(function () {
15
+ if (!isDomUsable.isDomUsable()) return {
16
+ width: 0,
17
+ height: 0
18
+ };
19
+ return {
20
+ width: window.innerWidth,
21
+ height: window.innerHeight
22
+ };
23
+ }),
24
+ _useState2 = _slicedToArray(_useState, 2),
25
+ size = _useState2[0],
26
+ setSize = _useState2[1];
27
+ var _useDebounceCallback = useDebounceCallback.useDebounceCallback(function () {
28
+ setSize({
29
+ width: window.innerWidth,
30
+ height: window.innerHeight
31
+ });
32
+ }, 300),
33
+ resize = _useDebounceCallback.next,
34
+ abort = _useDebounceCallback.abort;
35
+ useMounted.useMounted(function () {
36
+ window.addEventListener("resize", resize);
37
+ return function () {
38
+ window.removeEventListener("resize", resize);
39
+ abort();
40
+ };
41
+ });
42
+ return size;
43
+ };
44
+
45
+ exports.useScreenSize = useScreenSize;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @description
3
+ * Use the current screen size.
4
+ */
5
+ export declare const useScreenSize: () => {
6
+ width: number;
7
+ height: number;
8
+ };
@@ -0,0 +1,43 @@
1
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
2
+ import { useState } from 'react';
3
+ import { isDomUsable } from '../is/is-dom-usable.mjs';
4
+ import { useDebounceCallback } from './use-debounce-callback.mjs';
5
+ import { useMounted } from './use-mounted.mjs';
6
+
7
+ /**
8
+ * @description
9
+ * Use the current screen size.
10
+ */
11
+ var useScreenSize = function useScreenSize() {
12
+ var _useState = useState(function () {
13
+ if (!isDomUsable()) return {
14
+ width: 0,
15
+ height: 0
16
+ };
17
+ return {
18
+ width: window.innerWidth,
19
+ height: window.innerHeight
20
+ };
21
+ }),
22
+ _useState2 = _slicedToArray(_useState, 2),
23
+ size = _useState2[0],
24
+ setSize = _useState2[1];
25
+ var _useDebounceCallback = useDebounceCallback(function () {
26
+ setSize({
27
+ width: window.innerWidth,
28
+ height: window.innerHeight
29
+ });
30
+ }, 300),
31
+ resize = _useDebounceCallback.next,
32
+ abort = _useDebounceCallback.abort;
33
+ useMounted(function () {
34
+ window.addEventListener("resize", resize);
35
+ return function () {
36
+ window.removeEventListener("resize", resize);
37
+ abort();
38
+ };
39
+ });
40
+ return size;
41
+ };
42
+
43
+ export { useScreenSize };
package/dist/index.cjs CHANGED
@@ -33,6 +33,8 @@ var useSessionStorageState = require('./hooks/use-session-storage-state.cjs');
33
33
  var useIsMounted = require('./hooks/use-is-mounted.cjs');
34
34
  var useInfiniteScroll = require('./hooks/use-infinite-scroll.cjs');
35
35
  var useReactive = require('./hooks/use-reactive.cjs');
36
+ var useParentSize = require('./hooks/use-parent-size.cjs');
37
+ var useScreenSize = require('./hooks/use-screen-size.cjs');
36
38
  var isRefable = require('./is/is-refable.cjs');
37
39
  var isUndefined = require('./is/is-undefined.cjs');
38
40
  var isNull = require('./is/is-null.cjs');
@@ -105,6 +107,8 @@ exports.useSessionStorageState = useSessionStorageState.useSessionStorageState;
105
107
  exports.useIsMounted = useIsMounted.useIsMounted;
106
108
  exports.useInfiniteScroll = useInfiniteScroll.useInfiniteScroll;
107
109
  exports.useReactive = useReactive.useReactive;
110
+ exports.useParentSize = useParentSize.useParentSize;
111
+ exports.useScreenSize = useScreenSize.useScreenSize;
108
112
  exports.isRefable = isRefable.isRefable;
109
113
  exports.isUndefined = isUndefined.isUndefined;
110
114
  exports.isNull = isNull.isNull;
package/dist/index.d.ts CHANGED
@@ -35,6 +35,8 @@ export { useSessionStorageState } from "./hooks/use-session-storage-state";
35
35
  export { useIsMounted } from "./hooks/use-is-mounted";
36
36
  export { useInfiniteScroll } from "./hooks/use-infinite-scroll";
37
37
  export { useReactive } from "./hooks/use-reactive";
38
+ export { useParentSize } from "./hooks/use-parent-size";
39
+ export { useScreenSize } from "./hooks/use-screen-size";
38
40
  /**
39
41
  * @description
40
42
  * is
package/dist/index.mjs CHANGED
@@ -31,6 +31,8 @@ export { useSessionStorageState } from './hooks/use-session-storage-state.mjs';
31
31
  export { useIsMounted } from './hooks/use-is-mounted.mjs';
32
32
  export { useInfiniteScroll } from './hooks/use-infinite-scroll.mjs';
33
33
  export { useReactive } from './hooks/use-reactive.mjs';
34
+ export { useParentSize } from './hooks/use-parent-size.mjs';
35
+ export { useScreenSize } from './hooks/use-screen-size.mjs';
34
36
  export { isRefable } from './is/is-refable.mjs';
35
37
  export { isUndefined } from './is/is-undefined.mjs';
36
38
  export { isNull } from './is/is-null.mjs';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aiszlab/relax",
3
- "version": "1.3.17",
3
+ "version": "1.4.0",
4
4
  "description": "react utils collection",
5
5
  "exports": {
6
6
  ".": {
@@ -24,13 +24,6 @@
24
24
  "import": "./dist/react/index.mjs",
25
25
  "default": "./dist/react/index.mjs"
26
26
  },
27
- "./path": {
28
- "types": "./dist/path/index.d.ts",
29
- "node": "./dist/path/index.cjs",
30
- "require": "./dist/path/index.cjs",
31
- "import": "./dist/path/index.mjs",
32
- "default": "./dist/path/index.mjs"
33
- },
34
27
  "./types": "./dist/types/index.d.ts"
35
28
  },
36
29
  "scripts": {
@@ -55,18 +48,18 @@
55
48
  "@babel/preset-typescript": "^7.24.7",
56
49
  "@jest/globals": "^29.7.0",
57
50
  "@rollup/plugin-babel": "^6.0.4",
58
- "@rollup/plugin-node-resolve": "^15.2.3",
59
- "@rollup/plugin-typescript": "^11.1.6",
51
+ "@rollup/plugin-node-resolve": "^15.3.0",
52
+ "@rollup/plugin-typescript": "^12.1.0",
60
53
  "@testing-library/react": "^16.0.1",
61
54
  "@types/babel__core": "^7.20.5",
62
- "@types/react": "^18.3.6",
55
+ "@types/react": "^18.3.10",
63
56
  "@types/react-dom": "^18.3.0",
64
57
  "@types/react-is": "^18.3.0",
65
58
  "jest": "^29.7.0",
66
59
  "jest-environment-jsdom": "^29.7.0",
67
60
  "react": "^18.3.1",
68
61
  "react-dom": "^18.3.1",
69
- "rollup": "^4.21.3",
62
+ "rollup": "^4.22.5",
70
63
  "typescript": "5.6.2"
71
64
  },
72
65
  "peerDependencies": {
@@ -1,7 +0,0 @@
1
- 'use strict';
2
-
3
- var leaf = require('./leaf.cjs');
4
-
5
-
6
-
7
- exports.leaf = leaf.leaf;
@@ -1 +0,0 @@
1
- export { leaf } from "./leaf";
@@ -1 +0,0 @@
1
- export { leaf } from './leaf.mjs';
@@ -1,18 +0,0 @@
1
- 'use strict';
2
-
3
- /**
4
- * @description
5
- * leaf
6
- */
7
- var leaf = function leaf(path) {
8
- var start = 0;
9
- for (var index = path.length - 1; index >= 0; index--) {
10
- if (path.charCodeAt(index) === 47) {
11
- start = index + 1;
12
- break;
13
- }
14
- }
15
- return path.slice(start);
16
- };
17
-
18
- exports.leaf = leaf;
@@ -1,5 +0,0 @@
1
- /**
2
- * @description
3
- * leaf
4
- */
5
- export declare const leaf: (path: string) => string;
@@ -1,16 +0,0 @@
1
- /**
2
- * @description
3
- * leaf
4
- */
5
- var leaf = function leaf(path) {
6
- var start = 0;
7
- for (var index = path.length - 1; index >= 0; index--) {
8
- if (path.charCodeAt(index) === 47) {
9
- start = index + 1;
10
- break;
11
- }
12
- }
13
- return path.slice(start);
14
- };
15
-
16
- export { leaf };