UNPKG

2.44 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5exports.__esModule = true;
6exports.matchesMedia = exports.hasArtDirectionArray = exports.hasArtDirectionSupport = exports.createArtDirectionSources = exports.groupByMedia = void 0;
7
8var _sortMediaQueries = _interopRequireDefault(require("sort-media-queries"));
9
10var _SimpleUtils = require("./SimpleUtils");
11
12var groupByMedia = function groupByMedia(imageVariants) {
13 var without = [];
14 var sortedVariants = (0, _sortMediaQueries.default)(imageVariants, 'media');
15 sortedVariants.forEach(function (variant) {
16 return !variant.media && without.push(variant);
17 });
18
19 if (without.length > 1 && process.env.NODE_ENV !== "production") {
20 console.warn("We've found " + without.length + " sources without a media property. They might be ignored by the browser, see: https://www.gatsbyjs.org/packages/gatsby-image/#art-directing-multiple-images");
21 }
22
23 return sortedVariants;
24};
25
26exports.groupByMedia = groupByMedia;
27
28var createArtDirectionSources = function createArtDirectionSources(_ref) {
29 var fluid = _ref.fluid,
30 fixed = _ref.fixed;
31 var currentSource = fluid || fixed;
32 return currentSource.reduce(function (sources, image) {
33 if (!image.media) {
34 return sources;
35 }
36
37 var source = document.createElement('source');
38
39 if (image.srcSetWebp) {
40 source.type = "image/webp";
41 source.srcset = image.srcSetWebp;
42 }
43
44 if (image.sizes) {
45 source.sizes = image.sizes;
46 }
47
48 source.media = image.media;
49 sources.push(source);
50 return sources;
51 }, []);
52};
53
54exports.createArtDirectionSources = createArtDirectionSources;
55
56var hasArtDirectionSupport = function hasArtDirectionSupport(props, prop) {
57 return props[prop] && Array.isArray(props[prop]) && props[prop].some(function (image) {
58 return !!image && typeof image.media !== 'undefined';
59 });
60};
61
62exports.hasArtDirectionSupport = hasArtDirectionSupport;
63
64var hasArtDirectionArray = function hasArtDirectionArray(props) {
65 return hasArtDirectionSupport(props, 'fluid') || hasArtDirectionSupport(props, 'fixed');
66};
67
68exports.hasArtDirectionArray = hasArtDirectionArray;
69
70var matchesMedia = function matchesMedia(_ref2) {
71 var media = _ref2.media;
72 return media ? (0, _SimpleUtils.isBrowser)() && typeof window.matchMedia !== "undefined" && !!window.matchMedia(media).matches : false;
73};
74
75exports.matchesMedia = matchesMedia;
\No newline at end of file