@folklore/hooks 0.0.24 → 0.0.27
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/cjs.js +95 -12
- package/dist/es.js +90 -11
- package/package.json +4 -3
package/dist/cjs.js
CHANGED
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
6
5
|
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
|
6
|
+
var raf = require('raf');
|
|
7
7
|
var react = require('react');
|
|
8
|
+
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
8
9
|
var services = require('@folklore/services');
|
|
9
10
|
var createDebug = require('debug');
|
|
10
11
|
var EventsManager = require('@folklore/events');
|
|
@@ -12,12 +13,65 @@ var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
|
|
|
12
13
|
|
|
13
14
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
14
15
|
|
|
15
|
-
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
|
|
16
16
|
var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
|
|
17
|
+
var raf__default = /*#__PURE__*/_interopDefaultLegacy(raf);
|
|
18
|
+
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
|
|
17
19
|
var createDebug__default = /*#__PURE__*/_interopDefaultLegacy(createDebug);
|
|
18
20
|
var EventsManager__default = /*#__PURE__*/_interopDefaultLegacy(EventsManager);
|
|
19
21
|
var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
|
|
20
22
|
|
|
23
|
+
function useCounter(desiredValue, _ref) {
|
|
24
|
+
var _ref$maxDuration = _ref.maxDuration,
|
|
25
|
+
maxDuration = _ref$maxDuration === void 0 ? 2000 : _ref$maxDuration,
|
|
26
|
+
_ref$speed = _ref.speed,
|
|
27
|
+
speed = _ref$speed === void 0 ? 1 / 10 : _ref$speed;
|
|
28
|
+
|
|
29
|
+
var _useState = react.useState(desiredValue),
|
|
30
|
+
_useState2 = _slicedToArray__default["default"](_useState, 2),
|
|
31
|
+
currentValue = _useState2[0],
|
|
32
|
+
setCurrentValue = _useState2[1];
|
|
33
|
+
|
|
34
|
+
react.useEffect(function () {
|
|
35
|
+
var animationFrame = null;
|
|
36
|
+
var startTime = null;
|
|
37
|
+
var duration = 0;
|
|
38
|
+
var canceled = false;
|
|
39
|
+
var startValue = currentValue;
|
|
40
|
+
var delta = desiredValue - startValue;
|
|
41
|
+
|
|
42
|
+
function loop() {
|
|
43
|
+
if (canceled) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
var currentTime = Date.now();
|
|
48
|
+
var elapsedTime = currentTime - startTime;
|
|
49
|
+
var progress = Math.min(elapsedTime / duration, 1);
|
|
50
|
+
var newValue = Math.round(startValue + progress * delta);
|
|
51
|
+
setCurrentValue(newValue);
|
|
52
|
+
|
|
53
|
+
if (newValue !== desiredValue) {
|
|
54
|
+
animationFrame = raf__default["default"](loop);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (delta !== 0) {
|
|
59
|
+
duration = Math.min(maxDuration, Math.abs(delta) * speed * 1000);
|
|
60
|
+
startTime = Date.now();
|
|
61
|
+
animationFrame = raf__default["default"](loop);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
return function () {
|
|
65
|
+
canceled = true;
|
|
66
|
+
|
|
67
|
+
if (animationFrame !== null) {
|
|
68
|
+
raf__default["default"].cancel(animationFrame);
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
}, [desiredValue]);
|
|
72
|
+
return currentValue;
|
|
73
|
+
}
|
|
74
|
+
|
|
21
75
|
function usePlayerCurrentTime(player) {
|
|
22
76
|
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
23
77
|
_ref$id = _ref.id,
|
|
@@ -427,19 +481,33 @@ var useDailymotionPlayer = function useDailymotionPlayer() {
|
|
|
427
481
|
}, metadata), playState);
|
|
428
482
|
};
|
|
429
483
|
|
|
430
|
-
var
|
|
484
|
+
var eventsManager$1 = typeof document !== 'undefined' ? new EventsManager__default["default"](document) : null;
|
|
485
|
+
|
|
486
|
+
var useDocumentEvent = function useDocumentEvent(event, callback) {
|
|
487
|
+
react.useEffect(function () {
|
|
488
|
+
if (eventsManager$1 !== null && callback !== null) {
|
|
489
|
+
eventsManager$1.subscribe(event, callback);
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
return function () {
|
|
493
|
+
if (eventsManager$1 !== null && callback !== null) {
|
|
494
|
+
eventsManager$1.unsubscribe(event, callback);
|
|
495
|
+
}
|
|
496
|
+
};
|
|
497
|
+
}, [event, callback]);
|
|
498
|
+
};
|
|
431
499
|
|
|
432
|
-
var
|
|
500
|
+
var eventsManager = typeof window !== 'undefined' ? new EventsManager__default["default"](window) : null;
|
|
433
501
|
|
|
434
502
|
var useWindowEvent = function useWindowEvent(event, callback) {
|
|
435
503
|
react.useEffect(function () {
|
|
436
|
-
if (
|
|
437
|
-
|
|
504
|
+
if (eventsManager !== null && callback !== null) {
|
|
505
|
+
eventsManager.subscribe(event, callback);
|
|
438
506
|
}
|
|
439
507
|
|
|
440
508
|
return function () {
|
|
441
|
-
if (
|
|
442
|
-
|
|
509
|
+
if (eventsManager !== null && callback !== null) {
|
|
510
|
+
eventsManager.unsubscribe(event, callback);
|
|
443
511
|
}
|
|
444
512
|
};
|
|
445
513
|
}, [event, callback]);
|
|
@@ -449,7 +517,13 @@ function useKeyboard() {
|
|
|
449
517
|
var keyMap = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
|
450
518
|
var onKeyDown = react.useCallback(function (event) {
|
|
451
519
|
var key = event.key;
|
|
452
|
-
var callback =
|
|
520
|
+
var callback = null;
|
|
521
|
+
|
|
522
|
+
if (typeof keyMap === 'function') {
|
|
523
|
+
callback = keyMap;
|
|
524
|
+
} else if (typeof keyMap[key] !== 'undefined') {
|
|
525
|
+
callback = typeof keyMap[key] === 'function' ? keyMap[key] : (keyMap[key] || {}).down || null;
|
|
526
|
+
}
|
|
453
527
|
|
|
454
528
|
if (callback !== null) {
|
|
455
529
|
callback(event);
|
|
@@ -457,7 +531,13 @@ function useKeyboard() {
|
|
|
457
531
|
}, [keyMap]);
|
|
458
532
|
var onKeyUp = react.useCallback(function (event) {
|
|
459
533
|
var key = event.key;
|
|
460
|
-
var callback =
|
|
534
|
+
var callback = null;
|
|
535
|
+
|
|
536
|
+
if (typeof keyMap === 'function') {
|
|
537
|
+
callback = keyMap;
|
|
538
|
+
} else if (typeof keyMap[key] !== 'undefined') {
|
|
539
|
+
callback = typeof keyMap[key] === 'function' ? keyMap[key] : (keyMap[key] || {}).up || null;
|
|
540
|
+
}
|
|
461
541
|
|
|
462
542
|
if (callback !== null) {
|
|
463
543
|
callback(event);
|
|
@@ -1706,9 +1786,11 @@ function useWindowSize() {
|
|
|
1706
1786
|
return size;
|
|
1707
1787
|
}
|
|
1708
1788
|
|
|
1709
|
-
exports.documentEventsManager =
|
|
1789
|
+
exports.documentEventsManager = eventsManager$1;
|
|
1710
1790
|
exports.getObserver = getObserver;
|
|
1791
|
+
exports.useCounter = useCounter;
|
|
1711
1792
|
exports.useDailymotionPlayer = useDailymotionPlayer;
|
|
1793
|
+
exports.useDocumentEvent = useDocumentEvent;
|
|
1712
1794
|
exports.useIntersectionObserver = useIntersectionObserver;
|
|
1713
1795
|
exports.useKeyboard = useKeyboard;
|
|
1714
1796
|
exports.useNativeVideoPlayer = useNativeVideoPlayer;
|
|
@@ -1717,7 +1799,8 @@ exports.usePlayerCurrentTime = usePlayerCurrentTime;
|
|
|
1717
1799
|
exports.useResizeObserver = useResizeObserver;
|
|
1718
1800
|
exports.useVideoPlayer = useVideoPlayer;
|
|
1719
1801
|
exports.useVimeoPlayer = useVimeoPlayer;
|
|
1802
|
+
exports.useWindowEvent = useWindowEvent;
|
|
1720
1803
|
exports.useWindowScroll = useWindowScroll;
|
|
1721
1804
|
exports.useWindowSize = useWindowSize;
|
|
1722
1805
|
exports.useYouTubePlayer = useYouTubePlayer;
|
|
1723
|
-
exports.windowEventsManager =
|
|
1806
|
+
exports.windowEventsManager = eventsManager;
|
package/dist/es.js
CHANGED
|
@@ -1,11 +1,64 @@
|
|
|
1
|
-
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
2
1
|
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
3
|
-
import
|
|
2
|
+
import raf from 'raf';
|
|
3
|
+
import { useState, useEffect, useRef, useMemo, useCallback } from 'react';
|
|
4
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
4
5
|
import { loadDailymotion, loadYouTube, loadVimeo } from '@folklore/services';
|
|
5
6
|
import createDebug from 'debug';
|
|
6
7
|
import EventsManager from '@folklore/events';
|
|
7
8
|
import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
|
|
8
9
|
|
|
10
|
+
function useCounter(desiredValue, _ref) {
|
|
11
|
+
var _ref$maxDuration = _ref.maxDuration,
|
|
12
|
+
maxDuration = _ref$maxDuration === void 0 ? 2000 : _ref$maxDuration,
|
|
13
|
+
_ref$speed = _ref.speed,
|
|
14
|
+
speed = _ref$speed === void 0 ? 1 / 10 : _ref$speed;
|
|
15
|
+
|
|
16
|
+
var _useState = useState(desiredValue),
|
|
17
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
18
|
+
currentValue = _useState2[0],
|
|
19
|
+
setCurrentValue = _useState2[1];
|
|
20
|
+
|
|
21
|
+
useEffect(function () {
|
|
22
|
+
var animationFrame = null;
|
|
23
|
+
var startTime = null;
|
|
24
|
+
var duration = 0;
|
|
25
|
+
var canceled = false;
|
|
26
|
+
var startValue = currentValue;
|
|
27
|
+
var delta = desiredValue - startValue;
|
|
28
|
+
|
|
29
|
+
function loop() {
|
|
30
|
+
if (canceled) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
var currentTime = Date.now();
|
|
35
|
+
var elapsedTime = currentTime - startTime;
|
|
36
|
+
var progress = Math.min(elapsedTime / duration, 1);
|
|
37
|
+
var newValue = Math.round(startValue + progress * delta);
|
|
38
|
+
setCurrentValue(newValue);
|
|
39
|
+
|
|
40
|
+
if (newValue !== desiredValue) {
|
|
41
|
+
animationFrame = raf(loop);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
if (delta !== 0) {
|
|
46
|
+
duration = Math.min(maxDuration, Math.abs(delta) * speed * 1000);
|
|
47
|
+
startTime = Date.now();
|
|
48
|
+
animationFrame = raf(loop);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return function () {
|
|
52
|
+
canceled = true;
|
|
53
|
+
|
|
54
|
+
if (animationFrame !== null) {
|
|
55
|
+
raf.cancel(animationFrame);
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
}, [desiredValue]);
|
|
59
|
+
return currentValue;
|
|
60
|
+
}
|
|
61
|
+
|
|
9
62
|
function usePlayerCurrentTime(player) {
|
|
10
63
|
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
11
64
|
_ref$id = _ref.id,
|
|
@@ -415,19 +468,33 @@ var useDailymotionPlayer = function useDailymotionPlayer() {
|
|
|
415
468
|
}, metadata), playState);
|
|
416
469
|
};
|
|
417
470
|
|
|
418
|
-
var
|
|
471
|
+
var eventsManager$1 = typeof document !== 'undefined' ? new EventsManager(document) : null;
|
|
419
472
|
|
|
420
|
-
var
|
|
473
|
+
var useDocumentEvent = function useDocumentEvent(event, callback) {
|
|
474
|
+
useEffect(function () {
|
|
475
|
+
if (eventsManager$1 !== null && callback !== null) {
|
|
476
|
+
eventsManager$1.subscribe(event, callback);
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
return function () {
|
|
480
|
+
if (eventsManager$1 !== null && callback !== null) {
|
|
481
|
+
eventsManager$1.unsubscribe(event, callback);
|
|
482
|
+
}
|
|
483
|
+
};
|
|
484
|
+
}, [event, callback]);
|
|
485
|
+
};
|
|
486
|
+
|
|
487
|
+
var eventsManager = typeof window !== 'undefined' ? new EventsManager(window) : null;
|
|
421
488
|
|
|
422
489
|
var useWindowEvent = function useWindowEvent(event, callback) {
|
|
423
490
|
useEffect(function () {
|
|
424
|
-
if (
|
|
425
|
-
|
|
491
|
+
if (eventsManager !== null && callback !== null) {
|
|
492
|
+
eventsManager.subscribe(event, callback);
|
|
426
493
|
}
|
|
427
494
|
|
|
428
495
|
return function () {
|
|
429
|
-
if (
|
|
430
|
-
|
|
496
|
+
if (eventsManager !== null && callback !== null) {
|
|
497
|
+
eventsManager.unsubscribe(event, callback);
|
|
431
498
|
}
|
|
432
499
|
};
|
|
433
500
|
}, [event, callback]);
|
|
@@ -437,7 +504,13 @@ function useKeyboard() {
|
|
|
437
504
|
var keyMap = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
|
438
505
|
var onKeyDown = useCallback(function (event) {
|
|
439
506
|
var key = event.key;
|
|
440
|
-
var callback =
|
|
507
|
+
var callback = null;
|
|
508
|
+
|
|
509
|
+
if (typeof keyMap === 'function') {
|
|
510
|
+
callback = keyMap;
|
|
511
|
+
} else if (typeof keyMap[key] !== 'undefined') {
|
|
512
|
+
callback = typeof keyMap[key] === 'function' ? keyMap[key] : (keyMap[key] || {}).down || null;
|
|
513
|
+
}
|
|
441
514
|
|
|
442
515
|
if (callback !== null) {
|
|
443
516
|
callback(event);
|
|
@@ -445,7 +518,13 @@ function useKeyboard() {
|
|
|
445
518
|
}, [keyMap]);
|
|
446
519
|
var onKeyUp = useCallback(function (event) {
|
|
447
520
|
var key = event.key;
|
|
448
|
-
var callback =
|
|
521
|
+
var callback = null;
|
|
522
|
+
|
|
523
|
+
if (typeof keyMap === 'function') {
|
|
524
|
+
callback = keyMap;
|
|
525
|
+
} else if (typeof keyMap[key] !== 'undefined') {
|
|
526
|
+
callback = typeof keyMap[key] === 'function' ? keyMap[key] : (keyMap[key] || {}).up || null;
|
|
527
|
+
}
|
|
449
528
|
|
|
450
529
|
if (callback !== null) {
|
|
451
530
|
callback(event);
|
|
@@ -1694,4 +1773,4 @@ function useWindowSize() {
|
|
|
1694
1773
|
return size;
|
|
1695
1774
|
}
|
|
1696
1775
|
|
|
1697
|
-
export { documentEventsManager, getObserver, useDailymotionPlayer, useIntersectionObserver, useKeyboard, useNativeVideoPlayer, useObserver, usePlayerCurrentTime, useResizeObserver, useVideoPlayer, useVimeoPlayer, useWindowScroll, useWindowSize, useYouTubePlayer, windowEventsManager };
|
|
1776
|
+
export { eventsManager$1 as documentEventsManager, getObserver, useCounter, useDailymotionPlayer, useDocumentEvent, useIntersectionObserver, useKeyboard, useNativeVideoPlayer, useObserver, usePlayerCurrentTime, useResizeObserver, useVideoPlayer, useVimeoPlayer, useWindowEvent, useWindowScroll, useWindowSize, useYouTubePlayer, eventsManager as windowEventsManager };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@folklore/hooks",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.27",
|
|
4
4
|
"description": "React hooks",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"javascript",
|
|
@@ -48,10 +48,11 @@
|
|
|
48
48
|
"publishConfig": {
|
|
49
49
|
"access": "public"
|
|
50
50
|
},
|
|
51
|
-
"gitHead": "
|
|
51
|
+
"gitHead": "47c23ae7e56301105e97a73f5d0f9d94373966b3",
|
|
52
52
|
"dependencies": {
|
|
53
53
|
"@folklore/events": "^0.0.3",
|
|
54
54
|
"@folklore/services": "^0.1.36",
|
|
55
|
-
"debug": "^4.3.4"
|
|
55
|
+
"debug": "^4.3.4",
|
|
56
|
+
"raf": "^3.4.1"
|
|
56
57
|
}
|
|
57
58
|
}
|