@folklore/hooks 0.0.23 → 0.0.26

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 +128 -10
  2. package/dist/es.js +123 -9
  3. package/package.json +2 -2
package/dist/cjs.js CHANGED
@@ -427,19 +427,33 @@ var useDailymotionPlayer = function useDailymotionPlayer() {
427
427
  }, metadata), playState);
428
428
  };
429
429
 
430
- var documentEventsManager = typeof document !== 'undefined' ? new EventsManager__default["default"](document) : null;
430
+ var eventsManager$1 = typeof document !== 'undefined' ? new EventsManager__default["default"](document) : null;
431
431
 
432
- var windowEventsManager = typeof window !== 'undefined' ? new EventsManager__default["default"](window) : null;
432
+ var useDocumentEvent = function useDocumentEvent(event, callback) {
433
+ react.useEffect(function () {
434
+ if (eventsManager$1 !== null && callback !== null) {
435
+ eventsManager$1.subscribe(event, callback);
436
+ }
437
+
438
+ return function () {
439
+ if (eventsManager$1 !== null && callback !== null) {
440
+ eventsManager$1.unsubscribe(event, callback);
441
+ }
442
+ };
443
+ }, [event, callback]);
444
+ };
445
+
446
+ var eventsManager = typeof window !== 'undefined' ? new EventsManager__default["default"](window) : null;
433
447
 
434
448
  var useWindowEvent = function useWindowEvent(event, callback) {
435
449
  react.useEffect(function () {
436
- if (windowEventsManager !== null && callback !== null) {
437
- windowEventsManager.subscribe(event, callback);
450
+ if (eventsManager !== null && callback !== null) {
451
+ eventsManager.subscribe(event, callback);
438
452
  }
439
453
 
440
454
  return function () {
441
- if (windowEventsManager !== null && callback !== null) {
442
- windowEventsManager.unsubscribe(event, callback);
455
+ if (eventsManager !== null && callback !== null) {
456
+ eventsManager.unsubscribe(event, callback);
443
457
  }
444
458
  };
445
459
  }, [event, callback]);
@@ -449,7 +463,13 @@ function useKeyboard() {
449
463
  var keyMap = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
450
464
  var onKeyDown = react.useCallback(function (event) {
451
465
  var key = event.key;
452
- var callback = (typeof keyMap[key] === 'function' ? keyMap[key] : (keyMap[key] || {}).down) || null;
466
+ var callback = null;
467
+
468
+ if (typeof keyMap === 'function') {
469
+ callback = keyMap;
470
+ } else if (typeof keyMap[key] !== 'undefined') {
471
+ callback = typeof keyMap[key] === 'function' ? keyMap[key] : (keyMap[key] || {}).down || null;
472
+ }
453
473
 
454
474
  if (callback !== null) {
455
475
  callback(event);
@@ -457,7 +477,13 @@ function useKeyboard() {
457
477
  }, [keyMap]);
458
478
  var onKeyUp = react.useCallback(function (event) {
459
479
  var key = event.key;
460
- var callback = (typeof keyMap[key] !== 'undefined' && typeof keyMap[key] !== 'function' ? (keyMap[key] || {}).up : null) || null;
480
+ var callback = null;
481
+
482
+ if (typeof keyMap === 'function') {
483
+ callback = keyMap;
484
+ } else if (typeof keyMap[key] !== 'undefined') {
485
+ callback = typeof keyMap[key] === 'function' ? keyMap[key] : (keyMap[key] || {}).up || null;
486
+ }
461
487
 
462
488
  if (callback !== null) {
463
489
  callback(event);
@@ -1618,9 +1644,98 @@ function useVideoPlayer(params) {
1618
1644
  return player;
1619
1645
  }
1620
1646
 
1621
- exports.documentEventsManager = documentEventsManager;
1647
+ var getWindowScroll = function getWindowScroll() {
1648
+ return {
1649
+ x: typeof window !== 'undefined' ? window.scrollX || 0 : 0,
1650
+ y: typeof window !== 'undefined' ? window.scrollY || 0 : 0
1651
+ };
1652
+ };
1653
+
1654
+ var currentScroll = getWindowScroll();
1655
+
1656
+ var useWindowScroll = function useWindowScroll() {
1657
+ var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1658
+ var _opts$onChange = opts.onChange,
1659
+ onChange = _opts$onChange === void 0 ? null : _opts$onChange;
1660
+
1661
+ var _useState = react.useState(currentScroll),
1662
+ _useState2 = _slicedToArray__default["default"](_useState, 2),
1663
+ scroll = _useState2[0],
1664
+ setScroll = _useState2[1];
1665
+
1666
+ var updateScroll = react.useCallback(function () {
1667
+ var newScroll = getWindowScroll();
1668
+
1669
+ if (currentScroll.x !== newScroll.x || currentScroll.y !== newScroll.y) {
1670
+ currentScroll.x = newScroll.x;
1671
+ currentScroll.y = newScroll.y;
1672
+ setScroll(newScroll);
1673
+ return newScroll;
1674
+ }
1675
+
1676
+ return null;
1677
+ }, [setScroll]);
1678
+ var onScroll = react.useCallback(function () {
1679
+ var newScroll = updateScroll();
1680
+
1681
+ if (newScroll !== null && onChange !== null) {
1682
+ onChange(newScroll);
1683
+ }
1684
+ }, [updateScroll, onChange]);
1685
+ useWindowEvent('scroll', onScroll);
1686
+ react.useEffect(function () {
1687
+ onScroll();
1688
+ }, []);
1689
+ return scroll;
1690
+ };
1691
+
1692
+ var getWindowSize = function getWindowSize() {
1693
+ return {
1694
+ width: typeof window !== 'undefined' ? window.innerWidth || 0 : 0,
1695
+ height: typeof window !== 'undefined' ? window.innerHeight || 0 : 0
1696
+ };
1697
+ };
1698
+ var currentSize = getWindowSize();
1699
+
1700
+ function useWindowSize() {
1701
+ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1702
+ _ref$onChange = _ref.onChange,
1703
+ onChange = _ref$onChange === void 0 ? null : _ref$onChange;
1704
+
1705
+ var _useState = react.useState(currentSize),
1706
+ _useState2 = _slicedToArray__default["default"](_useState, 2),
1707
+ size = _useState2[0],
1708
+ setSize = _useState2[1];
1709
+
1710
+ var updateSize = react.useCallback(function () {
1711
+ var newSize = getWindowSize();
1712
+
1713
+ if (currentSize.width !== newSize.width || currentSize.height !== newSize.height) {
1714
+ currentSize = newSize;
1715
+ setSize(newSize);
1716
+ return newSize;
1717
+ }
1718
+
1719
+ return null;
1720
+ }, [setSize]);
1721
+ var onResize = react.useCallback(function () {
1722
+ var newSize = updateSize();
1723
+
1724
+ if (newSize !== null && onChange !== null) {
1725
+ onChange(newSize);
1726
+ }
1727
+ }, [onChange]);
1728
+ useWindowEvent('resize', onResize);
1729
+ react.useEffect(function () {
1730
+ onResize();
1731
+ }, []);
1732
+ return size;
1733
+ }
1734
+
1735
+ exports.documentEventsManager = eventsManager$1;
1622
1736
  exports.getObserver = getObserver;
1623
1737
  exports.useDailymotionPlayer = useDailymotionPlayer;
1738
+ exports.useDocumentEvent = useDocumentEvent;
1624
1739
  exports.useIntersectionObserver = useIntersectionObserver;
1625
1740
  exports.useKeyboard = useKeyboard;
1626
1741
  exports.useNativeVideoPlayer = useNativeVideoPlayer;
@@ -1629,5 +1744,8 @@ exports.usePlayerCurrentTime = usePlayerCurrentTime;
1629
1744
  exports.useResizeObserver = useResizeObserver;
1630
1745
  exports.useVideoPlayer = useVideoPlayer;
1631
1746
  exports.useVimeoPlayer = useVimeoPlayer;
1747
+ exports.useWindowEvent = useWindowEvent;
1748
+ exports.useWindowScroll = useWindowScroll;
1749
+ exports.useWindowSize = useWindowSize;
1632
1750
  exports.useYouTubePlayer = useYouTubePlayer;
1633
- exports.windowEventsManager = windowEventsManager;
1751
+ exports.windowEventsManager = eventsManager;
package/dist/es.js CHANGED
@@ -415,19 +415,33 @@ var useDailymotionPlayer = function useDailymotionPlayer() {
415
415
  }, metadata), playState);
416
416
  };
417
417
 
418
- var documentEventsManager = typeof document !== 'undefined' ? new EventsManager(document) : null;
418
+ var eventsManager$1 = typeof document !== 'undefined' ? new EventsManager(document) : null;
419
419
 
420
- var windowEventsManager = typeof window !== 'undefined' ? new EventsManager(window) : null;
420
+ var useDocumentEvent = function useDocumentEvent(event, callback) {
421
+ useEffect(function () {
422
+ if (eventsManager$1 !== null && callback !== null) {
423
+ eventsManager$1.subscribe(event, callback);
424
+ }
425
+
426
+ return function () {
427
+ if (eventsManager$1 !== null && callback !== null) {
428
+ eventsManager$1.unsubscribe(event, callback);
429
+ }
430
+ };
431
+ }, [event, callback]);
432
+ };
433
+
434
+ var eventsManager = typeof window !== 'undefined' ? new EventsManager(window) : null;
421
435
 
422
436
  var useWindowEvent = function useWindowEvent(event, callback) {
423
437
  useEffect(function () {
424
- if (windowEventsManager !== null && callback !== null) {
425
- windowEventsManager.subscribe(event, callback);
438
+ if (eventsManager !== null && callback !== null) {
439
+ eventsManager.subscribe(event, callback);
426
440
  }
427
441
 
428
442
  return function () {
429
- if (windowEventsManager !== null && callback !== null) {
430
- windowEventsManager.unsubscribe(event, callback);
443
+ if (eventsManager !== null && callback !== null) {
444
+ eventsManager.unsubscribe(event, callback);
431
445
  }
432
446
  };
433
447
  }, [event, callback]);
@@ -437,7 +451,13 @@ function useKeyboard() {
437
451
  var keyMap = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
438
452
  var onKeyDown = useCallback(function (event) {
439
453
  var key = event.key;
440
- var callback = (typeof keyMap[key] === 'function' ? keyMap[key] : (keyMap[key] || {}).down) || null;
454
+ var callback = null;
455
+
456
+ if (typeof keyMap === 'function') {
457
+ callback = keyMap;
458
+ } else if (typeof keyMap[key] !== 'undefined') {
459
+ callback = typeof keyMap[key] === 'function' ? keyMap[key] : (keyMap[key] || {}).down || null;
460
+ }
441
461
 
442
462
  if (callback !== null) {
443
463
  callback(event);
@@ -445,7 +465,13 @@ function useKeyboard() {
445
465
  }, [keyMap]);
446
466
  var onKeyUp = useCallback(function (event) {
447
467
  var key = event.key;
448
- var callback = (typeof keyMap[key] !== 'undefined' && typeof keyMap[key] !== 'function' ? (keyMap[key] || {}).up : null) || null;
468
+ var callback = null;
469
+
470
+ if (typeof keyMap === 'function') {
471
+ callback = keyMap;
472
+ } else if (typeof keyMap[key] !== 'undefined') {
473
+ callback = typeof keyMap[key] === 'function' ? keyMap[key] : (keyMap[key] || {}).up || null;
474
+ }
449
475
 
450
476
  if (callback !== null) {
451
477
  callback(event);
@@ -1606,4 +1632,92 @@ function useVideoPlayer(params) {
1606
1632
  return player;
1607
1633
  }
1608
1634
 
1609
- export { documentEventsManager, getObserver, useDailymotionPlayer, useIntersectionObserver, useKeyboard, useNativeVideoPlayer, useObserver, usePlayerCurrentTime, useResizeObserver, useVideoPlayer, useVimeoPlayer, useYouTubePlayer, windowEventsManager };
1635
+ var getWindowScroll = function getWindowScroll() {
1636
+ return {
1637
+ x: typeof window !== 'undefined' ? window.scrollX || 0 : 0,
1638
+ y: typeof window !== 'undefined' ? window.scrollY || 0 : 0
1639
+ };
1640
+ };
1641
+
1642
+ var currentScroll = getWindowScroll();
1643
+
1644
+ var useWindowScroll = function useWindowScroll() {
1645
+ var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1646
+ var _opts$onChange = opts.onChange,
1647
+ onChange = _opts$onChange === void 0 ? null : _opts$onChange;
1648
+
1649
+ var _useState = useState(currentScroll),
1650
+ _useState2 = _slicedToArray(_useState, 2),
1651
+ scroll = _useState2[0],
1652
+ setScroll = _useState2[1];
1653
+
1654
+ var updateScroll = useCallback(function () {
1655
+ var newScroll = getWindowScroll();
1656
+
1657
+ if (currentScroll.x !== newScroll.x || currentScroll.y !== newScroll.y) {
1658
+ currentScroll.x = newScroll.x;
1659
+ currentScroll.y = newScroll.y;
1660
+ setScroll(newScroll);
1661
+ return newScroll;
1662
+ }
1663
+
1664
+ return null;
1665
+ }, [setScroll]);
1666
+ var onScroll = useCallback(function () {
1667
+ var newScroll = updateScroll();
1668
+
1669
+ if (newScroll !== null && onChange !== null) {
1670
+ onChange(newScroll);
1671
+ }
1672
+ }, [updateScroll, onChange]);
1673
+ useWindowEvent('scroll', onScroll);
1674
+ useEffect(function () {
1675
+ onScroll();
1676
+ }, []);
1677
+ return scroll;
1678
+ };
1679
+
1680
+ var getWindowSize = function getWindowSize() {
1681
+ return {
1682
+ width: typeof window !== 'undefined' ? window.innerWidth || 0 : 0,
1683
+ height: typeof window !== 'undefined' ? window.innerHeight || 0 : 0
1684
+ };
1685
+ };
1686
+ var currentSize = getWindowSize();
1687
+
1688
+ function useWindowSize() {
1689
+ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1690
+ _ref$onChange = _ref.onChange,
1691
+ onChange = _ref$onChange === void 0 ? null : _ref$onChange;
1692
+
1693
+ var _useState = useState(currentSize),
1694
+ _useState2 = _slicedToArray(_useState, 2),
1695
+ size = _useState2[0],
1696
+ setSize = _useState2[1];
1697
+
1698
+ var updateSize = useCallback(function () {
1699
+ var newSize = getWindowSize();
1700
+
1701
+ if (currentSize.width !== newSize.width || currentSize.height !== newSize.height) {
1702
+ currentSize = newSize;
1703
+ setSize(newSize);
1704
+ return newSize;
1705
+ }
1706
+
1707
+ return null;
1708
+ }, [setSize]);
1709
+ var onResize = useCallback(function () {
1710
+ var newSize = updateSize();
1711
+
1712
+ if (newSize !== null && onChange !== null) {
1713
+ onChange(newSize);
1714
+ }
1715
+ }, [onChange]);
1716
+ useWindowEvent('resize', onResize);
1717
+ useEffect(function () {
1718
+ onResize();
1719
+ }, []);
1720
+ return size;
1721
+ }
1722
+
1723
+ export { eventsManager$1 as documentEventsManager, getObserver, 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.23",
3
+ "version": "0.0.26",
4
4
  "description": "React hooks",
5
5
  "keywords": [
6
6
  "javascript",
@@ -48,7 +48,7 @@
48
48
  "publishConfig": {
49
49
  "access": "public"
50
50
  },
51
- "gitHead": "85e1b0e9e6ddd91680edabaeeb7f252400adbb92",
51
+ "gitHead": "318ecab2c776c3267abf57bffef8012cfcd937f5",
52
52
  "dependencies": {
53
53
  "@folklore/events": "^0.0.3",
54
54
  "@folklore/services": "^0.1.36",