@micromag/core 0.3.576 → 0.3.583

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.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/es/utils.js CHANGED
@@ -971,7 +971,7 @@ var getStyleFromMargin = function getStyleFromMargin(value) {
971
971
  } : null);
972
972
  };
973
973
 
974
- var possibleMimes = ['video/webm', 'video/mp4', 'video/ogg'];
974
+ var possibleMimes = ['video/webm', 'video/mp4', 'video/ogg', 'application/vnd.apple.mpegurl'];
975
975
  var supportedMimes = null;
976
976
  function getVideoSupportedMimes() {
977
977
  var mimes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : possibleMimes;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@micromag/core",
3
- "version": "0.3.576",
3
+ "version": "0.3.583",
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": "fa6ef8f8ed78d40e2a96e669c9cd794a50269c4b"
147
+ "gitHead": "d899cc28ac1f5b552114d8bfcd668a9bb8ab651c"
148
148
  }