@micromag/core 0.3.578 → 0.3.585

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/contexts.js CHANGED
@@ -828,7 +828,8 @@ var defaultValue$1 = {
828
828
  controlsSuggestPlay: false,
829
829
  controlsVisible: false,
830
830
  media: null,
831
- controlsTheme: defaultControlsThemeValue
831
+ controlsTheme: defaultControlsThemeValue,
832
+ currentQualityLevel: null
832
833
  };
833
834
  var PlaybackContext = /*#__PURE__*/React.createContext(_objectSpread(_objectSpread({}, defaultValue$1), {}, {
834
835
  setMuted: function setMuted() {},
@@ -838,7 +839,8 @@ var PlaybackContext = /*#__PURE__*/React.createContext(_objectSpread(_objectSpre
838
839
  setControlsTheme: function setControlsTheme() {},
839
840
  showControls: function showControls() {},
840
841
  hideControls: function hideControls() {},
841
- setMedia: function setMedia() {}
842
+ setMedia: function setMedia() {},
843
+ setCurrentQualityLevel: function setCurrentQualityLevel() {}
842
844
  }));
843
845
  var usePlaybackContext = function usePlaybackContext() {
844
846
  return useContext(PlaybackContext);
@@ -872,7 +874,8 @@ var propTypes$5 = {
872
874
  }),
873
875
  muted: PropTypes.bool,
874
876
  playing: PropTypes.bool,
875
- paused: PropTypes.bool
877
+ paused: PropTypes.bool,
878
+ currentQualityLevel: PropTypes.number
876
879
  };
877
880
  var defaultProps$5 = _objectSpread({}, defaultValue$1);
878
881
  var PlaybackProvider = function PlaybackProvider(_ref) {
@@ -883,6 +886,7 @@ var PlaybackProvider = function PlaybackProvider(_ref) {
883
886
  initialControlsSuggestPlay = _ref.controlsSuggestPlay,
884
887
  initialControlsVisible = _ref.controlsVisible,
885
888
  initialControlsTheme = _ref.controlsTheme,
889
+ initialCurrentQualityLevel = _ref.currentQualityLevel,
886
890
  children = _ref.children;
887
891
  var _useState = useState(initialMuted),
888
892
  _useState2 = _slicedToArray(_useState, 2),
@@ -912,6 +916,10 @@ var PlaybackProvider = function PlaybackProvider(_ref) {
912
916
  _useState14 = _slicedToArray(_useState13, 2),
913
917
  controlsTheme = _useState14[0],
914
918
  setControlsTheme = _useState14[1];
919
+ var _useState15 = useState(initialCurrentQualityLevel),
920
+ _useState16 = _slicedToArray(_useState15, 2),
921
+ currentQualityLevel = _useState16[0],
922
+ setCurrentQualityLevel = _useState16[1];
915
923
  var finalSetControls = useCallback(function (newControls) {
916
924
  if (newControls) {
917
925
  setControls(true);
@@ -955,6 +963,12 @@ var PlaybackProvider = function PlaybackProvider(_ref) {
955
963
  }
956
964
  return media.dataset.hasAudio === 'true' || media.dataset.hasAudio === true;
957
965
  }, [media]);
966
+ var finalSetCurrentQualityLevel = useCallback(function (level) {
967
+ var fromRef = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
968
+ if (fromRef === null || media === null || fromRef === media) {
969
+ setCurrentQualityLevel(level);
970
+ }
971
+ }, [setCurrentQualityLevel]);
958
972
  var value = useMemo(function () {
959
973
  return {
960
974
  muted: muted,
@@ -965,6 +979,7 @@ var PlaybackProvider = function PlaybackProvider(_ref) {
965
979
  media: media,
966
980
  hasAudio: hasAudio,
967
981
  controlsTheme: controlsTheme,
982
+ currentQualityLevel: currentQualityLevel,
968
983
  setMuted: setMuted,
969
984
  setPlaying: finalSetPlaying,
970
985
  setControls: finalSetControls,
@@ -973,9 +988,10 @@ var PlaybackProvider = function PlaybackProvider(_ref) {
973
988
  setControlsTheme: finalSetControlsTheme,
974
989
  showControls: showControls,
975
990
  hideControls: hideControls,
976
- setMedia: setMedia
991
+ setMedia: setMedia,
992
+ setCurrentQualityLevel: finalSetCurrentQualityLevel
977
993
  };
978
- }, [muted, playing, paused, controls, controlsSuggestPlay, controlsVisible, controlsTheme, media, hasAudio, setMuted, finalSetPlaying, finalSetControls, finalSetControlsTheme, setControlsSuggestPlay, setControlsVisible, setControlsTheme, showControls, hideControls, setMedia]);
994
+ }, [muted, playing, paused, controls, controlsSuggestPlay, controlsVisible, controlsTheme, media, hasAudio, currentQualityLevel, setMuted, finalSetPlaying, finalSetControls, finalSetControlsTheme, setControlsSuggestPlay, setControlsVisible, setControlsTheme, showControls, hideControls, setMedia, setCurrentQualityLevel]);
979
995
  return /*#__PURE__*/React.createElement(PlaybackContext.Provider, {
980
996
  value: value
981
997
  }, children);
package/es/hooks.js CHANGED
@@ -1414,6 +1414,42 @@ var useMediaState = function useMediaState() {
1414
1414
  };
1415
1415
  };
1416
1416
 
1417
+ function useMediaTimestampOffset(element) {
1418
+ var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
1419
+ _ref$attributeName = _ref.attributeName,
1420
+ attributeName = _ref$attributeName === void 0 ? 'data-ts-offset' : _ref$attributeName;
1421
+ var getTimestampOffset = function getTimestampOffset() {
1422
+ return element !== null && element.hasAttribute(attributeName) ? parseFloat(element.getAttribute(attributeName)) : 0;
1423
+ };
1424
+ var _useState = useState(getTimestampOffset()),
1425
+ _useState2 = _slicedToArray(_useState, 2),
1426
+ timestampOffset = _useState2[0],
1427
+ setTimestampOffset = _useState2[1];
1428
+ var observerRef = useRef(null);
1429
+ useEffect(function () {
1430
+ if (element !== null) {
1431
+ observerRef.current = new MutationObserver(function (mutations) {
1432
+ mutations.forEach(function (_ref2) {
1433
+ var mutationType = _ref2.type;
1434
+ if (mutationType === 'attributes') {
1435
+ setTimestampOffset(getTimestampOffset());
1436
+ }
1437
+ });
1438
+ });
1439
+ observerRef.current.observe(element, {
1440
+ attributes: true,
1441
+ attributeFilter: [attributeName]
1442
+ });
1443
+ }
1444
+ return function () {
1445
+ if (observerRef.current !== null) {
1446
+ observerRef.current.disconnect();
1447
+ }
1448
+ };
1449
+ }, [element]);
1450
+ return timestampOffset;
1451
+ }
1452
+
1417
1453
  function useMediaCurrentTime(element) {
1418
1454
  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
1419
1455
  _ref$id = _ref.id,
@@ -1429,13 +1465,14 @@ function useMediaCurrentTime(element) {
1429
1465
  currentTime = _useState2[0],
1430
1466
  setCurrentTime = _useState2[1];
1431
1467
  var realCurrentTime = useRef(currentTime);
1468
+ var tsOffset = useMediaTimestampOffset(element);
1432
1469
  var finalId = id || element;
1433
1470
  var lastIdRef = useRef(finalId);
1434
1471
  var idChanged = lastIdRef.current !== finalId;
1435
1472
  var disabledRef = useRef(disabled);
1436
1473
  var disabledChanged = disabledRef.current !== disabled;
1437
1474
  if (idChanged || disabledChanged) {
1438
- realCurrentTime.current = element !== null ? element.currentTime || 0 : 0;
1475
+ realCurrentTime.current = element !== null ? Math.max((element.currentTime || 0) - tsOffset, 0) : 0;
1439
1476
  lastIdRef.current = finalId;
1440
1477
  disabledRef.current = disabled;
1441
1478
  }
@@ -1446,7 +1483,7 @@ function useMediaCurrentTime(element) {
1446
1483
  return function () {};
1447
1484
  }
1448
1485
  function updateTime() {
1449
- var time = element.currentTime || 0;
1486
+ var time = Math.max((element.currentTime || 0) - tsOffset, 0);
1450
1487
  if (time !== realCurrentTime.current) {
1451
1488
  realCurrentTime.current = time;
1452
1489
  setCurrentTime(time);
@@ -1471,7 +1508,7 @@ function useMediaCurrentTime(element) {
1471
1508
  loop();
1472
1509
  return function () {
1473
1510
  if (element !== null) {
1474
- realCurrentTime.current = element.currentTime;
1511
+ realCurrentTime.current = element.currentTime - tsOffset;
1475
1512
  }
1476
1513
  if (timeout !== null) {
1477
1514
  clearInterval(timeout);
@@ -1489,12 +1526,13 @@ function useMediaDuration(element) {
1489
1526
  _useState2 = _slicedToArray(_useState, 2),
1490
1527
  duration = _useState2[0],
1491
1528
  setDuration = _useState2[1];
1529
+ var tsOffset = useMediaTimestampOffset(element);
1492
1530
  var realDuration = useRef(duration);
1493
1531
  var finalId = id || element;
1494
1532
  var lastIdRef = useRef(finalId);
1495
1533
  var idChanged = lastIdRef.current !== finalId;
1496
1534
  if (idChanged) {
1497
- realDuration.current = element !== null ? element.duration || 0 : 0;
1535
+ realDuration.current = element !== null ? Math.max((element.duration || 0) - tsOffset, 0) : 0;
1498
1536
  lastIdRef.current = finalId;
1499
1537
  }
1500
1538
  useEffect(function () {
@@ -1504,7 +1542,7 @@ function useMediaDuration(element) {
1504
1542
  return function () {};
1505
1543
  }
1506
1544
  function updateDuration() {
1507
- var newDuration = element.duration || 0;
1545
+ var newDuration = Math.max((element.duration || 0) - tsOffset, 0);
1508
1546
  if (newDuration !== realDuration.current) {
1509
1547
  realDuration.current = newDuration;
1510
1548
  setDuration(newDuration);
@@ -2341,4 +2379,4 @@ var useTrackMedia = function useTrackMedia() {
2341
2379
  var eventsManager = typeof window !== 'undefined' ? new EventsManager(window) : null;
2342
2380
  var useWindowEvent = createUseEvent(eventsManager);
2343
2381
 
2344
- export { getObserver, useActivityDetector, useAnimationFrame, useDebounced as useDebounce, useDimensionObserver, useDocumentEvent, useDragProgress, useForm, useFormTransition, useFormattedDate, useFormattedTime, useFullscreen, useIntersectionObserver, useIsVisible, useLoadedFonts, useLongPress, useMediaApi, useMediaBuffering, useMediaCurrentTime, useMediaDuration, useMediaLoad, useMediaProgress, useMediaReady, useMediaState, useMediaThumbnail, useMediaWaveform, useMediasParser, useObserver, useParsedStory, useProgressSteps, useResizeObserver, useScreenSizeFromElement, useScreenSizeFromWindow, useSpringValue, useSwipe, useThemeParser, useTrackEvent, useTrackMedia, useTrackScreenEvent, useTrackScreenMedia, useTrackScreenView, useWindowEvent };
2382
+ export { getObserver, useActivityDetector, useAnimationFrame, useDebounced as useDebounce, useDimensionObserver, useDocumentEvent, useDragProgress, useForm, useFormTransition, useFormattedDate, useFormattedTime, useFullscreen, useIntersectionObserver, useIsVisible, useLoadedFonts, useLongPress, useMediaApi, useMediaBuffering, useMediaCurrentTime, useMediaDuration, useMediaLoad, useMediaProgress, useMediaReady, useMediaState, useMediaThumbnail, useMediaTimestampOffset, useMediaWaveform, useMediasParser, useObserver, useParsedStory, useProgressSteps, useResizeObserver, useScreenSizeFromElement, useScreenSizeFromWindow, useSpringValue, useSwipe, useThemeParser, useTrackEvent, useTrackMedia, useTrackScreenEvent, useTrackScreenMedia, useTrackScreenView, useWindowEvent };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@micromag/core",
3
- "version": "0.3.578",
3
+ "version": "0.3.585",
4
4
  "private": false,
5
5
  "description": "",
6
6
  "keywords": [
@@ -144,5 +144,5 @@
144
144
  "access": "public",
145
145
  "registry": "https://registry.npmjs.org/"
146
146
  },
147
- "gitHead": "924e621e3cf56f4d46abed790ef7f1f13ec29fb1"
147
+ "gitHead": "f8c2902ea472fcb2d1cdd3fe5d6054afd0cc766b"
148
148
  }