@micromag/core 0.4.63 → 0.4.65

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/es/hooks.d.ts CHANGED
@@ -153,12 +153,12 @@ declare const useMediaBuffering: (mediaElement?: any, interval?: number) => {
153
153
  buffering: boolean;
154
154
  };
155
155
 
156
- declare const useMediaState: (mediaElement?: any, { playing: wantedPlaying, muted: wantedMuted }?: {
156
+ declare const useMediaState: (mediaElement?: HTMLMediaElement | null, { playing: wantedPlaying, muted: wantedMuted }?: {
157
157
  playing?: boolean;
158
158
  muted?: boolean;
159
159
  }) => {
160
160
  playing: boolean;
161
- muted: any;
161
+ muted: boolean;
162
162
  buffering: boolean;
163
163
  };
164
164
 
@@ -180,8 +180,8 @@ declare function useMediaLoad(element: any, { preload, shouldLoad }?: {
180
180
 
181
181
  declare function useMediaProgress(media?: any, options?: any): number;
182
182
 
183
- declare function useMediaReady(element: any, { id }?: {
184
- id?: any;
183
+ declare function useMediaReady(element: HTMLMediaElement | null, { id }?: {
184
+ id?: string | null;
185
185
  }): boolean;
186
186
 
187
187
  declare function useMediaTimestampOffset(element: any, { attributeName }?: {
package/es/hooks.js CHANGED
@@ -15,12 +15,12 @@ import isArray from 'lodash/isArray';
15
15
  import isObject from 'lodash/isObject';
16
16
  import raf from 'raf';
17
17
  import createDebug from 'debug';
18
- import isString from 'lodash/isString';
19
18
  import { useScreensManager, useFieldsManager, useTracking, useScreen } from '@micromag/core/contexts';
20
19
  import isEmpty from 'lodash/isEmpty';
21
20
  import { useWindowSize } from '@folklore/hooks';
22
21
  import { match } from 'css-mediaquery';
23
22
  import dayjs from 'dayjs';
23
+ import isString from 'lodash/isString';
24
24
  import { useIntl } from 'react-intl';
25
25
  import clamp from 'lodash/clamp';
26
26
 
@@ -1358,10 +1358,11 @@ var useMediaState = function useMediaState() {
1358
1358
  wantedPlaying = _ref$playing === void 0 ? false : _ref$playing,
1359
1359
  _ref$muted = _ref.muted,
1360
1360
  wantedMuted = _ref$muted === void 0 ? false : _ref$muted;
1361
+ var src = mediaElement !== null ? mediaElement.currentSrc || mediaElement.src : null;
1361
1362
  var debug = useMemo(function () {
1362
- var mediaKey = mediaElement !== null && isString(mediaElement.src) ? mediaElement.src.split('/')[mediaElement.src.split('/').length - 1].split('#')[0] || null : null;
1363
+ var mediaKey = src !== null ? src.split('/')[src.split('/').length - 1].split('#')[0] || null : null;
1363
1364
  return createDebug(mediaKey !== null ? "micromag:media:".concat(mediaKey) : 'micromag:media');
1364
- }, [mediaElement]);
1365
+ }, [src]);
1365
1366
  var _useState = useState(wantedPlaying),
1366
1367
  _useState2 = _slicedToArray(_useState, 2),
1367
1368
  playing = _useState2[0],
@@ -1391,20 +1392,20 @@ var useMediaState = function useMediaState() {
1391
1392
  wantedMuted: wantedMuted
1392
1393
  });
1393
1394
  }
1394
- }, [mediaElement, debug, wantedPlaying, wantedMuted]);
1395
+ }, [mediaElement, src, debug, wantedPlaying, wantedMuted]);
1395
1396
  useEffect(function () {
1396
1397
  if (mediaElement === null) {
1397
1398
  return function () {};
1398
1399
  }
1399
1400
  function onBufferingEvent(e) {
1400
1401
  // networkstate
1401
- if (mediaElement.networkState === mediaElement.NETWORK_LOADING) {
1402
+ if (mediaElement !== null && mediaElement.networkState === mediaElement.NETWORK_LOADING) {
1402
1403
  debug('onBufferingEvent: NETWORK_LOADING');
1403
1404
  setBuffering(true);
1404
1405
  }
1405
1406
 
1406
1407
  // readystate
1407
- if (mediaElement.readyState < mediaElement.HAVE_FUTURE_DATA) {
1408
+ if (mediaElement !== null && mediaElement.readyState < mediaElement.HAVE_FUTURE_DATA) {
1408
1409
  debug('onBufferingEvent: HAVE_FUTURE_DATA');
1409
1410
  setBuffering(true);
1410
1411
  }
@@ -1468,7 +1469,7 @@ var useMediaState = function useMediaState() {
1468
1469
  mediaElement.removeEventListener('ended', onEnded);
1469
1470
  mediaElement.removeEventListener('volumechange', onVolumeChange);
1470
1471
  };
1471
- }, [mediaElement, debug]);
1472
+ }, [mediaElement, debug, src]);
1472
1473
  return {
1473
1474
  playing: playing,
1474
1475
  muted: muted,
@@ -1773,10 +1774,10 @@ function useMediaReady(element) {
1773
1774
  }
1774
1775
  function updateReady() {
1775
1776
  var currentReady = ready;
1776
- if (element.readyState > 0 && !ready) {
1777
+ if (element !== null && element.readyState > 0 && !ready) {
1777
1778
  setReady(true);
1778
1779
  currentReady = true;
1779
- } else if (ready && element.readyState === 0) {
1780
+ } else if (ready && element !== null && element.readyState === 0) {
1780
1781
  setReady(false);
1781
1782
  currentReady = false;
1782
1783
  }
@@ -1784,17 +1785,20 @@ function useMediaReady(element) {
1784
1785
  return currentReady;
1785
1786
  }
1786
1787
  var currentReady = updateReady();
1787
- if (!currentReady) {
1788
- element.addEventListener('loadedmetadata', updateReady);
1789
- element.addEventListener('canplay', updateReady);
1790
- element.addEventListener('canplaythrough', updateReady);
1788
+ if (currentReady) {
1789
+ return function () {};
1791
1790
  }
1791
+ element.addEventListener('loadstart', updateReady);
1792
+ element.addEventListener('loadeddata', updateReady);
1793
+ element.addEventListener('loadedmetadata', updateReady);
1794
+ element.addEventListener('canplay', updateReady);
1795
+ element.addEventListener('canplaythrough', updateReady);
1792
1796
  return function () {
1793
- if (!currentReady) {
1794
- element.removeEventListener('loadedmetadata', updateReady);
1795
- element.removeEventListener('canplay', updateReady);
1796
- element.removeEventListener('canplaythrough', updateReady);
1797
- }
1797
+ element.removeEventListener('loadstart', updateReady);
1798
+ element.removeEventListener('loadeddata', updateReady);
1799
+ element.removeEventListener('loadedmetadata', updateReady);
1800
+ element.removeEventListener('canplay', updateReady);
1801
+ element.removeEventListener('canplaythrough', updateReady);
1798
1802
  };
1799
1803
  }, [element, id]);
1800
1804
  return realReady.current;
package/lib/hooks.js CHANGED
@@ -17,12 +17,12 @@ var isArray = require('lodash/isArray');
17
17
  var isObject = require('lodash/isObject');
18
18
  var raf = require('raf');
19
19
  var createDebug = require('debug');
20
- var isString = require('lodash/isString');
21
20
  var contexts = require('@micromag/core/contexts');
22
21
  var isEmpty = require('lodash/isEmpty');
23
22
  var hooks = require('@folklore/hooks');
24
23
  var cssMediaquery = require('css-mediaquery');
25
24
  var dayjs = require('dayjs');
25
+ var isString = require('lodash/isString');
26
26
  var reactIntl = require('react-intl');
27
27
  var clamp = require('lodash/clamp');
28
28
 
@@ -1360,10 +1360,11 @@ var useMediaState = function useMediaState() {
1360
1360
  wantedPlaying = _ref$playing === void 0 ? false : _ref$playing,
1361
1361
  _ref$muted = _ref.muted,
1362
1362
  wantedMuted = _ref$muted === void 0 ? false : _ref$muted;
1363
+ var src = mediaElement !== null ? mediaElement.currentSrc || mediaElement.src : null;
1363
1364
  var debug = react.useMemo(function () {
1364
- var mediaKey = mediaElement !== null && isString(mediaElement.src) ? mediaElement.src.split('/')[mediaElement.src.split('/').length - 1].split('#')[0] || null : null;
1365
+ var mediaKey = src !== null ? src.split('/')[src.split('/').length - 1].split('#')[0] || null : null;
1365
1366
  return createDebug(mediaKey !== null ? "micromag:media:".concat(mediaKey) : 'micromag:media');
1366
- }, [mediaElement]);
1367
+ }, [src]);
1367
1368
  var _useState = react.useState(wantedPlaying),
1368
1369
  _useState2 = _slicedToArray(_useState, 2),
1369
1370
  playing = _useState2[0],
@@ -1393,20 +1394,20 @@ var useMediaState = function useMediaState() {
1393
1394
  wantedMuted: wantedMuted
1394
1395
  });
1395
1396
  }
1396
- }, [mediaElement, debug, wantedPlaying, wantedMuted]);
1397
+ }, [mediaElement, src, debug, wantedPlaying, wantedMuted]);
1397
1398
  react.useEffect(function () {
1398
1399
  if (mediaElement === null) {
1399
1400
  return function () {};
1400
1401
  }
1401
1402
  function onBufferingEvent(e) {
1402
1403
  // networkstate
1403
- if (mediaElement.networkState === mediaElement.NETWORK_LOADING) {
1404
+ if (mediaElement !== null && mediaElement.networkState === mediaElement.NETWORK_LOADING) {
1404
1405
  debug('onBufferingEvent: NETWORK_LOADING');
1405
1406
  setBuffering(true);
1406
1407
  }
1407
1408
 
1408
1409
  // readystate
1409
- if (mediaElement.readyState < mediaElement.HAVE_FUTURE_DATA) {
1410
+ if (mediaElement !== null && mediaElement.readyState < mediaElement.HAVE_FUTURE_DATA) {
1410
1411
  debug('onBufferingEvent: HAVE_FUTURE_DATA');
1411
1412
  setBuffering(true);
1412
1413
  }
@@ -1470,7 +1471,7 @@ var useMediaState = function useMediaState() {
1470
1471
  mediaElement.removeEventListener('ended', onEnded);
1471
1472
  mediaElement.removeEventListener('volumechange', onVolumeChange);
1472
1473
  };
1473
- }, [mediaElement, debug]);
1474
+ }, [mediaElement, debug, src]);
1474
1475
  return {
1475
1476
  playing: playing,
1476
1477
  muted: muted,
@@ -1775,10 +1776,10 @@ function useMediaReady(element) {
1775
1776
  }
1776
1777
  function updateReady() {
1777
1778
  var currentReady = ready;
1778
- if (element.readyState > 0 && !ready) {
1779
+ if (element !== null && element.readyState > 0 && !ready) {
1779
1780
  setReady(true);
1780
1781
  currentReady = true;
1781
- } else if (ready && element.readyState === 0) {
1782
+ } else if (ready && element !== null && element.readyState === 0) {
1782
1783
  setReady(false);
1783
1784
  currentReady = false;
1784
1785
  }
@@ -1786,17 +1787,20 @@ function useMediaReady(element) {
1786
1787
  return currentReady;
1787
1788
  }
1788
1789
  var currentReady = updateReady();
1789
- if (!currentReady) {
1790
- element.addEventListener('loadedmetadata', updateReady);
1791
- element.addEventListener('canplay', updateReady);
1792
- element.addEventListener('canplaythrough', updateReady);
1790
+ if (currentReady) {
1791
+ return function () {};
1793
1792
  }
1793
+ element.addEventListener('loadstart', updateReady);
1794
+ element.addEventListener('loadeddata', updateReady);
1795
+ element.addEventListener('loadedmetadata', updateReady);
1796
+ element.addEventListener('canplay', updateReady);
1797
+ element.addEventListener('canplaythrough', updateReady);
1794
1798
  return function () {
1795
- if (!currentReady) {
1796
- element.removeEventListener('loadedmetadata', updateReady);
1797
- element.removeEventListener('canplay', updateReady);
1798
- element.removeEventListener('canplaythrough', updateReady);
1799
- }
1799
+ element.removeEventListener('loadstart', updateReady);
1800
+ element.removeEventListener('loadeddata', updateReady);
1801
+ element.removeEventListener('loadedmetadata', updateReady);
1802
+ element.removeEventListener('canplay', updateReady);
1803
+ element.removeEventListener('canplaythrough', updateReady);
1800
1804
  };
1801
1805
  }, [element, id]);
1802
1806
  return realReady.current;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@micromag/core",
3
- "version": "0.4.63",
3
+ "version": "0.4.65",
4
4
  "private": false,
5
5
  "description": "",
6
6
  "keywords": [
@@ -161,6 +161,6 @@
161
161
  "access": "public",
162
162
  "registry": "https://registry.npmjs.org/"
163
163
  },
164
- "gitHead": "0a6df1a5352c067c3296377d26fadb9b71244345",
164
+ "gitHead": "33460a352e56298ae450392b04c09503ecfeae05",
165
165
  "types": "es/index.d.ts"
166
166
  }