import { css } from 'styled-components';
import { media, highDPI } from './media';
import mobileSpriteImg from '../../assets/generated/museum-mobile-sprite.png';
import mobileSpriteRetinaImg from '../../assets/generated/museum-mobile-sprite-2x.png';
import mobileSpriteManifest from '../../assets/generated/museum-mobile-sprites.json';
import tabletSpriteImg from '../../assets/generated/museum-tablet-sprite.png';
import tabletSpriteRetinaImg from '../../assets/generated/museum-tablet-sprite-2x.png';
import tabletSpriteManifest from '../../assets/generated/museum-tablet-sprites.json';
import desktopSpriteImg from '../../assets/generated/museum-desktop-sprite.png';
import desktopSpriteRetinaImg from '../../assets/generated/museum-desktop-sprite-2x.png';
import desktopSpriteManifest from '../../assets/generated/museum-desktop-sprites.json';
const buildSprite = (manifest, spriteImg, spriteRetinaImg) => (imageName) => {
if (process.env.NODE_ENV === 'development') {
if (!manifest[imageName]) {
throw new Error(`No image named "${imageName}" available in sprite!`);
}
}
const data = manifest[imageName] || { normal: {}, retina: {} };
return css`
background-image: url(${spriteImg});
background-position: -${data.normal.x}px -${data.normal.y}px;
width: ${data.normal.width}px;
height: ${data.normal.height}px;
${highDPI`
background-image: url(${spriteRetinaImg});
background-position: -${data.retina.x / 2}px -${data.retina.y / 2}px;
background-size: ${data.retina.total_width / 2}px ${data.retina.total_height / 2}px;
`}
`;
};
const mobileSprite = buildSprite(mobileSpriteManifest, mobileSpriteImg, mobileSpriteRetinaImg);
const tabletSprite = buildSprite(tabletSpriteManifest, tabletSpriteImg, tabletSpriteRetinaImg);
const desktopSprite = buildSprite(desktopSpriteManifest, desktopSpriteImg, desktopSpriteRetinaImg);
export const mobile = mobileSprite;
export const tablet = (name) => media.tablet`
${tabletSprite(name)}
`;
export const desktop = (name) => media.tabletLandscape`
${desktopSprite(name)}
`;