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/addStylesShadow.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/addStylesShadow.js')
| -rw-r--r-- | node_modules/vue-style-loader/lib/addStylesShadow.js | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/node_modules/vue-style-loader/lib/addStylesShadow.js b/node_modules/vue-style-loader/lib/addStylesShadow.js new file mode 100644 index 00000000..72947108 --- /dev/null +++ b/node_modules/vue-style-loader/lib/addStylesShadow.js @@ -0,0 +1,70 @@ +import listToStyles from './listToStyles' + +export default function addStylesToShadowDOM (parentId, list, shadowRoot) { + var styles = listToStyles(parentId, list) + addStyles(styles, shadowRoot) +} + +/* +type StyleObject = { + id: number; + parts: Array<StyleObjectPart> +} + +type StyleObjectPart = { + css: string; + media: string; + sourceMap: ?string +} +*/ + +function addStyles (styles /* Array<StyleObject> */, shadowRoot) { + const injectedStyles = + shadowRoot._injectedStyles || + (shadowRoot._injectedStyles = {}) + for (var i = 0; i < styles.length; i++) { + var item = styles[i] + var style = injectedStyles[item.id] + if (!style) { + for (var j = 0; j < item.parts.length; j++) { + addStyle(item.parts[j], shadowRoot) + } + injectedStyles[item.id] = true + } + } +} + +function createStyleElement (shadowRoot) { + var styleElement = document.createElement('style') + styleElement.type = 'text/css' + shadowRoot.appendChild(styleElement) + return styleElement +} + +function addStyle (obj /* StyleObjectPart */, shadowRoot) { + var styleElement = createStyleElement(shadowRoot) + var css = obj.css + var media = obj.media + var sourceMap = obj.sourceMap + + if (media) { + styleElement.setAttribute('media', media) + } + + if (sourceMap) { + // https://developer.chrome.com/devtools/docs/javascript-debugging + // this makes source maps inside style tags work properly in Chrome + css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */' + // http://stackoverflow.com/a/26603875 + css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */' + } + + if (styleElement.styleSheet) { + styleElement.styleSheet.cssText = css + } else { + while (styleElement.firstChild) { + styleElement.removeChild(styleElement.firstChild) + } + styleElement.appendChild(document.createTextNode(css)) + } +} |
