You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
import listToStyles from './listToStyles'
export default function addStylesServer (parentId, list, isProduction, context) { if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') { context = __VUE_SSR_CONTEXT__ } if (context) { if (!context.hasOwnProperty('styles')) { Object.defineProperty(context, 'styles', { enumerable: true, get: function() { return renderStyles(context._styles) } }) // expose renderStyles for vue-server-renderer (vuejs/#6353)
context._renderStyles = renderStyles }
var styles = context._styles || (context._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) { if (style.ids.indexOf(part.id) < 0) { 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 += '<style data-vue-ssr-id="' + style.ids.join(' ') + '"' + (style.media ? ( ' media="' + style.media + '"' ) : '') + '>' + style.css + '</style>' } return css }
|