@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.
Files changed (48) hide show
  1. package/README.md +17 -37
  2. package/dist/prefers-reduced-motion.js +1 -1
  3. package/dist/use-debounce-state.js +3 -3
  4. package/dist/use-debounced-callback.js +6 -6
  5. package/package.json +3 -103
  6. package/dist/env-C0PNnbwt.js +0 -4
  7. package/dist/logger-Dse1660l.js +0 -33
  8. package/dist/try-catch-D4d3N9_W.js +0 -29
  9. package/dist/use-battery.d.ts +0 -12
  10. package/dist/use-battery.js +0 -64
  11. package/dist/use-browser.d.ts +0 -6
  12. package/dist/use-browser.js +0 -51
  13. package/dist/use-haptic.d.ts +0 -8
  14. package/dist/use-haptic.js +0 -84
  15. package/dist/use-headroom.d.ts +0 -18
  16. package/dist/use-headroom.js +0 -65
  17. package/dist/use-idle-queue.d.ts +0 -28
  18. package/dist/use-idle-queue.js +0 -221
  19. package/dist/use-intersection-observer.d.ts +0 -17
  20. package/dist/use-intersection-observer.js +0 -50
  21. package/dist/use-isomorphic-effect.d.ts +0 -5
  22. package/dist/use-isomorphic-effect.js +0 -5
  23. package/dist/use-keybindings.d.ts +0 -14
  24. package/dist/use-keybindings.js +0 -76
  25. package/dist/use-local-storage.d.ts +0 -13
  26. package/dist/use-local-storage.js +0 -76
  27. package/dist/use-logger.d.ts +0 -4
  28. package/dist/use-logger.js +0 -17
  29. package/dist/use-long-press.d.ts +0 -12
  30. package/dist/use-long-press.js +0 -43
  31. package/dist/use-measure.d.ts +0 -8
  32. package/dist/use-measure.js +0 -27
  33. package/dist/use-media-query.d.ts +0 -14
  34. package/dist/use-media-query.js +0 -24
  35. package/dist/use-mouse.d.ts +0 -18
  36. package/dist/use-mouse.js +0 -40
  37. package/dist/use-network.d.ts +0 -17
  38. package/dist/use-network.js +0 -38
  39. package/dist/use-page-leave.d.ts +0 -4
  40. package/dist/use-page-leave.js +0 -11
  41. package/dist/use-reduced-motion.d.ts +0 -4
  42. package/dist/use-reduced-motion.js +0 -5
  43. package/dist/use-scroll-direction.d.ts +0 -5
  44. package/dist/use-scroll-direction.js +0 -33
  45. package/dist/use-window-event.d.ts +0 -5
  46. package/dist/use-window-event.js +0 -11
  47. package/dist/use-window-scroll.d.ts +0 -10
  48. package/dist/use-window-scroll.js +0 -33
@@ -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 };
@@ -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 };
@@ -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 };
@@ -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 };
@@ -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 };
@@ -1,4 +0,0 @@
1
- //#region src/use-page-leave.d.ts
2
- declare const usePageLeave: (onPageLeave: () => void) => void;
3
- //#endregion
4
- export { usePageLeave };
@@ -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,4 +0,0 @@
1
- //#region src/use-reduced-motion.d.ts
2
- declare const useReducedMotion: () => boolean;
3
- //#endregion
4
- export { useReducedMotion };
@@ -1,5 +0,0 @@
1
- import { useMediaQuery } from "./use-media-query.js";
2
- //#region src/use-reduced-motion.ts
3
- const useReducedMotion = () => useMediaQuery("(prefers-reduced-motion: reduce)");
4
- //#endregion
5
- export { useReducedMotion };
@@ -1,5 +0,0 @@
1
- //#region src/use-scroll-direction.d.ts
2
- type ScrollDirection = "up" | "down" | "unknown";
3
- declare const useScrollDirection: () => ScrollDirection;
4
- //#endregion
5
- export { useScrollDirection };
@@ -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 };
@@ -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 };