@folklore/hooks 0.0.26 → 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 +57 -2
  2. package/dist/es.js +56 -3
  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,
@@ -1734,6 +1788,7 @@ function useWindowSize() {
1734
1788
 
1735
1789
  exports.documentEventsManager = eventsManager$1;
1736
1790
  exports.getObserver = getObserver;
1791
+ exports.useCounter = useCounter;
1737
1792
  exports.useDailymotionPlayer = useDailymotionPlayer;
1738
1793
  exports.useDocumentEvent = useDocumentEvent;
1739
1794
  exports.useIntersectionObserver = useIntersectionObserver;
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,
@@ -1720,4 +1773,4 @@ function useWindowSize() {
1720
1773
  return size;
1721
1774
  }
1722
1775
 
1723
- export { eventsManager$1 as documentEventsManager, getObserver, useDailymotionPlayer, useDocumentEvent, useIntersectionObserver, useKeyboard, useNativeVideoPlayer, useObserver, usePlayerCurrentTime, useResizeObserver, useVideoPlayer, useVimeoPlayer, useWindowEvent, useWindowScroll, useWindowSize, useYouTubePlayer, eventsManager as 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.26",
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": "318ecab2c776c3267abf57bffef8012cfcd937f5",
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
  }