@react-hive/honey-layout 10.7.0 → 10.8.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/dist/hooks/use-honey-raf-loop.d.ts +26 -7
- package/dist/hooks/use-honey-timer.d.ts +9 -6
- package/dist/index.cjs +5 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.dev.cjs +41 -43
- package/dist/index.dev.cjs.map +1 -1
- package/dist/index.mjs +17 -17
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.dev.cjs
CHANGED
|
@@ -14194,7 +14194,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
14194
14194
|
*
|
|
14195
14195
|
* Features:
|
|
14196
14196
|
* - Explicit RAF lifecycle control (`start` / `stop`)
|
|
14197
|
-
* - Delta time
|
|
14197
|
+
* - Delta time calculation with frame clamping
|
|
14198
14198
|
* - Automatic cleanup on unmounting
|
|
14199
14199
|
* - Conservative handling of tab visibility changes (mobile-safe)
|
|
14200
14200
|
* - Safe error handling (stops loop on exception)
|
|
@@ -14248,7 +14248,7 @@ onError, } = {}) => {
|
|
|
14248
14248
|
const onFrameRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(onFrame);
|
|
14249
14249
|
// Always keep the latest callback without restarting RAF
|
|
14250
14250
|
onFrameRef.current = onFrame;
|
|
14251
|
-
const [
|
|
14251
|
+
const [isRunning, setIsRunning] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
|
|
14252
14252
|
const loop = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(timeMs => {
|
|
14253
14253
|
if (lastTimeMsRef.current === null) {
|
|
14254
14254
|
lastTimeMsRef.current = timeMs;
|
|
@@ -14261,57 +14261,57 @@ onError, } = {}) => {
|
|
|
14261
14261
|
}
|
|
14262
14262
|
try {
|
|
14263
14263
|
onFrameRef.current(deltaTimeMs, {
|
|
14264
|
-
|
|
14264
|
+
stop,
|
|
14265
14265
|
});
|
|
14266
14266
|
rafIdRef.current = requestAnimationFrame(loop);
|
|
14267
14267
|
}
|
|
14268
14268
|
catch (e) {
|
|
14269
|
-
|
|
14269
|
+
stop();
|
|
14270
14270
|
onError?.(e);
|
|
14271
14271
|
}
|
|
14272
14272
|
}, [maxDeltaMs, onError]);
|
|
14273
|
-
const
|
|
14273
|
+
const start = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => {
|
|
14274
14274
|
if (rafIdRef.current !== null) {
|
|
14275
14275
|
return;
|
|
14276
14276
|
}
|
|
14277
14277
|
lastTimeMsRef.current = null;
|
|
14278
|
-
|
|
14278
|
+
setIsRunning(true);
|
|
14279
14279
|
rafIdRef.current = requestAnimationFrame(loop);
|
|
14280
14280
|
}, [loop]);
|
|
14281
|
-
const
|
|
14281
|
+
const stop = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => {
|
|
14282
14282
|
if (rafIdRef.current === null) {
|
|
14283
14283
|
return;
|
|
14284
14284
|
}
|
|
14285
14285
|
cancelAnimationFrame(rafIdRef.current);
|
|
14286
14286
|
rafIdRef.current = null;
|
|
14287
14287
|
lastTimeMsRef.current = null;
|
|
14288
|
-
|
|
14288
|
+
setIsRunning(false);
|
|
14289
14289
|
}, []);
|
|
14290
14290
|
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
|
|
14291
14291
|
if (autoStart) {
|
|
14292
|
-
|
|
14292
|
+
start();
|
|
14293
14293
|
}
|
|
14294
|
-
return
|
|
14295
|
-
}, [autoStart,
|
|
14294
|
+
return stop;
|
|
14295
|
+
}, [autoStart, start, stop]);
|
|
14296
14296
|
// Pause when a tab is hidden (important for mobile)
|
|
14297
14297
|
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
|
|
14298
14298
|
const onVisibilityChange = () => {
|
|
14299
14299
|
if (document.hidden) {
|
|
14300
|
-
|
|
14300
|
+
stop();
|
|
14301
14301
|
}
|
|
14302
14302
|
else if (resumeOnVisibility && autoStart) {
|
|
14303
|
-
|
|
14303
|
+
start();
|
|
14304
14304
|
}
|
|
14305
14305
|
};
|
|
14306
14306
|
document.addEventListener('visibilitychange', onVisibilityChange);
|
|
14307
14307
|
return () => {
|
|
14308
14308
|
document.removeEventListener('visibilitychange', onVisibilityChange);
|
|
14309
14309
|
};
|
|
14310
|
-
}, [autoStart, resumeOnVisibility,
|
|
14310
|
+
}, [autoStart, resumeOnVisibility, start, stop]);
|
|
14311
14311
|
return {
|
|
14312
|
-
|
|
14313
|
-
|
|
14314
|
-
|
|
14312
|
+
isRunning,
|
|
14313
|
+
start,
|
|
14314
|
+
stop,
|
|
14315
14315
|
};
|
|
14316
14316
|
};
|
|
14317
14317
|
|
|
@@ -14678,7 +14678,7 @@ const useHoneyTimer = ({ initialTimeMs, targetTimeMs = 0, mode = 'countdown', au
|
|
|
14678
14678
|
* - Detects completion and stops the RAF loop
|
|
14679
14679
|
* - Updates React state with the derived value
|
|
14680
14680
|
*/
|
|
14681
|
-
const onFrameHandler = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((deltaTimeMs, {
|
|
14681
|
+
const onFrameHandler = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((deltaTimeMs, { stop }) => {
|
|
14682
14682
|
let nextTime = mode === 'countdown' ? timeRef.current - deltaTimeMs : timeRef.current + deltaTimeMs;
|
|
14683
14683
|
let finished = false;
|
|
14684
14684
|
if (mode === 'countdown') {
|
|
@@ -14694,43 +14694,41 @@ const useHoneyTimer = ({ initialTimeMs, targetTimeMs = 0, mode = 'countdown', au
|
|
|
14694
14694
|
timeRef.current = nextTime;
|
|
14695
14695
|
setTimeMs(nextTime);
|
|
14696
14696
|
if (finished) {
|
|
14697
|
-
|
|
14697
|
+
stop();
|
|
14698
14698
|
onEndRef.current?.();
|
|
14699
14699
|
}
|
|
14700
14700
|
}, [mode, targetTimeMs]);
|
|
14701
|
-
const
|
|
14702
|
-
|
|
14703
|
-
});
|
|
14704
|
-
const startTimer = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => {
|
|
14701
|
+
const rafLoop = (0,_use_honey_raf_loop__WEBPACK_IMPORTED_MODULE_1__.useHoneyRafLoop)(onFrameHandler);
|
|
14702
|
+
const start = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => {
|
|
14705
14703
|
timeRef.current = initialTimeMs;
|
|
14706
14704
|
setTimeMs(initialTimeMs);
|
|
14707
|
-
|
|
14708
|
-
}, [initialTimeMs,
|
|
14709
|
-
const
|
|
14710
|
-
|
|
14711
|
-
}, [
|
|
14712
|
-
const
|
|
14713
|
-
if (!
|
|
14714
|
-
|
|
14705
|
+
rafLoop.start();
|
|
14706
|
+
}, [initialTimeMs, rafLoop.start]);
|
|
14707
|
+
const pause = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => {
|
|
14708
|
+
rafLoop.stop();
|
|
14709
|
+
}, [rafLoop.stop]);
|
|
14710
|
+
const resume = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => {
|
|
14711
|
+
if (!rafLoop.isRunning) {
|
|
14712
|
+
rafLoop.start();
|
|
14715
14713
|
}
|
|
14716
|
-
}, [
|
|
14717
|
-
const
|
|
14718
|
-
|
|
14714
|
+
}, [rafLoop.isRunning, rafLoop.start]);
|
|
14715
|
+
const reset = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((nextTimeMs = initialTimeMs) => {
|
|
14716
|
+
rafLoop.stop();
|
|
14719
14717
|
timeRef.current = nextTimeMs;
|
|
14720
14718
|
setTimeMs(nextTimeMs);
|
|
14721
|
-
}, [initialTimeMs,
|
|
14719
|
+
}, [initialTimeMs, rafLoop.stop]);
|
|
14722
14720
|
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
|
|
14723
14721
|
if (autoStart) {
|
|
14724
|
-
|
|
14722
|
+
start();
|
|
14725
14723
|
}
|
|
14726
|
-
}, [autoStart,
|
|
14724
|
+
}, [autoStart, start]);
|
|
14727
14725
|
return {
|
|
14728
|
-
|
|
14729
|
-
|
|
14730
|
-
|
|
14731
|
-
|
|
14732
|
-
|
|
14733
|
-
|
|
14726
|
+
timeMs,
|
|
14727
|
+
isRunning: rafLoop.isRunning,
|
|
14728
|
+
start,
|
|
14729
|
+
pause,
|
|
14730
|
+
resume,
|
|
14731
|
+
reset,
|
|
14734
14732
|
};
|
|
14735
14733
|
};
|
|
14736
14734
|
|