var listToStyles = require('./listToStyles') module.exports = function (parentId, list, isProduction) { if (typeof __VUE_SSR_CONTEXT__ !== 'undefined') { var context = __VUE_SSR_CONTEXT__ var styles = context._styles if (!styles) { styles = context._styles = {} Object.defineProperty(context, 'styles', { enumberable: true, get : function() { return ( context._renderedStyles || (context._renderedStyles = renderStyles(styles)) ) } }) } list = listToStyles(parentId, list) if (isProduction) { addStyleProd(styles, list) } else { addStyleDev(styles, list) } } } // In production, render as few style tags as possible. // (mostly because IE9 has a limit on number of style tags) function addStyleProd (styles, list) { for (var i = 0; i < list.length; i++) { var parts = list[i].parts for (var j = 0; j < parts.length; j++) { var part = parts[j] // group style tags by media types. var id = part.media || 'default' var style = styles[id] if (style) { style.ids.push(part.id) style.css += '\n' + part.css } else { styles[id] = { ids: [part.id], css: part.css, media: part.media } } } } } // In dev we use individual style tag for each module for hot-reload // and source maps. function addStyleDev (styles, list) { for (var i = 0; i < list.length; i++) { var parts = list[i].parts for (var j = 0; j < parts.length; j++) { var part = parts[j] styles[part.id] = { ids: [part.id], css: part.css, media: part.media } } } } function renderStyles (styles) { var css = '' for (var key in styles) { var style = styles[key] css += '' } return css }