@micromag/core 0.3.807 → 0.3.811

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
@@ -2144,6 +2144,24 @@ function useSpringValue(wantedProgress, immediate, params) {
2144
2144
  return immediate ? wantedProgress : progress;
2145
2145
  }
2146
2146
 
2147
+ function useSupportsWebp() {
2148
+ var _useState = useState(true),
2149
+ _useState2 = _slicedToArray(_useState, 2),
2150
+ supportsWebp = _useState2[0],
2151
+ setSupportsWebp = _useState2[1];
2152
+ useEffect(function () {
2153
+ var img = document.createElement('img');
2154
+ img.onload = function () {
2155
+ setSupportsWebp(img.width > 0 && img.height > 0);
2156
+ };
2157
+ img.onerror = function () {
2158
+ setSupportsWebp(false);
2159
+ };
2160
+ img.src = 'data:image/webp;base64,UklGRiQAAABXRUJQVlA4IBgAAAAwAQCdASoCAAEAAQAcJaQAA3AA/v3AgAA=';
2161
+ }, []);
2162
+ return supportsWebp;
2163
+ }
2164
+
2147
2165
  var useSwipe = function useSwipe() {
2148
2166
  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
2149
2167
  _ref$width = _ref.width,
@@ -2431,4 +2449,4 @@ var useTrackMedia = function useTrackMedia() {
2431
2449
  var eventsManager = typeof window !== 'undefined' ? new EventsManager(window) : null;
2432
2450
  var useWindowEvent = createUseEvent(eventsManager);
2433
2451
 
2434
- export { getObserver, useActivityDetector, useAnimationFrame, useDebounced as useDebounce, useDevicePixelRatio, 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, usePlaceholderStyle, useProgressSteps, useResizeObserver, useScreenSizeFromElement, useScreenSizeFromWindow, useSpringValue, useSwipe, useThemeParser, useTrackEvent, useTrackMedia, useTrackScreenEvent, useTrackScreenMedia, useTrackScreenView, useWindowEvent };
2452
+ export { getObserver, useActivityDetector, useAnimationFrame, useDebounced as useDebounce, useDevicePixelRatio, 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, usePlaceholderStyle, useProgressSteps, useResizeObserver, useScreenSizeFromElement, useScreenSizeFromWindow, useSpringValue, useSupportsWebp, useSwipe, useThemeParser, useTrackEvent, useTrackMedia, useTrackScreenEvent, useTrackScreenMedia, useTrackScreenView, useWindowEvent };
package/es/utils.js CHANGED
@@ -514,22 +514,27 @@ var getOptimalImageUrl = function getOptimalImageUrl() {
514
514
  _ref$resolution = _ref.resolution,
515
515
  resolution = _ref$resolution === void 0 ? 1 : _ref$resolution,
516
516
  _ref$maxDiff = _ref.maxDiff,
517
- maxDiff = _ref$maxDiff === void 0 ? 800 : _ref$maxDiff;
517
+ maxDiff = _ref$maxDiff === void 0 ? 800 : _ref$maxDiff,
518
+ _ref$supportsWebp = _ref.supportsWebp,
519
+ supportsWebp = _ref$supportsWebp === void 0 ? false : _ref$supportsWebp;
518
520
  var _ref2 = media || {},
519
521
  _ref2$sizes = _ref2.sizes,
520
522
  sizes = _ref2$sizes === void 0 ? null : _ref2$sizes,
521
523
  _ref2$url = _ref2.url,
522
524
  defaultUrl = _ref2$url === void 0 ? null : _ref2$url,
525
+ _ref2$webp_url = _ref2.webp_url,
526
+ defaultWebpUrl = _ref2$webp_url === void 0 ? null : _ref2$webp_url,
523
527
  _ref2$metadata = _ref2.metadata,
524
528
  _ref2$metadata2 = _ref2$metadata === void 0 ? {} : _ref2$metadata,
525
529
  imgWidth = _ref2$metadata2.width,
526
530
  imgHeight = _ref2$metadata2.height;
531
+ var finalDefaultUrl = supportsWebp && defaultWebpUrl !== null ? defaultWebpUrl : defaultUrl;
527
532
  if (sizes === null || containerWidth === null && containerHeight === null) {
528
- return defaultUrl;
533
+ return finalDefaultUrl;
529
534
  }
530
535
  var finalSizes = _objectSpread({
531
536
  original: {
532
- url: defaultUrl,
537
+ url: finalDefaultUrl,
533
538
  width: imgWidth,
534
539
  height: imgHeight
535
540
  }
@@ -542,10 +547,16 @@ var getOptimalImageUrl = function getOptimalImageUrl() {
542
547
  currentSize = acc.size;
543
548
  var _finalSizes$key = finalSizes[key],
544
549
  url = _finalSizes$key.url,
550
+ _finalSizes$key$webp_ = _finalSizes$key.webp_url,
551
+ webpUrl = _finalSizes$key$webp_ === void 0 ? null : _finalSizes$key$webp_,
545
552
  _finalSizes$key$width = _finalSizes$key.width,
546
553
  width = _finalSizes$key$width === void 0 ? null : _finalSizes$key$width,
547
554
  _finalSizes$key$heigh = _finalSizes$key.height,
548
555
  height = _finalSizes$key$heigh === void 0 ? null : _finalSizes$key$heigh;
556
+ var sizeUrl = supportsWebp && webpUrl !== null ? webpUrl : url;
557
+ console.log({
558
+ sizeUrl: sizeUrl
559
+ });
549
560
  var diffWidth = width !== null && finalContainerWidth !== null ? width - finalContainerWidth : null;
550
561
  var diffHeight = height !== null && finalContainerHeight !== null ? height - finalContainerHeight : null;
551
562
  var isLarger = (diffWidth === null || diffWidth >= 0) && (diffHeight === null || diffHeight >= 0);
@@ -566,9 +577,12 @@ var getOptimalImageUrl = function getOptimalImageUrl() {
566
577
  diff <= maxDiff && !currentIsLarger && isLarger ||
567
578
  // Image is larger than previous
568
579
  diff <= maxDiff && !currentIsLarger && !isLarger && sizeIsLarger) {
580
+ console.log({
581
+ sizeUrl: sizeUrl
582
+ });
569
583
  return {
570
584
  key: key,
571
- url: url,
585
+ url: sizeUrl,
572
586
  diff: diff,
573
587
  isLarger: isLarger
574
588
  };
@@ -576,12 +590,19 @@ var getOptimalImageUrl = function getOptimalImageUrl() {
576
590
  return acc;
577
591
  }, {
578
592
  key: null,
579
- url: defaultUrl,
593
+ url: finalDefaultUrl,
580
594
  diff: Infinity,
581
595
  isLarger: false,
582
596
  size: 0
583
597
  }),
584
598
  finalUrl = _Object$keys$reduce.url;
599
+ console.log({
600
+ finalUrl: finalUrl,
601
+ finalDefaultUrl: finalDefaultUrl,
602
+ supportsWebp: supportsWebp,
603
+ defaultWebpUrl: defaultWebpUrl,
604
+ defaultUrl: defaultUrl
605
+ });
585
606
  return finalUrl;
586
607
  };
587
608
 
package/lib/hooks.js CHANGED
@@ -2146,6 +2146,24 @@ function useSpringValue(wantedProgress, immediate, params) {
2146
2146
  return immediate ? wantedProgress : progress;
2147
2147
  }
2148
2148
 
2149
+ function useSupportsWebp() {
2150
+ var _useState = react.useState(true),
2151
+ _useState2 = _slicedToArray(_useState, 2),
2152
+ supportsWebp = _useState2[0],
2153
+ setSupportsWebp = _useState2[1];
2154
+ react.useEffect(function () {
2155
+ var img = document.createElement('img');
2156
+ img.onload = function () {
2157
+ setSupportsWebp(img.width > 0 && img.height > 0);
2158
+ };
2159
+ img.onerror = function () {
2160
+ setSupportsWebp(false);
2161
+ };
2162
+ img.src = 'data:image/webp;base64,UklGRiQAAABXRUJQVlA4IBgAAAAwAQCdASoCAAEAAQAcJaQAA3AA/v3AgAA=';
2163
+ }, []);
2164
+ return supportsWebp;
2165
+ }
2166
+
2149
2167
  var useSwipe = function useSwipe() {
2150
2168
  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
2151
2169
  _ref$width = _ref.width,
@@ -2470,6 +2488,7 @@ exports.useResizeObserver = useResizeObserver;
2470
2488
  exports.useScreenSizeFromElement = useScreenSizeFromElement;
2471
2489
  exports.useScreenSizeFromWindow = useScreenSizeFromWindow;
2472
2490
  exports.useSpringValue = useSpringValue;
2491
+ exports.useSupportsWebp = useSupportsWebp;
2473
2492
  exports.useSwipe = useSwipe;
2474
2493
  exports.useThemeParser = useThemeParser;
2475
2494
  exports.useTrackEvent = useTrackEvent;
package/lib/utils.js CHANGED
@@ -515,22 +515,27 @@ var getOptimalImageUrl = function getOptimalImageUrl() {
515
515
  _ref$resolution = _ref.resolution,
516
516
  resolution = _ref$resolution === void 0 ? 1 : _ref$resolution,
517
517
  _ref$maxDiff = _ref.maxDiff,
518
- maxDiff = _ref$maxDiff === void 0 ? 800 : _ref$maxDiff;
518
+ maxDiff = _ref$maxDiff === void 0 ? 800 : _ref$maxDiff,
519
+ _ref$supportsWebp = _ref.supportsWebp,
520
+ supportsWebp = _ref$supportsWebp === void 0 ? false : _ref$supportsWebp;
519
521
  var _ref2 = media || {},
520
522
  _ref2$sizes = _ref2.sizes,
521
523
  sizes = _ref2$sizes === void 0 ? null : _ref2$sizes,
522
524
  _ref2$url = _ref2.url,
523
525
  defaultUrl = _ref2$url === void 0 ? null : _ref2$url,
526
+ _ref2$webp_url = _ref2.webp_url,
527
+ defaultWebpUrl = _ref2$webp_url === void 0 ? null : _ref2$webp_url,
524
528
  _ref2$metadata = _ref2.metadata,
525
529
  _ref2$metadata2 = _ref2$metadata === void 0 ? {} : _ref2$metadata,
526
530
  imgWidth = _ref2$metadata2.width,
527
531
  imgHeight = _ref2$metadata2.height;
532
+ var finalDefaultUrl = supportsWebp && defaultWebpUrl !== null ? defaultWebpUrl : defaultUrl;
528
533
  if (sizes === null || containerWidth === null && containerHeight === null) {
529
- return defaultUrl;
534
+ return finalDefaultUrl;
530
535
  }
531
536
  var finalSizes = _objectSpread({
532
537
  original: {
533
- url: defaultUrl,
538
+ url: finalDefaultUrl,
534
539
  width: imgWidth,
535
540
  height: imgHeight
536
541
  }
@@ -543,10 +548,16 @@ var getOptimalImageUrl = function getOptimalImageUrl() {
543
548
  currentSize = acc.size;
544
549
  var _finalSizes$key = finalSizes[key],
545
550
  url = _finalSizes$key.url,
551
+ _finalSizes$key$webp_ = _finalSizes$key.webp_url,
552
+ webpUrl = _finalSizes$key$webp_ === void 0 ? null : _finalSizes$key$webp_,
546
553
  _finalSizes$key$width = _finalSizes$key.width,
547
554
  width = _finalSizes$key$width === void 0 ? null : _finalSizes$key$width,
548
555
  _finalSizes$key$heigh = _finalSizes$key.height,
549
556
  height = _finalSizes$key$heigh === void 0 ? null : _finalSizes$key$heigh;
557
+ var sizeUrl = supportsWebp && webpUrl !== null ? webpUrl : url;
558
+ console.log({
559
+ sizeUrl: sizeUrl
560
+ });
550
561
  var diffWidth = width !== null && finalContainerWidth !== null ? width - finalContainerWidth : null;
551
562
  var diffHeight = height !== null && finalContainerHeight !== null ? height - finalContainerHeight : null;
552
563
  var isLarger = (diffWidth === null || diffWidth >= 0) && (diffHeight === null || diffHeight >= 0);
@@ -567,9 +578,12 @@ var getOptimalImageUrl = function getOptimalImageUrl() {
567
578
  diff <= maxDiff && !currentIsLarger && isLarger ||
568
579
  // Image is larger than previous
569
580
  diff <= maxDiff && !currentIsLarger && !isLarger && sizeIsLarger) {
581
+ console.log({
582
+ sizeUrl: sizeUrl
583
+ });
570
584
  return {
571
585
  key: key,
572
- url: url,
586
+ url: sizeUrl,
573
587
  diff: diff,
574
588
  isLarger: isLarger
575
589
  };
@@ -577,12 +591,19 @@ var getOptimalImageUrl = function getOptimalImageUrl() {
577
591
  return acc;
578
592
  }, {
579
593
  key: null,
580
- url: defaultUrl,
594
+ url: finalDefaultUrl,
581
595
  diff: Infinity,
582
596
  isLarger: false,
583
597
  size: 0
584
598
  }),
585
599
  finalUrl = _Object$keys$reduce.url;
600
+ console.log({
601
+ finalUrl: finalUrl,
602
+ finalDefaultUrl: finalDefaultUrl,
603
+ supportsWebp: supportsWebp,
604
+ defaultWebpUrl: defaultWebpUrl,
605
+ defaultUrl: defaultUrl
606
+ });
586
607
  return finalUrl;
587
608
  };
588
609
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@micromag/core",
3
- "version": "0.3.807",
3
+ "version": "0.3.811",
4
4
  "private": false,
5
5
  "description": "",
6
6
  "keywords": [
@@ -167,5 +167,5 @@
167
167
  "access": "public",
168
168
  "registry": "https://registry.npmjs.org/"
169
169
  },
170
- "gitHead": "5aee5186c7e3b3dc6fe0f11e848943f21c33a195"
170
+ "gitHead": "80a754e5a50e86fa1e195015112ea0ff39008da8"
171
171
  }