UNPKG

gatsby-background-image

Version:

Lazy-loading React background-image component with optional support for the blur-up effect.

113 lines (82 loc) 3.86 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.setTransitionStyles = exports.presetBackgroundStyles = exports.kebabifyBackgroundStyles = exports.fixOpacity = exports.fixClassName = exports.escapeClassNames = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose")); var _shortUuid = _interopRequireDefault(require("short-uuid")); var _HelperUtils = require("./HelperUtils"); var _ClassCache = require("./ClassCache"); var _ImageUtils = require("./ImageUtils"); var _SimpleUtils = require("./SimpleUtils"); var _excluded = ["className"]; var fixClassName = function fixClassName(_ref) { var className = _ref.className, props = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded); var convertedProps = (0, _HelperUtils.convertProps)(props); var elementExists = (0, _ClassCache.inComponentClassCache)(className); var imageData = (0, _ImageUtils.getCurrentSrcData)(convertedProps); var additionalClassname = _shortUuid.default.generate(); var randomClass = " gbi-" + (0, _SimpleUtils.hashString)(imageData && imageData.srcSet || className || "noclass") + "-" + additionalClassname; var additionalClass = elementExists || !className ? randomClass : ""; var componentClassNames = ("" + (className || "") + (additionalClass || "")).trim(); if (!elementExists) (0, _ClassCache.activateCacheForComponentClass)(className); return [componentClassNames]; }; exports.fixClassName = fixClassName; var escapeClassNames = function escapeClassNames(classNames) { if (classNames) { var specialChars = (0, _SimpleUtils.isBrowser)() && window._gbiSpecialChars ? window._gbiSpecialChars : typeof __GBI_SPECIAL_CHARS__ !== "undefined" ? __GBI_SPECIAL_CHARS__ : ':/'; var specialCharRegEx = new RegExp("[" + specialChars + "]", 'g'); return classNames.replace(specialCharRegEx, '\\$&'); } return classNames; }; exports.escapeClassNames = escapeClassNames; var kebabifyBackgroundStyles = function kebabifyBackgroundStyles(styles) { if ((0, _SimpleUtils.isString)(styles)) { return styles; } if (styles instanceof Object) { return Object.keys(styles).filter(function (key) { return key.indexOf('background') === 0 && styles[key] !== ''; }).reduce(function (resultingStyles, key) { return "" + resultingStyles + (0, _SimpleUtils.toKebabCase)(key) + ": " + styles[key] + ";\n"; }, ""); } return ""; }; exports.kebabifyBackgroundStyles = kebabifyBackgroundStyles; var setTransitionStyles = function setTransitionStyles(transitionDelay, fadeIn) { if (transitionDelay === void 0) { transitionDelay = "0.25s"; } if (fadeIn === void 0) { fadeIn = true; } return fadeIn ? "transition: opacity 0.5s ease " + transitionDelay + ";" : "transition: none;"; }; exports.setTransitionStyles = setTransitionStyles; var fixOpacity = function fixOpacity(props) { var styledProps = (0, _extends2.default)({}, props); if (!styledProps.preserveStackingContext) { try { if (styledProps.style && styledProps.style.opacity) { if (isNaN(styledProps.style.opacity) || styledProps.style.opacity > 0.99) { styledProps.style.opacity = 0.99; } } } catch (e) {} } return styledProps; }; exports.fixOpacity = fixOpacity; var presetBackgroundStyles = function presetBackgroundStyles(backgroundStyles) { var defaultBackgroundStyles = { backgroundPosition: "center", backgroundRepeat: "no-repeat", backgroundSize: "cover" }; return (0, _extends2.default)({}, defaultBackgroundStyles, backgroundStyles); }; exports.presetBackgroundStyles = presetBackgroundStyles;