@usefy/usefy 0.0.29 → 0.0.31
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 +178 -36
- package/dist/index.d.mts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +4 -0
- package/dist/index.mjs.map +1 -1
- package/package.json +19 -18
package/README.md
CHANGED
|
@@ -107,24 +107,26 @@ All packages require React 18 or 19:
|
|
|
107
107
|
|
|
108
108
|
### 📦 Available Hooks
|
|
109
109
|
|
|
110
|
-
| Hook
|
|
111
|
-
|
|
|
112
|
-
| <a href="https://www.npmjs.com/package/@usefy/use-toggle" target="_blank" rel="noopener noreferrer">@usefy/use-toggle</a>
|
|
113
|
-
| <a href="https://www.npmjs.com/package/@usefy/use-counter" target="_blank" rel="noopener noreferrer">@usefy/use-counter</a>
|
|
114
|
-
| <a href="https://www.npmjs.com/package/@usefy/use-debounce" target="_blank" rel="noopener noreferrer">@usefy/use-debounce</a>
|
|
115
|
-
| <a href="https://www.npmjs.com/package/@usefy/use-debounce-callback" target="_blank" rel="noopener noreferrer">@usefy/use-debounce-callback</a>
|
|
116
|
-
| <a href="https://www.npmjs.com/package/@usefy/use-throttle" target="_blank" rel="noopener noreferrer">@usefy/use-throttle</a>
|
|
117
|
-
| <a href="https://www.npmjs.com/package/@usefy/use-throttle-callback" target="_blank" rel="noopener noreferrer">@usefy/use-throttle-callback</a>
|
|
118
|
-
| <a href="https://www.npmjs.com/package/@usefy/use-local-storage" target="_blank" rel="noopener noreferrer">@usefy/use-local-storage</a>
|
|
119
|
-
| <a href="https://www.npmjs.com/package/@usefy/use-session-storage" target="_blank" rel="noopener noreferrer">@usefy/use-session-storage</a>
|
|
120
|
-
| <a href="https://www.npmjs.com/package/@usefy/use-click-any-where" target="_blank" rel="noopener noreferrer">@usefy/use-click-any-where</a>
|
|
121
|
-
| <a href="https://www.npmjs.com/package/@usefy/use-copy-to-clipboard" target="_blank" rel="noopener noreferrer">@usefy/use-copy-to-clipboard</a>
|
|
122
|
-
| <a href="https://www.npmjs.com/package/@usefy/use-event-listener" target="_blank" rel="noopener noreferrer">@usefy/use-event-listener</a>
|
|
123
|
-
| <a href="https://www.npmjs.com/package/@usefy/use-on-click-outside" target="_blank" rel="noopener noreferrer">@usefy/use-on-click-outside</a>
|
|
124
|
-
| <a href="https://www.npmjs.com/package/@usefy/use-unmount" target="_blank" rel="noopener noreferrer">@usefy/use-unmount</a>
|
|
125
|
-
| <a href="https://www.npmjs.com/package/@usefy/use-init" target="_blank" rel="noopener noreferrer">@usefy/use-init</a>
|
|
126
|
-
| <a href="https://www.npmjs.com/package/@usefy/use-timer" target="_blank" rel="noopener noreferrer">@usefy/use-timer</a>
|
|
127
|
-
| <a href="https://www.npmjs.com/package/@usefy/use-geolocation" target="_blank" rel="noopener noreferrer">@usefy/use-geolocation</a>
|
|
110
|
+
| Hook | Description | npm | Coverage |
|
|
111
|
+
| ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
|
|
112
|
+
| <a href="https://www.npmjs.com/package/@usefy/use-toggle" target="_blank" rel="noopener noreferrer">@usefy/use-toggle</a> | Boolean state management with toggle, setTrue, setFalse | <a href="https://www.npmjs.com/package/@usefy/use-toggle" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/npm/v/@usefy/use-toggle.svg?style=flat-square&color=007acc" alt="npm version" /></a> |  |
|
|
113
|
+
| <a href="https://www.npmjs.com/package/@usefy/use-counter" target="_blank" rel="noopener noreferrer">@usefy/use-counter</a> | Counter state with increment, decrement, reset | <a href="https://www.npmjs.com/package/@usefy/use-counter" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/npm/v/@usefy/use-counter.svg?style=flat-square&color=007acc" alt="npm version" /></a> |  |
|
|
114
|
+
| <a href="https://www.npmjs.com/package/@usefy/use-debounce" target="_blank" rel="noopener noreferrer">@usefy/use-debounce</a> | Value debouncing with leading/trailing edge | <a href="https://www.npmjs.com/package/@usefy/use-debounce" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/npm/v/@usefy/use-debounce.svg?style=flat-square&color=007acc" alt="npm version" /></a> |  |
|
|
115
|
+
| <a href="https://www.npmjs.com/package/@usefy/use-debounce-callback" target="_blank" rel="noopener noreferrer">@usefy/use-debounce-callback</a> | Debounced callbacks with cancel/flush/pending | <a href="https://www.npmjs.com/package/@usefy/use-debounce-callback" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/npm/v/@usefy/use-debounce-callback.svg?style=flat-square&color=007acc" alt="npm version" /></a> |  |
|
|
116
|
+
| <a href="https://www.npmjs.com/package/@usefy/use-throttle" target="_blank" rel="noopener noreferrer">@usefy/use-throttle</a> | Value throttling for rate-limiting updates | <a href="https://www.npmjs.com/package/@usefy/use-throttle" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/npm/v/@usefy/use-throttle.svg?style=flat-square&color=007acc" alt="npm version" /></a> |  |
|
|
117
|
+
| <a href="https://www.npmjs.com/package/@usefy/use-throttle-callback" target="_blank" rel="noopener noreferrer">@usefy/use-throttle-callback</a> | Throttled callbacks with cancel/flush/pending | <a href="https://www.npmjs.com/package/@usefy/use-throttle-callback" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/npm/v/@usefy/use-throttle-callback.svg?style=flat-square&color=007acc" alt="npm version" /></a> |  |
|
|
118
|
+
| <a href="https://www.npmjs.com/package/@usefy/use-local-storage" target="_blank" rel="noopener noreferrer">@usefy/use-local-storage</a> | localStorage persistence with cross-tab sync | <a href="https://www.npmjs.com/package/@usefy/use-local-storage" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/npm/v/@usefy/use-local-storage.svg?style=flat-square&color=007acc" alt="npm version" /></a> |  |
|
|
119
|
+
| <a href="https://www.npmjs.com/package/@usefy/use-session-storage" target="_blank" rel="noopener noreferrer">@usefy/use-session-storage</a> | sessionStorage persistence for tab lifetime | <a href="https://www.npmjs.com/package/@usefy/use-session-storage" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/npm/v/@usefy/use-session-storage.svg?style=flat-square&color=007acc" alt="npm version" /></a> |  |
|
|
120
|
+
| <a href="https://www.npmjs.com/package/@usefy/use-click-any-where" target="_blank" rel="noopener noreferrer">@usefy/use-click-any-where</a> | Document-wide click event detection | <a href="https://www.npmjs.com/package/@usefy/use-click-any-where" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/npm/v/@usefy/use-click-any-where.svg?style=flat-square&color=007acc" alt="npm version" /></a> |  |
|
|
121
|
+
| <a href="https://www.npmjs.com/package/@usefy/use-copy-to-clipboard" target="_blank" rel="noopener noreferrer">@usefy/use-copy-to-clipboard</a> | Clipboard copy with fallback support | <a href="https://www.npmjs.com/package/@usefy/use-copy-to-clipboard" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/npm/v/@usefy/use-copy-to-clipboard.svg?style=flat-square&color=007acc" alt="npm version" /></a> |  |
|
|
122
|
+
| <a href="https://www.npmjs.com/package/@usefy/use-event-listener" target="_blank" rel="noopener noreferrer">@usefy/use-event-listener</a> | DOM event listener with auto cleanup | <a href="https://www.npmjs.com/package/@usefy/use-event-listener" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/npm/v/@usefy/use-event-listener.svg?style=flat-square&color=007acc" alt="npm version" /></a> |  |
|
|
123
|
+
| <a href="https://www.npmjs.com/package/@usefy/use-on-click-outside" target="_blank" rel="noopener noreferrer">@usefy/use-on-click-outside</a> | Outside click detection for modals/dropdowns | <a href="https://www.npmjs.com/package/@usefy/use-on-click-outside" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/npm/v/@usefy/use-on-click-outside.svg?style=flat-square&color=007acc" alt="npm version" /></a> |  |
|
|
124
|
+
| <a href="https://www.npmjs.com/package/@usefy/use-unmount" target="_blank" rel="noopener noreferrer">@usefy/use-unmount</a> | Execute callback on component unmount | <a href="https://www.npmjs.com/package/@usefy/use-unmount" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/npm/v/@usefy/use-unmount.svg?style=flat-square&color=007acc" alt="npm version" /></a> |  |
|
|
125
|
+
| <a href="https://www.npmjs.com/package/@usefy/use-init" target="_blank" rel="noopener noreferrer">@usefy/use-init</a> | One-time initialization with async, retry, timeout | <a href="https://www.npmjs.com/package/@usefy/use-init" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/npm/v/@usefy/use-init.svg?style=flat-square&color=007acc" alt="npm version" /></a> |  |
|
|
126
|
+
| <a href="https://www.npmjs.com/package/@usefy/use-timer" target="_blank" rel="noopener noreferrer">@usefy/use-timer</a> | Countdown timer with drift compensation and formats | <a href="https://www.npmjs.com/package/@usefy/use-timer" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/npm/v/@usefy/use-timer.svg?style=flat-square&color=007acc" alt="npm version" /></a> |  |
|
|
127
|
+
| <a href="https://www.npmjs.com/package/@usefy/use-geolocation" target="_blank" rel="noopener noreferrer">@usefy/use-geolocation</a> | Device geolocation with real-time tracking and distance | <a href="https://www.npmjs.com/package/@usefy/use-geolocation" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/npm/v/@usefy/use-geolocation.svg?style=flat-square&color=007acc" alt="npm version" /></a> |  |
|
|
128
|
+
| <a href="https://www.npmjs.com/package/@usefy/use-intersection-observer" target="_blank" rel="noopener noreferrer">@usefy/use-intersection-observer</a> | Element visibility detection with Intersection Observer | <a href="https://www.npmjs.com/package/@usefy/use-intersection-observer" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/npm/v/@usefy/use-intersection-observer.svg?style=flat-square&color=007acc" alt="npm version" /></a> |  |
|
|
129
|
+
| <a href="https://www.npmjs.com/package/@usefy/use-signal" target="_blank" rel="noopener noreferrer">@usefy/use-signal</a> | Event-driven communication between components | <a href="https://www.npmjs.com/package/@usefy/use-signal" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/npm/v/@usefy/use-signal.svg?style=flat-square&color=007acc" alt="npm version" /></a> |  |
|
|
128
130
|
|
|
129
131
|
---
|
|
130
132
|
|
|
@@ -141,6 +143,8 @@ import {
|
|
|
141
143
|
useCopyToClipboard,
|
|
142
144
|
useEventListener,
|
|
143
145
|
useOnClickOutside,
|
|
146
|
+
useIntersectionObserver,
|
|
147
|
+
useSignal,
|
|
144
148
|
useUnmount,
|
|
145
149
|
useInit,
|
|
146
150
|
} from "@usefy/usefy";
|
|
@@ -162,6 +166,12 @@ function App() {
|
|
|
162
166
|
// Copy functionality
|
|
163
167
|
const [copiedText, copy] = useCopyToClipboard();
|
|
164
168
|
|
|
169
|
+
// Lazy loading image
|
|
170
|
+
const { ref: imageRef, inView } = useIntersectionObserver({
|
|
171
|
+
triggerOnce: true,
|
|
172
|
+
rootMargin: "50px",
|
|
173
|
+
});
|
|
174
|
+
|
|
165
175
|
return (
|
|
166
176
|
<div data-theme={theme}>
|
|
167
177
|
{/* Modal */}
|
|
@@ -195,6 +205,11 @@ function App() {
|
|
|
195
205
|
<button onClick={() => copy("Hello World!")}>
|
|
196
206
|
{copiedText ? "Copied!" : "Copy"}
|
|
197
207
|
</button>
|
|
208
|
+
|
|
209
|
+
{/* Lazy Loading */}
|
|
210
|
+
<div ref={imageRef}>
|
|
211
|
+
{inView && <img src="large-image.jpg" alt="Lazy loaded" />}
|
|
212
|
+
</div>
|
|
198
213
|
</div>
|
|
199
214
|
);
|
|
200
215
|
}
|
|
@@ -369,6 +384,71 @@ Data persists during tab lifetime, isolated per tab.
|
|
|
369
384
|
|
|
370
385
|
</details>
|
|
371
386
|
|
|
387
|
+
### 📡 Communication
|
|
388
|
+
|
|
389
|
+
<details>
|
|
390
|
+
<summary><strong>useSignal</strong> — Event-driven communication between components</summary>
|
|
391
|
+
|
|
392
|
+
```tsx
|
|
393
|
+
import { useSignal } from "@usefy/use-signal";
|
|
394
|
+
|
|
395
|
+
// Emitter component
|
|
396
|
+
function RefreshButton() {
|
|
397
|
+
const { emit, info } = useSignal("dashboard-refresh");
|
|
398
|
+
|
|
399
|
+
return (
|
|
400
|
+
<button onClick={() => emit()}>
|
|
401
|
+
Refresh All ({info.subscriberCount} widgets)
|
|
402
|
+
</button>
|
|
403
|
+
);
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
// Subscriber component
|
|
407
|
+
function DataWidget() {
|
|
408
|
+
const { signal } = useSignal("dashboard-refresh");
|
|
409
|
+
|
|
410
|
+
useEffect(() => {
|
|
411
|
+
fetchData(); // Refetch when signal changes
|
|
412
|
+
}, [signal]);
|
|
413
|
+
|
|
414
|
+
return <div>Widget Content</div>;
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
// With typed data payload
|
|
418
|
+
interface NotificationData {
|
|
419
|
+
type: "success" | "error";
|
|
420
|
+
message: string;
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
function NotificationEmitter() {
|
|
424
|
+
const { emit } = useSignal<NotificationData>("notification");
|
|
425
|
+
|
|
426
|
+
return (
|
|
427
|
+
<button onClick={() => emit({ type: "success", message: "Done!" })}>
|
|
428
|
+
Notify
|
|
429
|
+
</button>
|
|
430
|
+
);
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
function NotificationReceiver() {
|
|
434
|
+
const { signal, info } = useSignal<NotificationData>("notification");
|
|
435
|
+
|
|
436
|
+
useEffect(() => {
|
|
437
|
+
if (signal > 0 && info.data) {
|
|
438
|
+
toast[info.data.type](info.data.message);
|
|
439
|
+
}
|
|
440
|
+
}, [signal]);
|
|
441
|
+
|
|
442
|
+
return null;
|
|
443
|
+
}
|
|
444
|
+
```
|
|
445
|
+
|
|
446
|
+
**Perfect for:** Dashboard refresh, form reset, cache invalidation, multi-step flows, and event broadcasting.
|
|
447
|
+
|
|
448
|
+
> ⚠️ **Note:** `useSignal` is NOT a global state management solution. It's designed for lightweight event-driven communication. For complex state management, use Context, Zustand, Jotai, or Recoil.
|
|
449
|
+
|
|
450
|
+
</details>
|
|
451
|
+
|
|
372
452
|
### 🖱️ Events
|
|
373
453
|
|
|
374
454
|
<details>
|
|
@@ -510,6 +590,66 @@ Perfect for location-based apps, maps, navigation, distance tracking, and geofen
|
|
|
510
590
|
|
|
511
591
|
</details>
|
|
512
592
|
|
|
593
|
+
### 👁️ Visibility
|
|
594
|
+
|
|
595
|
+
<details>
|
|
596
|
+
<summary><strong>useIntersectionObserver</strong> — Efficient element visibility detection with Intersection Observer API</summary>
|
|
597
|
+
|
|
598
|
+
```tsx
|
|
599
|
+
import { useIntersectionObserver } from "@usefy/use-intersection-observer";
|
|
600
|
+
|
|
601
|
+
// Basic usage - detect when element enters viewport
|
|
602
|
+
const { ref, inView, entry } = useIntersectionObserver();
|
|
603
|
+
|
|
604
|
+
// Lazy loading images
|
|
605
|
+
const { ref, inView } = useIntersectionObserver({
|
|
606
|
+
triggerOnce: true, // Stop observing after first detection
|
|
607
|
+
threshold: 0.1, // Trigger when 10% visible
|
|
608
|
+
rootMargin: "50px", // Start loading 50px before entering viewport
|
|
609
|
+
});
|
|
610
|
+
|
|
611
|
+
// Infinite scroll with sentinel element
|
|
612
|
+
const { ref, inView } = useIntersectionObserver({
|
|
613
|
+
threshold: 1.0,
|
|
614
|
+
rootMargin: "100px", // Preload 100px ahead
|
|
615
|
+
});
|
|
616
|
+
|
|
617
|
+
useEffect(() => {
|
|
618
|
+
if (inView) loadMoreItems();
|
|
619
|
+
}, [inView]);
|
|
620
|
+
|
|
621
|
+
// Scroll animations
|
|
622
|
+
const { ref, inView } = useIntersectionObserver({
|
|
623
|
+
triggerOnce: true,
|
|
624
|
+
threshold: 0.3,
|
|
625
|
+
});
|
|
626
|
+
|
|
627
|
+
// Progress tracking with multiple thresholds
|
|
628
|
+
const thresholds = Array.from({ length: 101 }, (_, i) => i / 100);
|
|
629
|
+
const { ref, entry } = useIntersectionObserver({
|
|
630
|
+
threshold: thresholds,
|
|
631
|
+
onChange: (entry) => {
|
|
632
|
+
setProgress(Math.round(entry.intersectionRatio * 100));
|
|
633
|
+
},
|
|
634
|
+
});
|
|
635
|
+
|
|
636
|
+
// Custom scroll container
|
|
637
|
+
const containerRef = useRef<HTMLDivElement>(null);
|
|
638
|
+
const { ref, inView } = useIntersectionObserver({
|
|
639
|
+
root: containerRef.current,
|
|
640
|
+
rootMargin: "0px",
|
|
641
|
+
});
|
|
642
|
+
|
|
643
|
+
// Delayed observation
|
|
644
|
+
const { ref, inView } = useIntersectionObserver({
|
|
645
|
+
delay: 500, // Wait 500ms before creating observer
|
|
646
|
+
});
|
|
647
|
+
```
|
|
648
|
+
|
|
649
|
+
Perfect for lazy loading, infinite scroll, scroll animations, progress tracking, and any visibility-based interactions with smart re-render optimization.
|
|
650
|
+
|
|
651
|
+
</details>
|
|
652
|
+
|
|
513
653
|
### 🔄 Lifecycle
|
|
514
654
|
|
|
515
655
|
<details>
|
|
@@ -591,24 +731,26 @@ All packages are comprehensively tested using Vitest to ensure reliability and s
|
|
|
591
731
|
|
|
592
732
|
> 💡 To generate coverage report locally, run `pnpm test:coverage`. The report will be available at `coverage/index.html`.
|
|
593
733
|
|
|
594
|
-
| Package
|
|
595
|
-
|
|
|
596
|
-
| use-toggle
|
|
597
|
-
| use-counter
|
|
598
|
-
| use-throttle
|
|
599
|
-
| use-throttle-callback
|
|
600
|
-
| use-on-click-outside
|
|
601
|
-
| use-event-listener
|
|
602
|
-
| use-init
|
|
603
|
-
| use-local-storage
|
|
604
|
-
| use-session-storage
|
|
605
|
-
| use-debounce-callback
|
|
606
|
-
| use-click-any-where
|
|
607
|
-
| use-debounce
|
|
608
|
-
| use-copy-to-clipboard
|
|
609
|
-
| use-unmount
|
|
610
|
-
| use-timer
|
|
611
|
-
| use-geolocation
|
|
734
|
+
| Package | Statements | Branches | Functions | Lines |
|
|
735
|
+
| ------------------------- | ---------- | -------- | --------- | ------ |
|
|
736
|
+
| use-toggle | 100% | 100% | 100% | 100% |
|
|
737
|
+
| use-counter | 100% | 100% | 100% | 100% |
|
|
738
|
+
| use-throttle | 100% | 100% | 100% | 100% |
|
|
739
|
+
| use-throttle-callback | 100% | 100% | 100% | 100% |
|
|
740
|
+
| use-on-click-outside | 97.61% | 93.93% | 100% | 97.61% |
|
|
741
|
+
| use-event-listener | 96.29% | 91.66% | 100% | 96.29% |
|
|
742
|
+
| use-init | 96.1% | 88.63% | 100% | 96% |
|
|
743
|
+
| use-local-storage | 95.18% | 86.84% | 93.75% | 95.12% |
|
|
744
|
+
| use-session-storage | 94.66% | 82.75% | 93.33% | 94.59% |
|
|
745
|
+
| use-debounce-callback | 93.2% | 76% | 93.75% | 93.13% |
|
|
746
|
+
| use-click-any-where | 92.3% | 87.5% | 100% | 92.3% |
|
|
747
|
+
| use-debounce | 90% | 82.6% | 66.66% | 91.95% |
|
|
748
|
+
| use-copy-to-clipboard | 87.87% | 79.16% | 85.71% | 87.87% |
|
|
749
|
+
| use-unmount | 100% | 100% | 100% | 100% |
|
|
750
|
+
| use-timer | 83.8% | 72.63% | 93.93% | 84.13% |
|
|
751
|
+
| use-geolocation | 90% | 85% | 95% | 90% |
|
|
752
|
+
| use-intersection-observer | 94% | 85% | 95% | 93.93% |
|
|
753
|
+
| use-signal | 98.61% | 90.9% | 96.42% | 98.59% |
|
|
612
754
|
|
|
613
755
|
---
|
|
614
756
|
|
package/dist/index.d.mts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { ClickAnyWhereHandler, UseClickAnyWhereOptions, useClickAnyWhere } from '@usefy/use-click-any-where';
|
|
2
2
|
export { CopyFn, UseCopyToClipboardOptions, UseCopyToClipboardReturn, useCopyToClipboard } from '@usefy/use-copy-to-clipboard';
|
|
3
3
|
export { useCounter } from '@usefy/use-counter';
|
|
4
|
+
export { SignalInfo, SignalOptions, UseSignalReturn, useSignal } from '@usefy/use-signal';
|
|
4
5
|
export { UseToggleReturn, useToggle } from '@usefy/use-toggle';
|
|
5
6
|
export { UseDebounceOptions, useDebounce } from '@usefy/use-debounce';
|
|
6
7
|
export { DebouncedFunction, UseDebounceCallbackOptions, useDebounceCallback } from '@usefy/use-debounce-callback';
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { ClickAnyWhereHandler, UseClickAnyWhereOptions, useClickAnyWhere } from '@usefy/use-click-any-where';
|
|
2
2
|
export { CopyFn, UseCopyToClipboardOptions, UseCopyToClipboardReturn, useCopyToClipboard } from '@usefy/use-copy-to-clipboard';
|
|
3
3
|
export { useCounter } from '@usefy/use-counter';
|
|
4
|
+
export { SignalInfo, SignalOptions, UseSignalReturn, useSignal } from '@usefy/use-signal';
|
|
4
5
|
export { UseToggleReturn, useToggle } from '@usefy/use-toggle';
|
|
5
6
|
export { UseDebounceOptions, useDebounce } from '@usefy/use-debounce';
|
|
6
7
|
export { DebouncedFunction, UseDebounceCallbackOptions, useDebounceCallback } from '@usefy/use-debounce-callback';
|
package/dist/index.js
CHANGED
|
@@ -37,6 +37,7 @@ __export(index_exports, {
|
|
|
37
37
|
useLocalStorage: () => import_use_local_storage.useLocalStorage,
|
|
38
38
|
useOnClickOutside: () => import_use_on_click_outside.useOnClickOutside,
|
|
39
39
|
useSessionStorage: () => import_use_session_storage.useSessionStorage,
|
|
40
|
+
useSignal: () => import_use_signal.useSignal,
|
|
40
41
|
useThrottle: () => import_use_throttle.useThrottle,
|
|
41
42
|
useThrottleCallback: () => import_use_throttle_callback.useThrottleCallback,
|
|
42
43
|
useTimer: () => import_use_timer.useTimer,
|
|
@@ -47,6 +48,7 @@ module.exports = __toCommonJS(index_exports);
|
|
|
47
48
|
var import_use_click_any_where = require("@usefy/use-click-any-where");
|
|
48
49
|
var import_use_copy_to_clipboard = require("@usefy/use-copy-to-clipboard");
|
|
49
50
|
var import_use_counter = require("@usefy/use-counter");
|
|
51
|
+
var import_use_signal = require("@usefy/use-signal");
|
|
50
52
|
var import_use_toggle = require("@usefy/use-toggle");
|
|
51
53
|
var import_use_debounce = require("@usefy/use-debounce");
|
|
52
54
|
var import_use_debounce_callback = require("@usefy/use-debounce-callback");
|
|
@@ -80,6 +82,7 @@ var import_use_intersection_observer = require("@usefy/use-intersection-observer
|
|
|
80
82
|
useLocalStorage,
|
|
81
83
|
useOnClickOutside,
|
|
82
84
|
useSessionStorage,
|
|
85
|
+
useSignal,
|
|
83
86
|
useThrottle,
|
|
84
87
|
useThrottleCallback,
|
|
85
88
|
useTimer,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["// Re-export all hooks from individual packages\n\n// useClickAnyWhere\nexport {\n useClickAnyWhere,\n type UseClickAnyWhereOptions,\n type ClickAnyWhereHandler,\n} from \"@usefy/use-click-any-where\";\n\n// useCopyToClipboard\nexport {\n useCopyToClipboard,\n type UseCopyToClipboardOptions,\n type UseCopyToClipboardReturn,\n type CopyFn,\n} from \"@usefy/use-copy-to-clipboard\";\n\n// useCounter\nexport { useCounter } from \"@usefy/use-counter\";\n\n// useToggle\nexport { useToggle, type UseToggleReturn } from \"@usefy/use-toggle\";\n\n// useDebounce\nexport { useDebounce, type UseDebounceOptions } from \"@usefy/use-debounce\";\n\n// useDebounceCallback\nexport {\n useDebounceCallback,\n type UseDebounceCallbackOptions,\n type DebouncedFunction,\n} from \"@usefy/use-debounce-callback\";\n\n// useThrottle\nexport { useThrottle, type UseThrottleOptions } from \"@usefy/use-throttle\";\n\n// useThrottleCallback\nexport {\n useThrottleCallback,\n type UseThrottleCallbackOptions,\n type ThrottledFunction,\n} from \"@usefy/use-throttle-callback\";\n\n// useLocalStorage\nexport {\n useLocalStorage,\n type UseLocalStorageOptions,\n type UseLocalStorageReturn,\n type InitialValue,\n} from \"@usefy/use-local-storage\";\n\n// useSessionStorage\nexport {\n useSessionStorage,\n type UseSessionStorageOptions,\n type UseSessionStorageReturn,\n type InitialValue as SessionStorageInitialValue,\n} from \"@usefy/use-session-storage\";\n\n// useOnClickOutside\nexport {\n useOnClickOutside,\n type UseOnClickOutsideOptions,\n type OnClickOutsideHandler,\n type ClickOutsideEvent,\n type RefTarget,\n type MouseEventType,\n type TouchEventType,\n} from \"@usefy/use-on-click-outside\";\n\n// useEventListener\nexport {\n useEventListener,\n type UseEventListenerOptions,\n type EventTargetType,\n} from \"@usefy/use-event-listener\";\n\n// useTimer\nexport {\n useTimer,\n type TimeUnit,\n type TimeFormat,\n type UseTimerOptions,\n type UseTimerReturn,\n} from \"@usefy/use-timer\";\n\n// useUnmount\nexport { useUnmount, type UseUnmountOptions } from \"@usefy/use-unmount\";\n\n// useInit\nexport {\n useInit,\n type UseInitOptions,\n type UseInitResult,\n} from \"@usefy/use-init\";\n\n// useGeolocation\nexport {\n useGeolocation,\n haversineDistance,\n calculateBearing,\n type GeoCoordinates,\n type GeoPosition,\n type GeolocationError,\n type GeolocationErrorCode,\n type PermissionState,\n type UseGeolocationOptions,\n type UseGeolocationReturn,\n} from \"@usefy/use-geolocation\";\n\n// useIntersectionObserver\nexport {\n useIntersectionObserver,\n isIntersectionObserverSupported,\n toIntersectionEntry,\n createInitialEntry,\n type UseIntersectionObserverOptions,\n type UseIntersectionObserverReturn,\n type IntersectionEntry,\n type OnChangeCallback,\n} from \"@usefy/use-intersection-observer\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,iCAIO;AAGP,mCAKO;AAGP,yBAA2B;AAG3B,wBAAgD;AAGhD,0BAAqD;AAGrD,mCAIO;AAGP,0BAAqD;AAGrD,mCAIO;AAGP,+BAKO;AAGP,iCAKO;AAGP,kCAQO;AAGP,gCAIO;AAGP,uBAMO;AAGP,yBAAmD;AAGnD,sBAIO;AAGP,6BAWO;AAGP,uCASO;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["// Re-export all hooks from individual packages\n\n// useClickAnyWhere\nexport {\n useClickAnyWhere,\n type UseClickAnyWhereOptions,\n type ClickAnyWhereHandler,\n} from \"@usefy/use-click-any-where\";\n\n// useCopyToClipboard\nexport {\n useCopyToClipboard,\n type UseCopyToClipboardOptions,\n type UseCopyToClipboardReturn,\n type CopyFn,\n} from \"@usefy/use-copy-to-clipboard\";\n\n// useCounter\nexport { useCounter } from \"@usefy/use-counter\";\n\n// useSignal\nexport {\n useSignal,\n type UseSignalReturn,\n type SignalOptions,\n type SignalInfo,\n} from \"@usefy/use-signal\";\n\n// useToggle\nexport { useToggle, type UseToggleReturn } from \"@usefy/use-toggle\";\n\n// useDebounce\nexport { useDebounce, type UseDebounceOptions } from \"@usefy/use-debounce\";\n\n// useDebounceCallback\nexport {\n useDebounceCallback,\n type UseDebounceCallbackOptions,\n type DebouncedFunction,\n} from \"@usefy/use-debounce-callback\";\n\n// useThrottle\nexport { useThrottle, type UseThrottleOptions } from \"@usefy/use-throttle\";\n\n// useThrottleCallback\nexport {\n useThrottleCallback,\n type UseThrottleCallbackOptions,\n type ThrottledFunction,\n} from \"@usefy/use-throttle-callback\";\n\n// useLocalStorage\nexport {\n useLocalStorage,\n type UseLocalStorageOptions,\n type UseLocalStorageReturn,\n type InitialValue,\n} from \"@usefy/use-local-storage\";\n\n// useSessionStorage\nexport {\n useSessionStorage,\n type UseSessionStorageOptions,\n type UseSessionStorageReturn,\n type InitialValue as SessionStorageInitialValue,\n} from \"@usefy/use-session-storage\";\n\n// useOnClickOutside\nexport {\n useOnClickOutside,\n type UseOnClickOutsideOptions,\n type OnClickOutsideHandler,\n type ClickOutsideEvent,\n type RefTarget,\n type MouseEventType,\n type TouchEventType,\n} from \"@usefy/use-on-click-outside\";\n\n// useEventListener\nexport {\n useEventListener,\n type UseEventListenerOptions,\n type EventTargetType,\n} from \"@usefy/use-event-listener\";\n\n// useTimer\nexport {\n useTimer,\n type TimeUnit,\n type TimeFormat,\n type UseTimerOptions,\n type UseTimerReturn,\n} from \"@usefy/use-timer\";\n\n// useUnmount\nexport { useUnmount, type UseUnmountOptions } from \"@usefy/use-unmount\";\n\n// useInit\nexport {\n useInit,\n type UseInitOptions,\n type UseInitResult,\n} from \"@usefy/use-init\";\n\n// useGeolocation\nexport {\n useGeolocation,\n haversineDistance,\n calculateBearing,\n type GeoCoordinates,\n type GeoPosition,\n type GeolocationError,\n type GeolocationErrorCode,\n type PermissionState,\n type UseGeolocationOptions,\n type UseGeolocationReturn,\n} from \"@usefy/use-geolocation\";\n\n// useIntersectionObserver\nexport {\n useIntersectionObserver,\n isIntersectionObserverSupported,\n toIntersectionEntry,\n createInitialEntry,\n type UseIntersectionObserverOptions,\n type UseIntersectionObserverReturn,\n type IntersectionEntry,\n type OnChangeCallback,\n} from \"@usefy/use-intersection-observer\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,iCAIO;AAGP,mCAKO;AAGP,yBAA2B;AAG3B,wBAKO;AAGP,wBAAgD;AAGhD,0BAAqD;AAGrD,mCAIO;AAGP,0BAAqD;AAGrD,mCAIO;AAGP,+BAKO;AAGP,iCAKO;AAGP,kCAQO;AAGP,gCAIO;AAGP,uBAMO;AAGP,yBAAmD;AAGnD,sBAIO;AAGP,6BAWO;AAGP,uCASO;","names":[]}
|
package/dist/index.mjs
CHANGED
|
@@ -6,6 +6,9 @@ import {
|
|
|
6
6
|
useCopyToClipboard
|
|
7
7
|
} from "@usefy/use-copy-to-clipboard";
|
|
8
8
|
import { useCounter } from "@usefy/use-counter";
|
|
9
|
+
import {
|
|
10
|
+
useSignal
|
|
11
|
+
} from "@usefy/use-signal";
|
|
9
12
|
import { useToggle } from "@usefy/use-toggle";
|
|
10
13
|
import { useDebounce } from "@usefy/use-debounce";
|
|
11
14
|
import {
|
|
@@ -63,6 +66,7 @@ export {
|
|
|
63
66
|
useLocalStorage,
|
|
64
67
|
useOnClickOutside,
|
|
65
68
|
useSessionStorage,
|
|
69
|
+
useSignal,
|
|
66
70
|
useThrottle,
|
|
67
71
|
useThrottleCallback,
|
|
68
72
|
useTimer,
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["// Re-export all hooks from individual packages\n\n// useClickAnyWhere\nexport {\n useClickAnyWhere,\n type UseClickAnyWhereOptions,\n type ClickAnyWhereHandler,\n} from \"@usefy/use-click-any-where\";\n\n// useCopyToClipboard\nexport {\n useCopyToClipboard,\n type UseCopyToClipboardOptions,\n type UseCopyToClipboardReturn,\n type CopyFn,\n} from \"@usefy/use-copy-to-clipboard\";\n\n// useCounter\nexport { useCounter } from \"@usefy/use-counter\";\n\n// useToggle\nexport { useToggle, type UseToggleReturn } from \"@usefy/use-toggle\";\n\n// useDebounce\nexport { useDebounce, type UseDebounceOptions } from \"@usefy/use-debounce\";\n\n// useDebounceCallback\nexport {\n useDebounceCallback,\n type UseDebounceCallbackOptions,\n type DebouncedFunction,\n} from \"@usefy/use-debounce-callback\";\n\n// useThrottle\nexport { useThrottle, type UseThrottleOptions } from \"@usefy/use-throttle\";\n\n// useThrottleCallback\nexport {\n useThrottleCallback,\n type UseThrottleCallbackOptions,\n type ThrottledFunction,\n} from \"@usefy/use-throttle-callback\";\n\n// useLocalStorage\nexport {\n useLocalStorage,\n type UseLocalStorageOptions,\n type UseLocalStorageReturn,\n type InitialValue,\n} from \"@usefy/use-local-storage\";\n\n// useSessionStorage\nexport {\n useSessionStorage,\n type UseSessionStorageOptions,\n type UseSessionStorageReturn,\n type InitialValue as SessionStorageInitialValue,\n} from \"@usefy/use-session-storage\";\n\n// useOnClickOutside\nexport {\n useOnClickOutside,\n type UseOnClickOutsideOptions,\n type OnClickOutsideHandler,\n type ClickOutsideEvent,\n type RefTarget,\n type MouseEventType,\n type TouchEventType,\n} from \"@usefy/use-on-click-outside\";\n\n// useEventListener\nexport {\n useEventListener,\n type UseEventListenerOptions,\n type EventTargetType,\n} from \"@usefy/use-event-listener\";\n\n// useTimer\nexport {\n useTimer,\n type TimeUnit,\n type TimeFormat,\n type UseTimerOptions,\n type UseTimerReturn,\n} from \"@usefy/use-timer\";\n\n// useUnmount\nexport { useUnmount, type UseUnmountOptions } from \"@usefy/use-unmount\";\n\n// useInit\nexport {\n useInit,\n type UseInitOptions,\n type UseInitResult,\n} from \"@usefy/use-init\";\n\n// useGeolocation\nexport {\n useGeolocation,\n haversineDistance,\n calculateBearing,\n type GeoCoordinates,\n type GeoPosition,\n type GeolocationError,\n type GeolocationErrorCode,\n type PermissionState,\n type UseGeolocationOptions,\n type UseGeolocationReturn,\n} from \"@usefy/use-geolocation\";\n\n// useIntersectionObserver\nexport {\n useIntersectionObserver,\n isIntersectionObserverSupported,\n toIntersectionEntry,\n createInitialEntry,\n type UseIntersectionObserverOptions,\n type UseIntersectionObserverReturn,\n type IntersectionEntry,\n type OnChangeCallback,\n} from \"@usefy/use-intersection-observer\";\n"],"mappings":";AAGA;AAAA,EACE;AAAA,OAGK;AAGP;AAAA,EACE;AAAA,OAIK;AAGP,SAAS,kBAAkB;AAG3B,SAAS,iBAAuC;AAGhD,SAAS,mBAA4C;AAGrD;AAAA,EACE;AAAA,OAGK;AAGP,SAAS,mBAA4C;AAGrD;AAAA,EACE;AAAA,OAGK;AAGP;AAAA,EACE;AAAA,OAIK;AAGP;AAAA,EACE;AAAA,OAIK;AAGP;AAAA,EACE;AAAA,OAOK;AAGP;AAAA,EACE;AAAA,OAGK;AAGP;AAAA,EACE;AAAA,OAKK;AAGP,SAAS,kBAA0C;AAGnD;AAAA,EACE;AAAA,OAGK;AAGP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAQK;AAGP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAKK;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["// Re-export all hooks from individual packages\n\n// useClickAnyWhere\nexport {\n useClickAnyWhere,\n type UseClickAnyWhereOptions,\n type ClickAnyWhereHandler,\n} from \"@usefy/use-click-any-where\";\n\n// useCopyToClipboard\nexport {\n useCopyToClipboard,\n type UseCopyToClipboardOptions,\n type UseCopyToClipboardReturn,\n type CopyFn,\n} from \"@usefy/use-copy-to-clipboard\";\n\n// useCounter\nexport { useCounter } from \"@usefy/use-counter\";\n\n// useSignal\nexport {\n useSignal,\n type UseSignalReturn,\n type SignalOptions,\n type SignalInfo,\n} from \"@usefy/use-signal\";\n\n// useToggle\nexport { useToggle, type UseToggleReturn } from \"@usefy/use-toggle\";\n\n// useDebounce\nexport { useDebounce, type UseDebounceOptions } from \"@usefy/use-debounce\";\n\n// useDebounceCallback\nexport {\n useDebounceCallback,\n type UseDebounceCallbackOptions,\n type DebouncedFunction,\n} from \"@usefy/use-debounce-callback\";\n\n// useThrottle\nexport { useThrottle, type UseThrottleOptions } from \"@usefy/use-throttle\";\n\n// useThrottleCallback\nexport {\n useThrottleCallback,\n type UseThrottleCallbackOptions,\n type ThrottledFunction,\n} from \"@usefy/use-throttle-callback\";\n\n// useLocalStorage\nexport {\n useLocalStorage,\n type UseLocalStorageOptions,\n type UseLocalStorageReturn,\n type InitialValue,\n} from \"@usefy/use-local-storage\";\n\n// useSessionStorage\nexport {\n useSessionStorage,\n type UseSessionStorageOptions,\n type UseSessionStorageReturn,\n type InitialValue as SessionStorageInitialValue,\n} from \"@usefy/use-session-storage\";\n\n// useOnClickOutside\nexport {\n useOnClickOutside,\n type UseOnClickOutsideOptions,\n type OnClickOutsideHandler,\n type ClickOutsideEvent,\n type RefTarget,\n type MouseEventType,\n type TouchEventType,\n} from \"@usefy/use-on-click-outside\";\n\n// useEventListener\nexport {\n useEventListener,\n type UseEventListenerOptions,\n type EventTargetType,\n} from \"@usefy/use-event-listener\";\n\n// useTimer\nexport {\n useTimer,\n type TimeUnit,\n type TimeFormat,\n type UseTimerOptions,\n type UseTimerReturn,\n} from \"@usefy/use-timer\";\n\n// useUnmount\nexport { useUnmount, type UseUnmountOptions } from \"@usefy/use-unmount\";\n\n// useInit\nexport {\n useInit,\n type UseInitOptions,\n type UseInitResult,\n} from \"@usefy/use-init\";\n\n// useGeolocation\nexport {\n useGeolocation,\n haversineDistance,\n calculateBearing,\n type GeoCoordinates,\n type GeoPosition,\n type GeolocationError,\n type GeolocationErrorCode,\n type PermissionState,\n type UseGeolocationOptions,\n type UseGeolocationReturn,\n} from \"@usefy/use-geolocation\";\n\n// useIntersectionObserver\nexport {\n useIntersectionObserver,\n isIntersectionObserverSupported,\n toIntersectionEntry,\n createInitialEntry,\n type UseIntersectionObserverOptions,\n type UseIntersectionObserverReturn,\n type IntersectionEntry,\n type OnChangeCallback,\n} from \"@usefy/use-intersection-observer\";\n"],"mappings":";AAGA;AAAA,EACE;AAAA,OAGK;AAGP;AAAA,EACE;AAAA,OAIK;AAGP,SAAS,kBAAkB;AAG3B;AAAA,EACE;AAAA,OAIK;AAGP,SAAS,iBAAuC;AAGhD,SAAS,mBAA4C;AAGrD;AAAA,EACE;AAAA,OAGK;AAGP,SAAS,mBAA4C;AAGrD;AAAA,EACE;AAAA,OAGK;AAGP;AAAA,EACE;AAAA,OAIK;AAGP;AAAA,EACE;AAAA,OAIK;AAGP;AAAA,EACE;AAAA,OAOK;AAGP;AAAA,EACE;AAAA,OAGK;AAGP;AAAA,EACE;AAAA,OAKK;AAGP,SAAS,kBAA0C;AAGnD;AAAA,EACE;AAAA,OAGK;AAGP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAQK;AAGP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAKK;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@usefy/usefy",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.31",
|
|
4
4
|
"description": "A collection of useful React hooks",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -17,23 +17,24 @@
|
|
|
17
17
|
],
|
|
18
18
|
"sideEffects": false,
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@usefy/use-click-any-where": "0.0.
|
|
21
|
-
"@usefy/use-copy-to-clipboard": "0.0.
|
|
22
|
-
"@usefy/use-counter": "0.0.
|
|
23
|
-
"@usefy/use-
|
|
24
|
-
"@usefy/use-
|
|
25
|
-
"@usefy/use-debounce
|
|
26
|
-
"@usefy/use-
|
|
27
|
-
"@usefy/use-throttle
|
|
28
|
-
"@usefy/use-
|
|
29
|
-
"@usefy/use-
|
|
30
|
-
"@usefy/use-
|
|
31
|
-
"@usefy/use-
|
|
32
|
-
"@usefy/use-timer": "0.0.
|
|
33
|
-
"@usefy/use-unmount": "0.0.
|
|
34
|
-
"@usefy/use-init": "0.0.
|
|
35
|
-
"@usefy/use-geolocation": "0.0.
|
|
36
|
-
"@usefy/use-
|
|
20
|
+
"@usefy/use-click-any-where": "0.0.31",
|
|
21
|
+
"@usefy/use-copy-to-clipboard": "0.0.31",
|
|
22
|
+
"@usefy/use-counter": "0.0.31",
|
|
23
|
+
"@usefy/use-signal": "0.0.31",
|
|
24
|
+
"@usefy/use-toggle": "0.0.31",
|
|
25
|
+
"@usefy/use-debounce": "0.0.31",
|
|
26
|
+
"@usefy/use-debounce-callback": "0.0.31",
|
|
27
|
+
"@usefy/use-throttle": "0.0.31",
|
|
28
|
+
"@usefy/use-throttle-callback": "0.0.31",
|
|
29
|
+
"@usefy/use-local-storage": "0.0.31",
|
|
30
|
+
"@usefy/use-session-storage": "0.0.31",
|
|
31
|
+
"@usefy/use-on-click-outside": "0.0.31",
|
|
32
|
+
"@usefy/use-timer": "0.0.31",
|
|
33
|
+
"@usefy/use-unmount": "0.0.31",
|
|
34
|
+
"@usefy/use-init": "0.0.31",
|
|
35
|
+
"@usefy/use-geolocation": "0.0.31",
|
|
36
|
+
"@usefy/use-event-listener": "0.0.31",
|
|
37
|
+
"@usefy/use-intersection-observer": "0.0.31"
|
|
37
38
|
},
|
|
38
39
|
"peerDependencies": {
|
|
39
40
|
"react": "^18.0.0 || ^19.0.0"
|