diff options
Diffstat (limited to 'node_modules/vue-style-loader/lib/addStylesServer.js')
| -rw-r--r-- | node_modules/vue-style-loader/lib/addStylesServer.js | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/node_modules/vue-style-loader/lib/addStylesServer.js b/node_modules/vue-style-loader/lib/addStylesServer.js new file mode 100644 index 00000000..e80492fb --- /dev/null +++ b/node_modules/vue-style-loader/lib/addStylesServer.js @@ -0,0 +1,80 @@ +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 +} |
