@micromag/core 0.3.807 → 0.3.812

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,13 @@ 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;
549
557
  var diffWidth = width !== null && finalContainerWidth !== null ? width - finalContainerWidth : null;
550
558
  var diffHeight = height !== null && finalContainerHeight !== null ? height - finalContainerHeight : null;
551
559
  var isLarger = (diffWidth === null || diffWidth >= 0) && (diffHeight === null || diffHeight >= 0);
@@ -568,7 +576,7 @@ var getOptimalImageUrl = function getOptimalImageUrl() {
568
576
  diff <= maxDiff && !currentIsLarger && !isLarger && sizeIsLarger) {
569
577
  return {
570
578
  key: key,
571
- url: url,
579
+ url: sizeUrl,
572
580
  diff: diff,
573
581
  isLarger: isLarger
574
582
  };
@@ -576,7 +584,7 @@ var getOptimalImageUrl = function getOptimalImageUrl() {
576
584
  return acc;
577
585
  }, {
578
586
  key: null,
579
- url: defaultUrl,
587
+ url: finalDefaultUrl,
580
588
  diff: Infinity,
581
589
  isLarger: false,
582
590
  size: 0
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,13 @@ 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;
550
558
  var diffWidth = width !== null && finalContainerWidth !== null ? width - finalContainerWidth : null;
551
559
  var diffHeight = height !== null && finalContainerHeight !== null ? height - finalContainerHeight : null;
552
560
  var isLarger = (diffWidth === null || diffWidth >= 0) && (diffHeight === null || diffHeight >= 0);
@@ -569,7 +577,7 @@ var getOptimalImageUrl = function getOptimalImageUrl() {
569
577
  diff <= maxDiff && !currentIsLarger && !isLarger && sizeIsLarger) {
570
578
  return {
571
579
  key: key,
572
- url: url,
580
+ url: sizeUrl,
573
581
  diff: diff,
574
582
  isLarger: isLarger
575
583
  };
@@ -577,7 +585,7 @@ var getOptimalImageUrl = function getOptimalImageUrl() {
577
585
  return acc;
578
586
  }, {
579
587
  key: null,
580
- url: defaultUrl,
588
+ url: finalDefaultUrl,
581
589
  diff: Infinity,
582
590
  isLarger: false,
583
591
  size: 0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@micromag/core",
3
- "version": "0.3.807",
3
+ "version": "0.3.812",
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": "34ea72adfaffec7c33e328b9c46301cd18cbde83"
171
171
  }