@journ/lift 0.2.1 → 0.3.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.
- package/README.md +17 -37
- package/dist/prefers-reduced-motion.js +1 -1
- package/dist/use-debounce-state.js +3 -3
- package/dist/use-debounced-callback.js +6 -6
- package/package.json +3 -103
- package/dist/env-C0PNnbwt.js +0 -4
- package/dist/logger-Dse1660l.js +0 -33
- package/dist/try-catch-D4d3N9_W.js +0 -29
- package/dist/use-battery.d.ts +0 -12
- package/dist/use-battery.js +0 -64
- package/dist/use-browser.d.ts +0 -6
- package/dist/use-browser.js +0 -51
- package/dist/use-haptic.d.ts +0 -8
- package/dist/use-haptic.js +0 -84
- package/dist/use-headroom.d.ts +0 -18
- package/dist/use-headroom.js +0 -65
- package/dist/use-idle-queue.d.ts +0 -28
- package/dist/use-idle-queue.js +0 -221
- package/dist/use-intersection-observer.d.ts +0 -17
- package/dist/use-intersection-observer.js +0 -50
- package/dist/use-isomorphic-effect.d.ts +0 -5
- package/dist/use-isomorphic-effect.js +0 -5
- package/dist/use-keybindings.d.ts +0 -14
- package/dist/use-keybindings.js +0 -76
- package/dist/use-local-storage.d.ts +0 -13
- package/dist/use-local-storage.js +0 -76
- package/dist/use-logger.d.ts +0 -4
- package/dist/use-logger.js +0 -17
- package/dist/use-long-press.d.ts +0 -12
- package/dist/use-long-press.js +0 -43
- package/dist/use-measure.d.ts +0 -8
- package/dist/use-measure.js +0 -27
- package/dist/use-media-query.d.ts +0 -14
- package/dist/use-media-query.js +0 -24
- package/dist/use-mouse.d.ts +0 -18
- package/dist/use-mouse.js +0 -40
- package/dist/use-network.d.ts +0 -17
- package/dist/use-network.js +0 -38
- package/dist/use-page-leave.d.ts +0 -4
- package/dist/use-page-leave.js +0 -11
- package/dist/use-reduced-motion.d.ts +0 -4
- package/dist/use-reduced-motion.js +0 -5
- package/dist/use-scroll-direction.d.ts +0 -5
- package/dist/use-scroll-direction.js +0 -33
- package/dist/use-window-event.d.ts +0 -5
- package/dist/use-window-event.js +0 -11
- package/dist/use-window-scroll.d.ts +0 -10
- package/dist/use-window-scroll.js +0 -33
package/dist/use-measure.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { useCallback, useRef, useState } from "react";
|
|
2
|
-
//#region src/use-measure.ts
|
|
3
|
-
const EMPTY = {
|
|
4
|
-
width: null,
|
|
5
|
-
height: null
|
|
6
|
-
};
|
|
7
|
-
const useMeasure = () => {
|
|
8
|
-
const [dimensions, setDimensions] = useState(EMPTY);
|
|
9
|
-
const observerRef = useRef(null);
|
|
10
|
-
return [useCallback((node) => {
|
|
11
|
-
observerRef.current?.disconnect();
|
|
12
|
-
observerRef.current = null;
|
|
13
|
-
if (node?.nodeType !== Node.ELEMENT_NODE) return;
|
|
14
|
-
const observer = new ResizeObserver(([entry]) => {
|
|
15
|
-
if (!entry?.borderBoxSize) return;
|
|
16
|
-
const box = entry.borderBoxSize[0];
|
|
17
|
-
setDimensions(box ? {
|
|
18
|
-
width: box.inlineSize,
|
|
19
|
-
height: box.blockSize
|
|
20
|
-
} : EMPTY);
|
|
21
|
-
});
|
|
22
|
-
observer.observe(node);
|
|
23
|
-
observerRef.current = observer;
|
|
24
|
-
}, []), dimensions];
|
|
25
|
-
};
|
|
26
|
-
//#endregion
|
|
27
|
-
export { useMeasure };
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
//#region src/use-media-query.d.ts
|
|
2
|
-
declare const breakpoints: {
|
|
3
|
-
readonly sm: "(min-width: 40rem)";
|
|
4
|
-
readonly md: "(min-width: 48rem)";
|
|
5
|
-
readonly "max-md": "(width < 48rem)";
|
|
6
|
-
readonly lg: "(min-width: 64rem)";
|
|
7
|
-
readonly "max-lg": "(width < 64rem)";
|
|
8
|
-
};
|
|
9
|
-
type Breakpoint = keyof typeof breakpoints;
|
|
10
|
-
type BreakpointValue = (typeof breakpoints)[Breakpoint];
|
|
11
|
-
declare const useMediaQuery: (query: BreakpointValue | string) => boolean;
|
|
12
|
-
declare const useBreakpoint: (breakpoint: Breakpoint) => boolean;
|
|
13
|
-
//#endregion
|
|
14
|
-
export { type Breakpoint, breakpoints, useBreakpoint, useMediaQuery };
|
package/dist/use-media-query.js
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { useCallback, useSyncExternalStore } from "react";
|
|
2
|
-
//#region src/use-media-query.ts
|
|
3
|
-
const breakpoints = {
|
|
4
|
-
sm: "(min-width: 40rem)",
|
|
5
|
-
md: "(min-width: 48rem)",
|
|
6
|
-
"max-md": "(width < 48rem)",
|
|
7
|
-
lg: "(min-width: 64rem)",
|
|
8
|
-
"max-lg": "(width < 64rem)"
|
|
9
|
-
};
|
|
10
|
-
const getServerSnapshot = () => {
|
|
11
|
-
throw new Error("useMediaQuery is a client-only hook");
|
|
12
|
-
};
|
|
13
|
-
const useMediaQuery = (query) => {
|
|
14
|
-
const subscribe = useCallback((callback) => {
|
|
15
|
-
const mediaQueryList = window.matchMedia(query);
|
|
16
|
-
mediaQueryList.addEventListener("change", callback);
|
|
17
|
-
return () => mediaQueryList.removeEventListener("change", callback);
|
|
18
|
-
}, [query]);
|
|
19
|
-
const getSnapshot = useCallback(() => window.matchMedia(query).matches, [query]);
|
|
20
|
-
return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
|
|
21
|
-
};
|
|
22
|
-
const useBreakpoint = (breakpoint) => useMediaQuery(breakpoints[breakpoint]);
|
|
23
|
-
//#endregion
|
|
24
|
-
export { breakpoints, useBreakpoint, useMediaQuery };
|
package/dist/use-mouse.d.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { RefCallback } from "react";
|
|
2
|
-
//#region src/use-mouse.d.ts
|
|
3
|
-
type UseMouseOptions = {
|
|
4
|
-
resetOnExit?: boolean;
|
|
5
|
-
};
|
|
6
|
-
type UseMouseReturnValue<T extends HTMLElement = HTMLElement> = {
|
|
7
|
-
ref: RefCallback<T>;
|
|
8
|
-
x: number;
|
|
9
|
-
y: number;
|
|
10
|
-
};
|
|
11
|
-
type UseMousePositionReturnValue = {
|
|
12
|
-
x: number;
|
|
13
|
-
y: number;
|
|
14
|
-
};
|
|
15
|
-
declare const useMouse: <T extends HTMLElement = HTMLElement>({ resetOnExit }?: UseMouseOptions) => UseMouseReturnValue<T>;
|
|
16
|
-
declare const useMousePosition: () => UseMousePositionReturnValue;
|
|
17
|
-
//#endregion
|
|
18
|
-
export { type UseMouseOptions, type UseMousePositionReturnValue, type UseMouseReturnValue, useMouse, useMousePosition };
|
package/dist/use-mouse.js
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { useWindowEvent } from "./use-window-event.js";
|
|
2
|
-
import { useCallback, useState } from "react";
|
|
3
|
-
//#region src/use-mouse.ts
|
|
4
|
-
const ORIGIN = {
|
|
5
|
-
x: 0,
|
|
6
|
-
y: 0
|
|
7
|
-
};
|
|
8
|
-
const useMouse = ({ resetOnExit = false } = {}) => {
|
|
9
|
-
const [position, setPosition] = useState(ORIGIN);
|
|
10
|
-
return {
|
|
11
|
-
ref: useCallback((node) => {
|
|
12
|
-
if (!node) return;
|
|
13
|
-
const trackPosition = (event) => {
|
|
14
|
-
const rect = node.getBoundingClientRect();
|
|
15
|
-
setPosition({
|
|
16
|
-
x: Math.max(0, Math.round(event.clientX - rect.left)),
|
|
17
|
-
y: Math.max(0, Math.round(event.clientY - rect.top))
|
|
18
|
-
});
|
|
19
|
-
};
|
|
20
|
-
const resetPosition = () => setPosition(ORIGIN);
|
|
21
|
-
node.addEventListener("mousemove", trackPosition);
|
|
22
|
-
if (resetOnExit) node.addEventListener("mouseleave", resetPosition);
|
|
23
|
-
return () => {
|
|
24
|
-
node.removeEventListener("mousemove", trackPosition);
|
|
25
|
-
node.removeEventListener("mouseleave", resetPosition);
|
|
26
|
-
};
|
|
27
|
-
}, [resetOnExit]),
|
|
28
|
-
...position
|
|
29
|
-
};
|
|
30
|
-
};
|
|
31
|
-
const useMousePosition = () => {
|
|
32
|
-
const [position, setPosition] = useState(ORIGIN);
|
|
33
|
-
useWindowEvent("mousemove", (event) => setPosition({
|
|
34
|
-
x: event.clientX,
|
|
35
|
-
y: event.clientY
|
|
36
|
-
}));
|
|
37
|
-
return position;
|
|
38
|
-
};
|
|
39
|
-
//#endregion
|
|
40
|
-
export { useMouse, useMousePosition };
|
package/dist/use-network.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
//#region src/use-network.d.ts
|
|
2
|
-
type EffectiveType = "slow-2g" | "2g" | "3g" | "4g";
|
|
3
|
-
type ConnectionType = "bluetooth" | "cellular" | "ethernet" | "wifi" | "wimax" | "none" | "other" | "unknown";
|
|
4
|
-
type NetworkStatus = {
|
|
5
|
-
downlink?: number;
|
|
6
|
-
downlinkMax?: number;
|
|
7
|
-
effectiveType?: EffectiveType;
|
|
8
|
-
rtt?: number;
|
|
9
|
-
saveData?: boolean;
|
|
10
|
-
type?: ConnectionType;
|
|
11
|
-
};
|
|
12
|
-
type NetworkState = NetworkStatus & {
|
|
13
|
-
online: boolean;
|
|
14
|
-
};
|
|
15
|
-
declare const useNetwork: () => NetworkState;
|
|
16
|
-
//#endregion
|
|
17
|
-
export { useNetwork };
|
package/dist/use-network.js
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { useMemo, useSyncExternalStore } from "react";
|
|
2
|
-
//#region src/use-network.ts
|
|
3
|
-
const getConnection = () => {
|
|
4
|
-
if (typeof navigator === "undefined") return;
|
|
5
|
-
const nav = navigator;
|
|
6
|
-
return nav.connection ?? nav.mozConnection ?? nav.webkitConnection;
|
|
7
|
-
};
|
|
8
|
-
const readNetworkState = () => {
|
|
9
|
-
const connection = getConnection();
|
|
10
|
-
return {
|
|
11
|
-
online: typeof navigator !== "undefined" ? navigator.onLine : true,
|
|
12
|
-
downlink: connection?.downlink,
|
|
13
|
-
downlinkMax: connection?.downlinkMax,
|
|
14
|
-
effectiveType: connection?.effectiveType,
|
|
15
|
-
rtt: connection?.rtt,
|
|
16
|
-
saveData: connection?.saveData,
|
|
17
|
-
type: connection?.type
|
|
18
|
-
};
|
|
19
|
-
};
|
|
20
|
-
const subscribe = (callback) => {
|
|
21
|
-
const connection = getConnection();
|
|
22
|
-
window.addEventListener("online", callback);
|
|
23
|
-
window.addEventListener("offline", callback);
|
|
24
|
-
connection?.addEventListener("change", callback);
|
|
25
|
-
return () => {
|
|
26
|
-
window.removeEventListener("online", callback);
|
|
27
|
-
window.removeEventListener("offline", callback);
|
|
28
|
-
connection?.removeEventListener("change", callback);
|
|
29
|
-
};
|
|
30
|
-
};
|
|
31
|
-
const getSnapshot = () => JSON.stringify(readNetworkState());
|
|
32
|
-
const getServerSnapshot = () => JSON.stringify({ online: true });
|
|
33
|
-
const useNetwork = () => {
|
|
34
|
-
const snapshot = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
|
|
35
|
-
return useMemo(() => JSON.parse(snapshot), [snapshot]);
|
|
36
|
-
};
|
|
37
|
-
//#endregion
|
|
38
|
-
export { useNetwork };
|
package/dist/use-page-leave.d.ts
DELETED
package/dist/use-page-leave.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { useEffect, useEffectEvent } from "react";
|
|
2
|
-
//#region src/use-page-leave.ts
|
|
3
|
-
const usePageLeave = (onPageLeave) => {
|
|
4
|
-
const onPageLeaveEvent = useEffectEvent(onPageLeave);
|
|
5
|
-
useEffect(() => {
|
|
6
|
-
document.documentElement.addEventListener("mouseleave", onPageLeaveEvent);
|
|
7
|
-
return () => document.documentElement.removeEventListener("mouseleave", onPageLeaveEvent);
|
|
8
|
-
}, []);
|
|
9
|
-
};
|
|
10
|
-
//#endregion
|
|
11
|
-
export { usePageLeave };
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { useEffect, useEffectEvent, useRef, useState } from "react";
|
|
2
|
-
//#region src/use-scroll-direction.ts
|
|
3
|
-
const useScrollDirection = () => {
|
|
4
|
-
const lastScrollTopRef = useRef(0);
|
|
5
|
-
const [scrollDirection, setScrollDirection] = useState("unknown");
|
|
6
|
-
const isResizingRef = useRef(false);
|
|
7
|
-
const resizeTimerRef = useRef(void 0);
|
|
8
|
-
const handleScroll = useEffectEvent(() => {
|
|
9
|
-
if (isResizingRef.current) return;
|
|
10
|
-
const currentScrollTop = window.scrollY || document.documentElement.scrollTop;
|
|
11
|
-
setScrollDirection(currentScrollTop < lastScrollTopRef.current ? "up" : "down");
|
|
12
|
-
lastScrollTopRef.current = currentScrollTop;
|
|
13
|
-
});
|
|
14
|
-
useEffect(() => {
|
|
15
|
-
const handleResize = () => {
|
|
16
|
-
isResizingRef.current = true;
|
|
17
|
-
window.clearTimeout(resizeTimerRef.current);
|
|
18
|
-
resizeTimerRef.current = window.setTimeout(() => {
|
|
19
|
-
isResizingRef.current = false;
|
|
20
|
-
}, 300);
|
|
21
|
-
};
|
|
22
|
-
window.addEventListener("scroll", handleScroll);
|
|
23
|
-
window.addEventListener("resize", handleResize);
|
|
24
|
-
return () => {
|
|
25
|
-
window.removeEventListener("scroll", handleScroll);
|
|
26
|
-
window.removeEventListener("resize", handleResize);
|
|
27
|
-
clearTimeout(resizeTimerRef.current);
|
|
28
|
-
};
|
|
29
|
-
}, []);
|
|
30
|
-
return scrollDirection;
|
|
31
|
-
};
|
|
32
|
-
//#endregion
|
|
33
|
-
export { useScrollDirection };
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
//#region src/use-window-event.d.ts
|
|
2
|
-
type WindowEventListener<K extends string> = K extends keyof WindowEventMap ? (event: WindowEventMap[K]) => void : (event: CustomEvent) => void;
|
|
3
|
-
declare const useWindowEvent: <K extends string>(type: K, listener: WindowEventListener<K>, options?: boolean | AddEventListenerOptions) => void;
|
|
4
|
-
//#endregion
|
|
5
|
-
export { useWindowEvent };
|
package/dist/use-window-event.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { useEffect, useEffectEvent } from "react";
|
|
2
|
-
//#region src/use-window-event.ts
|
|
3
|
-
const useWindowEvent = (type, listener, options) => {
|
|
4
|
-
const onEvent = useEffectEvent((event) => listener(event));
|
|
5
|
-
useEffect(() => {
|
|
6
|
-
window.addEventListener(type, onEvent, options);
|
|
7
|
-
return () => window.removeEventListener(type, onEvent, options);
|
|
8
|
-
}, [type, options]);
|
|
9
|
-
};
|
|
10
|
-
//#endregion
|
|
11
|
-
export { useWindowEvent };
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
//#region src/use-window-scroll.d.ts
|
|
2
|
-
type UseWindowScrollPosition = {
|
|
3
|
-
x: number;
|
|
4
|
-
y: number;
|
|
5
|
-
};
|
|
6
|
-
type UseWindowScrollTo = (position: Partial<UseWindowScrollPosition>) => void;
|
|
7
|
-
type UseWindowScrollReturnValue = [UseWindowScrollPosition, UseWindowScrollTo];
|
|
8
|
-
declare const useWindowScroll: () => UseWindowScrollReturnValue;
|
|
9
|
-
//#endregion
|
|
10
|
-
export { type UseWindowScrollPosition, type UseWindowScrollReturnValue, type UseWindowScrollTo, useWindowScroll };
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { t as isServerSide } from "./env-C0PNnbwt.js";
|
|
2
|
-
import { useMemo, useSyncExternalStore } from "react";
|
|
3
|
-
//#region src/use-window-scroll.ts
|
|
4
|
-
const PASSIVE = { passive: true };
|
|
5
|
-
const subscribe = (callback) => {
|
|
6
|
-
window.addEventListener("scroll", callback, PASSIVE);
|
|
7
|
-
window.addEventListener("resize", callback, PASSIVE);
|
|
8
|
-
return () => {
|
|
9
|
-
window.removeEventListener("scroll", callback);
|
|
10
|
-
window.removeEventListener("resize", callback);
|
|
11
|
-
};
|
|
12
|
-
};
|
|
13
|
-
const getSnapshot = () => `${window.scrollX},${window.scrollY}`;
|
|
14
|
-
const getServerSnapshot = () => "0,0";
|
|
15
|
-
const scrollTo = ({ x, y }) => {
|
|
16
|
-
if (isServerSide()) return;
|
|
17
|
-
const scrollOptions = { behavior: "smooth" };
|
|
18
|
-
if (typeof x === "number") scrollOptions.left = x;
|
|
19
|
-
if (typeof y === "number") scrollOptions.top = y;
|
|
20
|
-
window.scrollTo(scrollOptions);
|
|
21
|
-
};
|
|
22
|
-
const useWindowScroll = () => {
|
|
23
|
-
const snapshot = useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
|
|
24
|
-
return [useMemo(() => {
|
|
25
|
-
const [x = 0, y = 0] = snapshot.split(",").map(Number);
|
|
26
|
-
return {
|
|
27
|
-
x,
|
|
28
|
-
y
|
|
29
|
-
};
|
|
30
|
-
}, [snapshot]), scrollTo];
|
|
31
|
-
};
|
|
32
|
-
//#endregion
|
|
33
|
-
export { useWindowScroll };
|