@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.
Files changed (3) hide show
  1. package/dist/cjs.js +95 -12
  2. package/dist/es.js +90 -11
  3. 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 documentEventsManager = typeof document !== 'undefined' ? new EventsManager__default["default"](document) : null;
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 windowEventsManager = typeof window !== 'undefined' ? new EventsManager__default["default"](window) : null;
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 (windowEventsManager !== null && callback !== null) {
437
- windowEventsManager.subscribe(event, callback);
504
+ if (eventsManager !== null && callback !== null) {
505
+ eventsManager.subscribe(event, callback);
438
506
  }
439
507
 
440
508
  return function () {
441
- if (windowEventsManager !== null && callback !== null) {
442
- windowEventsManager.unsubscribe(event, callback);
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 = (typeof keyMap[key] === 'function' ? keyMap[key] : (keyMap[key] || {}).down) || null;
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 = (typeof keyMap[key] !== 'undefined' && typeof keyMap[key] !== 'function' ? (keyMap[key] || {}).up : null) || null;
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 = 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 = 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 { useState, useRef, useEffect, useMemo, useCallback } from 'react';
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 documentEventsManager = typeof document !== 'undefined' ? new EventsManager(document) : null;
471
+ var eventsManager$1 = typeof document !== 'undefined' ? new EventsManager(document) : null;
419
472
 
420
- var windowEventsManager = typeof window !== 'undefined' ? new EventsManager(window) : null;
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 (windowEventsManager !== null && callback !== null) {
425
- windowEventsManager.subscribe(event, callback);
491
+ if (eventsManager !== null && callback !== null) {
492
+ eventsManager.subscribe(event, callback);
426
493
  }
427
494
 
428
495
  return function () {
429
- if (windowEventsManager !== null && callback !== null) {
430
- windowEventsManager.unsubscribe(event, callback);
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 = (typeof keyMap[key] === 'function' ? keyMap[key] : (keyMap[key] || {}).down) || null;
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 = (typeof keyMap[key] !== 'undefined' && typeof keyMap[key] !== 'function' ? (keyMap[key] || {}).up : null) || null;
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.24",
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": "0a4dfa874995de462b43cf1e0f215b3fb40e0a99",
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
  }