diff options
| author | ruki <waruqi@gmail.com> | 2018-11-08 00:38:48 +0800 |
|---|---|---|
| committer | ruki <waruqi@gmail.com> | 2018-11-07 21:53:09 +0800 |
| commit | 26105034da4fcce7ac883c899d781f016559310d (patch) | |
| tree | c459a5dc4e3aa0972d9919033ece511ce76dd129 /node_modules/vue-style-loader/lib/addStylesServer.js | |
| parent | 2c77f00f1a7ecb6c8192f9c16d3b2001b254a107 (diff) | |
| download | xmake-docs-26105034da4fcce7ac883c899d781f016559310d.tar.gz xmake-docs-26105034da4fcce7ac883c899d781f016559310d.zip | |
switch to vuepress
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 +} |
