| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 | 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))  }}
 |