aboutsummaryrefslogtreecommitdiff
path: root/catapult/third_party/polymer/components/shadycss/scoping-shim.min.js.map
blob: 2389dcd1ae18da6d819a5ceaaffac1a5bc24b011 (plain)
1
{"version":3,"sources":["src/css-parse.js"," [synthetic:util/global] ","src/style-settings.js","src/common-regex.js","src/unscoped-style-handler.js","src/style-util.js","src/style-transformer.js","src/scoping-shim.js","src/document-watcher.js","src/style-properties.js","src/style-info.js","src/style-placeholder.js","src/style-cache.js","src/template-map.js","src/apply-shim-utils.js","src/common-utils.js","entrypoints/scoping-shim.js"],"names":["$jscomp.global","constructor","StyleNode","parse","text","replace","RX$$module$src$css_parse.comments","RX$$module$src$css_parse.port","parseCss","root","length","n","i","l","OPEN_BRACE","p","previous","push","CLOSE_BRACE","node","t","substring","trim","ss","_expandUnicodeEscapes","RX$$module$src$css_parse.multipleSpaces","lastIndexOf","s","indexOf","AT_START","MEDIA_START","types$$module$src$css_parse.MEDIA_RULE","match","RX$$module$src$css_parse.keyframesRule","types$$module$src$css_parse.KEYFRAMES_RULE","split","pop","VAR_START","types$$module$src$css_parse.MIXIN_RULE","types$$module$src$css_parse.STYLE_RULE","r$","r","code","repeat","stringify","preserveProperties","cssText","rules","RX$$module$src$css_parse.customProp","RX$$module$src$css_parse.mixinProp","RX$$module$src$css_parse.mixinApply","RX$$module$src$css_parse.varApply","STYLE_RULE","KEYFRAMES_RULE","MEDIA_RULE","MIXIN_RULE","comments","port","customProp","mixinProp","mixinApply","varApply","keyframesRule","multipleSpaces","nativeShadow","window","nativeCssVariables_","calcCssVariables","settings","navigator","userAgent","CSS","supports","cssBuild","ShadyCSS","undefined","nativeCss","nativeCssVariables","module$src$style_settings.cssBuild","VAR_ASSIGN","MIXIN_MATCH","VAR_CONSUMED","ANIMATION_MATCH","MEDIA_MATCH","BRACKETED","styleTextSet","Set","toCssText","callback","forEachRule","rulesForStyle","style","textContent","isKeyframesSelector","rule","styleRuleCallback","keyframesRuleCallback","onlyActiveRules","skipRules","type","matchMedia","matches","applyCss","moniker","target","contextNode","document","createElement","setAttribute","applyStyle","lastHeadApplyNode","applyStylePlaceHolder","placeHolder","createComment","scope","head","insertBefore","after","firstChild","nextSibling","compareDocumentPosition","position","Node","DOCUMENT_POSITION_PRECEDING","findMatchingParen","start","level","processVariableAndFallback","str","end","inner","prefix","suffix","comma","value","fallback","setElementClassRaw","element","call","wrap","getIsExtends","localName","typeExtension","is","getAttribute","extends","splitSelectorList","selector","parts","part","slice","getCssBuild","__cssBuild","attrValue","CSS_BUILD_ATTR","buildComment","content","Comment","commentParts","parentNode","removeChild","isOptimalCssBuild","StyleTransformer","domAddScope","_transformDom","fn","startNode","transformer","nodeType","ELEMENT_NODE","c$","childNodes","_content","children","shouldRemoveScope","classList","remove","SCOPE_NAME","add","c","CLASS","newValue","domReplaceScope","oldScope","newScope","domRemoveScope","elementStyles","styleRules","css","ext","hostScope","_calcHostScope","_calcElementScope","CSS_CLASS_PREFIX","isScoped","_transformRule","transformedSelector","_transformRuleCss","_transformComplexSelector","p$","filter","join","COMPLEX_SELECTOR_SEP","_twiddleNthPlus","NTH","m","inside","_preserveMatchesPseudo","MATCHES","index","Error","input","MATCHES_REPLACEMENT","_replaceMatchesPseudo","reduce","acc","cur","idx","stop","isNth","test","isMatches","SLOTTED_START","SIMPLE_SELECTOR_SEP","info","_transformCompoundSelector","combinator","slottedIndex","SLOTTED","HOST","_transformHostSelector","_transformSimpleSelector","slotted","SLOTTED_PAREN","paren","DIR_PAREN","before","dir","attributes","output","PSEUDO_PREFIX","HOST_PAREN","SIMPLE_SELECTOR_PREFIX","host","SELECTOR_NO_MATCH","normalizeRootSelector","ROOT","_transformDocumentSelector","SCOPE_DOC_SELECTOR","$jscomp.global.Object.defineProperties","$jscompDefaultExport","StyleInfo","ast","placeholder","ownStylePropertyNames","overrideStyleProperties","customStyle","scopeSelector","styleProperties","get","set","styleInfo","_getStyleRules","prototype","matchesSelector","method","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","IS_IE","StyleProperties","decorateStyles","props","keyframes","ruleIndex","decorateRule","propertyInfo","collectPropertiesInCssText","exec","name","onKeyframesRule","_keyframes","names","properties","collectProperties","collectCssText","collectConsumingCssText","Object","assign","any","valueForProperty","property","valueForProperties","propertyValue","lastIndex","colon","pp","propertyDataFromStyles","o","selectorToMatch","parseInt","key","whenHostOrRootRule","parsedSelector","isRoot","isHost","hostAndRootPropertiesForScope","hostProps","rootProps","_element","transformStyles","hostSelector","hostRx","RegExp","StyleInfo$$module$src$style_info.get","keyframeTransforms","_elementKeyframeTransforms","applyProperties","applyKeyframeTransforms","hasAnimations","keyframeNamesToTransform","keyframe","transform","_scopeSelector","keyframesRules","keyframesNameRx","_scopeKeyframes","transformedKeyframesName","scopeId","_keyframesRuleTransformer","applyCustomStyle","XSCOPE_NAME","placeholderMap","ce","origDefine","wrappedDefine","clazz","options","StyleCache","cache","store","tagname","styleElement","list","typeMax","shift","flush","scopeRegExp","getCurrentScope","getOwnerScope","ownerRoot","getRootNode","ownerDocument","handler","mxns","x","mxn","documentElement","addedNodes","currentScope","ShadowRoot","j","unscopedNodes","unscopedNode","scopeForPreviouslyUnscopedNode","observer","MutationObserver","observe","childList","subtree","delayedStart","body","requestAnimationFrame","readyState","listener","removeEventListener","addEventListener","takeRecords","module$src$document_watcher.flush","templateMap","promise","Promise","resolve","invalidate","elementName","template","templateIsValid","startValidatingTemplate","_validating","then","styleCache","ScopingShim","_scopeCounter","_documentOwner","_documentOwnerStyleInfo","StyleInfo$$module$src$style_info.set","_elementsHaveApplied","_customStyleInterface","_applyShim","flush.prototype","getStyleAst.prototype","getStyleAst","styleAstToString.prototype","styleAstToString","prepareTemplate.prototype","prepareTemplate","prepareTemplateDom","prepareTemplateStyles","prepareTemplateStyles.prototype","_prepared","optimalBuild","styleTextParts","styles","querySelectorAll","hasAttribute","scopingAttribute","has","newStyle","cloneNode","appendChild","_ensure","hasMixins","ownPropertyNames","_generateStaticStyle","shadowroot","_style","_ownPropertyNames","prepareTemplateDom.prototype","_domPrepared","_prepareHost","_ensureCustomStyleInterface","CustomStyleInterface","transformCustomStyleForDocument","flushCustomStyles","_ensureApplyShim","ApplyShim","flushCustomStyles.prototype","customStyles","_revalidateCustomStyleApplyShim","_revalidateApplyShim","_updateProperties","_applyCustomStyles","styleDocument","styleElement.prototype","overrideProps","styleElementNativeVariables","removeProperty","setProperty","shadowRoot","querySelector","styleElementShimVariables","_applyStyleProperties","fetch","entry","_validate","pn","cachedStyle","cacheEntry","oldScopeSelector","id","_generateScopeSelector","applyElementStyle","applyElementScopeSelector","v","_styleOwnerForNode","owner","ownerStyleInfo","ownerProperties","create","hostAndRootProps","propertiesMatchingHost","_mixinOverrideStyles","overrides","reify","getOwnPropertyNames","styleDocument.prototype","styleSubtree","styleSubtree.prototype","shadowChildren","transformCustomStyleForDocument.prototype","documentRule","getComputedStyleValue.prototype","getComputedStyleValue","getComputedStyle","getPropertyValue","setElementClass.prototype","setElementClass","classString","classes","scopeName","classAttr","k$","_styleInfoForNode.prototype","_styleInfoForNode","scopeNode.prototype","scopeNode","unscopeNode.prototype","unscopeNode","scopeForNode.prototype","scopeForNode","currentScopeForNode.prototype","currentScopeForNode","defineProperties","scopingShim","elementExtends"],"mappings":"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","file":"scoping-shim.min.js","sourcesContent":["/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n/*\nExtremely simple css parser. Intended to be not more than what we need\nand definitely not necessarily correct =).\n*/\n\n'use strict';\n\n/** @unrestricted */\nclass StyleNode {\n  constructor() {\n    /** @type {number} */\n    this['start'] = 0;\n    /** @type {number} */\n    this['end'] = 0;\n    /** @type {StyleNode} */\n    this['previous'] = null;\n    /** @type {StyleNode} */\n    this['parent'] = null;\n    /** @type {Array<StyleNode>} */\n    this['rules'] = null;\n    /** @type {string} */\n    this['parsedCssText'] = '';\n    /** @type {string} */\n    this['cssText'] = '';\n    /** @type {boolean} */\n    this['atRule'] = false;\n    /** @type {number} */\n    this['type'] = 0;\n    /** @type {string} */\n    this['keyframesName'] = '';\n    /** @type {string} */\n    this['selector'] = '';\n    /** @type {string} */\n    this['parsedSelector'] = '';\n  }\n}\n\nexport {StyleNode}\n\n// given a string of css, return a simple rule tree\n/**\n * @param {string} text\n * @return {StyleNode}\n */\nexport function parse(text) {\n  text = clean(text);\n  return parseCss(lex(text), text);\n}\n\n// remove stuff we don't care about that may hinder parsing\n/**\n * @param {string} cssText\n * @return {string}\n */\nfunction clean(cssText) {\n  return cssText.replace(RX.comments, '').replace(RX.port, '');\n}\n\n// super simple {...} lexer that returns a node tree\n/**\n * @param {string} text\n * @return {StyleNode}\n */\nfunction lex(text) {\n  let root = new StyleNode();\n  root['start'] = 0;\n  root['end'] = text.length\n  let n = root;\n  for (let i = 0, l = text.length; i < l; i++) {\n    if (text[i] === OPEN_BRACE) {\n      if (!n['rules']) {\n        n['rules'] = [];\n      }\n      let p = n;\n      let previous = p['rules'][p['rules'].length - 1] || null;\n      n = new StyleNode();\n      n['start'] = i + 1;\n      n['parent'] = p;\n      n['previous'] = previous;\n      p['rules'].push(n);\n    } else if (text[i] === CLOSE_BRACE) {\n      n['end'] = i + 1;\n      n = n['parent'] || root;\n    }\n  }\n  return root;\n}\n\n// add selectors/cssText to node tree\n/**\n * @param {StyleNode} node\n * @param {string} text\n * @return {StyleNode}\n */\nfunction parseCss(node, text) {\n  let t = text.substring(node['start'], node['end'] - 1);\n  node['parsedCssText'] = node['cssText'] = t.trim();\n  if (node['parent']) {\n    let ss = node['previous'] ? node['previous']['end'] : node['parent']['start'];\n    t = text.substring(ss, node['start'] - 1);\n    t = _expandUnicodeEscapes(t);\n    t = t.replace(RX.multipleSpaces, ' ');\n    // TODO(sorvell): ad hoc; make selector include only after last ;\n    // helps with mixin syntax\n    t = t.substring(t.lastIndexOf(';') + 1);\n    let s = node['parsedSelector'] = node['selector'] = t.trim();\n    node['atRule'] = (s.indexOf(AT_START) === 0);\n    // note, support a subset of rule types...\n    if (node['atRule']) {\n      if (s.indexOf(MEDIA_START) === 0) {\n        node['type'] = types.MEDIA_RULE;\n      } else if (s.match(RX.keyframesRule)) {\n        node['type'] = types.KEYFRAMES_RULE;\n        node['keyframesName'] =\n          node['selector'].split(RX.multipleSpaces).pop();\n      }\n    } else {\n      if (s.indexOf(VAR_START) === 0) {\n        node['type'] = types.MIXIN_RULE;\n      } else {\n        node['type'] = types.STYLE_RULE;\n      }\n    }\n  }\n  let r$ = node['rules'];\n  if (r$) {\n    for (let i = 0, l = r$.length, r;\n      (i < l) && (r = r$[i]); i++) {\n      parseCss(r, text);\n    }\n  }\n  return node;\n}\n\n/**\n * conversion of sort unicode escapes with spaces like `\\33 ` (and longer) into\n * expanded form that doesn't require trailing space `\\000033`\n * @param {string} s\n * @return {string}\n */\nfunction _expandUnicodeEscapes(s) {\n  return s.replace(/\\\\([0-9a-f]{1,6})\\s/gi, function() {\n    let code = arguments[1],\n      repeat = 6 - code.length;\n    while (repeat--) {\n      code = '0' + code;\n    }\n    return '\\\\' + code;\n  });\n}\n\n/**\n * stringify parsed css.\n * @param {StyleNode} node\n * @param {boolean=} preserveProperties\n * @param {string=} text\n * @return {string}\n */\nexport function stringify(node, preserveProperties, text = '') {\n  // calc rule cssText\n  let cssText = '';\n  if (node['cssText'] || node['rules']) {\n    let r$ = node['rules'];\n    if (r$ && !_hasMixinRules(r$)) {\n      for (let i = 0, l = r$.length, r;\n        (i < l) && (r = r$[i]); i++) {\n        cssText = stringify(r, preserveProperties, cssText);\n      }\n    } else {\n      cssText = preserveProperties ? node['cssText'] :\n        removeCustomProps(node['cssText']);\n      cssText = cssText.trim();\n      if (cssText) {\n        cssText = '  ' + cssText + '\\n';\n      }\n    }\n  }\n  // emit rule if there is cssText\n  if (cssText) {\n    if (node['selector']) {\n      text += node['selector'] + ' ' + OPEN_BRACE + '\\n';\n    }\n    text += cssText;\n    if (node['selector']) {\n      text += CLOSE_BRACE + '\\n\\n';\n    }\n  }\n  return text;\n}\n\n/**\n * @param {Array<StyleNode>} rules\n * @return {boolean}\n */\nfunction _hasMixinRules(rules) {\n  let r = rules[0];\n  return Boolean(r) && Boolean(r['selector']) && r['selector'].indexOf(VAR_START) === 0;\n}\n\n/**\n * @param {string} cssText\n * @return {string}\n */\nfunction removeCustomProps(cssText) {\n  cssText = removeCustomPropAssignment(cssText);\n  return removeCustomPropApply(cssText);\n}\n\n/**\n * @param {string} cssText\n * @return {string}\n */\nexport function removeCustomPropAssignment(cssText) {\n  return cssText\n    .replace(RX.customProp, '')\n    .replace(RX.mixinProp, '');\n}\n\n/**\n * @param {string} cssText\n * @return {string}\n */\nfunction removeCustomPropApply(cssText) {\n  return cssText\n    .replace(RX.mixinApply, '')\n    .replace(RX.varApply, '');\n}\n\n/** @enum {number} */\nexport const types = {\n  STYLE_RULE: 1,\n  KEYFRAMES_RULE: 7,\n  MEDIA_RULE: 4,\n  MIXIN_RULE: 1000\n}\n\nconst OPEN_BRACE = '{';\nconst CLOSE_BRACE = '}';\n\n// helper regexp's\nconst RX = {\n  comments: /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//gim,\n  port: /@import[^;]*;/gim,\n  customProp: /(?:^[^;\\-\\s}]+)?--[^;{}]*?:[^{};]*?(?:[;\\n]|$)/gim,\n  mixinProp: /(?:^[^;\\-\\s}]+)?--[^;{}]*?:[^{};]*?{[^}]*?}(?:[;\\n]|$)?/gim,\n  mixinApply: /@apply\\s*\\(?[^);]*\\)?\\s*(?:[;\\n]|$)?/gim,\n  varApply: /[^;:]*?:[^;]*?var\\([^;]*\\)(?:[;\\n]|$)?/gim,\n  keyframesRule: /^@[^\\s]*keyframes/,\n  multipleSpaces: /\\s+/g\n}\n\nconst VAR_START = '--';\nconst MEDIA_START = '@media';\nconst AT_START = '@';\n",null,"/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nexport const nativeShadow = !(window['ShadyDOM'] && window['ShadyDOM']['inUse']);\nlet nativeCssVariables_;\n\n/**\n * @param {(ShadyCSSOptions | ShadyCSSInterface)=} settings\n */\nfunction calcCssVariables(settings) {\n  if (settings && settings['shimcssproperties']) {\n    nativeCssVariables_ = false;\n  } else {\n    // chrome 49 has semi-working css vars, check if box-shadow works\n    // safari 9.1 has a recalc bug: https://bugs.webkit.org/show_bug.cgi?id=155782\n    // However, shim css custom properties are only supported with ShadyDOM enabled,\n    // so fall back on native if we do not detect ShadyDOM\n    // Edge 15: custom properties used in ::before and ::after will also be used in the parent element\n    // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/12414257/\n    nativeCssVariables_ = nativeShadow || Boolean(!navigator.userAgent.match(/AppleWebKit\\/601|Edge\\/15/) &&\n      window.CSS && CSS.supports && CSS.supports('box-shadow', '0 0 0 var(--foo)'));\n  }\n}\n\n/** @type {string | undefined} */\nexport let cssBuild;\nif (window.ShadyCSS && window.ShadyCSS.cssBuild !== undefined) {\n  cssBuild = window.ShadyCSS.cssBuild;\n}\n\nif (window.ShadyCSS && window.ShadyCSS.nativeCss !== undefined) {\n  nativeCssVariables_ = window.ShadyCSS.nativeCss;\n} else if (window.ShadyCSS) {\n  calcCssVariables(window.ShadyCSS);\n  // reset window variable to let ShadyCSS API take its place\n  window.ShadyCSS = undefined;\n} else {\n  calcCssVariables(window['WebComponents'] && window['WebComponents']['flags']);\n}\n\n// Hack for type error under new type inference which doesn't like that\n// nativeCssVariables is updated in a function and assigns the type\n// `function(): ?` instead of `boolean`.\nexport const nativeCssVariables = /** @type {boolean} */(nativeCssVariables_);","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\nexport const VAR_ASSIGN = /(?:^|[;\\s{]\\s*)(--[\\w-]*?)\\s*:\\s*(?:((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};{])+)|\\{([^}]*)\\}(?:(?=[;\\s}])|$))/gi;\nexport const MIXIN_MATCH = /(?:^|\\W+)@apply\\s*\\(?([^);\\n]*)\\)?/gi;\nexport const VAR_CONSUMED = /(--[\\w-]+)\\s*([:,;)]|$)/gi;\nexport const ANIMATION_MATCH = /(animation\\s*:)|(animation-name\\s*:)/;\nexport const MEDIA_MATCH = /@media\\s(.*)/;\nexport const IS_VAR = /^--/;\nexport const BRACKETED = /\\{[^}]*\\}/g;\nexport const HOST_PREFIX = '(?:^|[^.#[:])';\nexport const HOST_SUFFIX = '($|[.:[\\\\s>+~])';\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\n/** @type {!Set<string>} */\nconst styleTextSet = new Set();\n\nexport const scopingAttribute = 'shady-unscoped';\n\n/**\n * Add a specifically-marked style to the document directly, and only one copy of that style.\n *\n * @param {!HTMLStyleElement} style\n * @return {undefined}\n */\nexport function processUnscopedStyle(style) {\n  const text = style.textContent;\n  if (!styleTextSet.has(text)) {\n    styleTextSet.add(text);\n    const newStyle = style.cloneNode(true);\n    document.head.appendChild(newStyle);\n  }\n}\n\n/**\n * Check if a style is supposed to be unscoped\n * @param {!HTMLStyleElement} style\n * @return {boolean} true if the style has the unscoping attribute\n */\nexport function isUnscopedStyle(style) {\n  return style.hasAttribute(scopingAttribute);\n}","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {nativeShadow, nativeCssVariables, cssBuild} from './style-settings.js';\nimport {parse, stringify, types, StyleNode} from './css-parse.js'; // eslint-disable-line no-unused-vars\nimport {MEDIA_MATCH} from './common-regex.js';\nimport {processUnscopedStyle, isUnscopedStyle} from './unscoped-style-handler.js';\n\n/**\n * @param {string|StyleNode} rules\n * @param {function(StyleNode)=} callback\n * @return {string}\n */\nexport function toCssText (rules, callback) {\n  if (!rules) {\n    return '';\n  }\n  if (typeof rules === 'string') {\n    rules = parse(rules);\n  }\n  if (callback) {\n    forEachRule(rules, callback);\n  }\n  return stringify(rules, nativeCssVariables);\n}\n\n/**\n * @param {HTMLStyleElement} style\n * @return {StyleNode}\n */\nexport function rulesForStyle(style) {\n  if (!style['__cssRules'] && style.textContent) {\n    style['__cssRules'] = parse(style.textContent);\n  }\n  return style['__cssRules'] || null;\n}\n\n// Tests if a rule is a keyframes selector, which looks almost exactly\n// like a normal selector but is not (it has nothing to do with scoping\n// for example).\n/**\n * @param {StyleNode} rule\n * @return {boolean}\n */\nexport function isKeyframesSelector(rule) {\n  return Boolean(rule['parent']) &&\n  rule['parent']['type'] === types.KEYFRAMES_RULE;\n}\n\n/**\n * @param {StyleNode} node\n * @param {Function=} styleRuleCallback\n * @param {Function=} keyframesRuleCallback\n * @param {boolean=} onlyActiveRules\n */\nexport function forEachRule(node, styleRuleCallback, keyframesRuleCallback, onlyActiveRules) {\n  if (!node) {\n    return;\n  }\n  let skipRules = false;\n  let type = node['type'];\n  if (onlyActiveRules) {\n    if (type === types.MEDIA_RULE) {\n      let matchMedia = node['selector'].match(MEDIA_MATCH);\n      if (matchMedia) {\n        // if rule is a non matching @media rule, skip subrules\n        if (!window.matchMedia(matchMedia[1]).matches) {\n          skipRules = true;\n        }\n      }\n    }\n  }\n  if (type === types.STYLE_RULE) {\n    styleRuleCallback(node);\n  } else if (keyframesRuleCallback &&\n    type === types.KEYFRAMES_RULE) {\n    keyframesRuleCallback(node);\n  } else if (type === types.MIXIN_RULE) {\n    skipRules = true;\n  }\n  let r$ = node['rules'];\n  if (r$ && !skipRules) {\n    for (let i=0, l=r$.length, r; (i<l) && (r=r$[i]); i++) {\n      forEachRule(r, styleRuleCallback, keyframesRuleCallback, onlyActiveRules);\n    }\n  }\n}\n\n// add a string of cssText to the document.\n/**\n * @param {string} cssText\n * @param {string} moniker\n * @param {Node} target\n * @param {Node} contextNode\n * @return {HTMLStyleElement}\n */\nexport function applyCss(cssText, moniker, target, contextNode) {\n  let style = createScopeStyle(cssText, moniker);\n  applyStyle(style, target, contextNode);\n  return style;\n}\n\n/**\n * @param {string} cssText\n * @param {string} moniker\n * @return {HTMLStyleElement}\n */\nexport function createScopeStyle(cssText, moniker) {\n  let style = /** @type {HTMLStyleElement} */(document.createElement('style'));\n  if (moniker) {\n    style.setAttribute('scope', moniker);\n  }\n  style.textContent = cssText;\n  return style;\n}\n\n/**\n * Track the position of the last added style for placing placeholders\n * @type {Node}\n */\nlet lastHeadApplyNode = null;\n\n// insert a comment node as a styling position placeholder.\n/**\n * @param {string} moniker\n * @return {!Comment}\n */\nexport function applyStylePlaceHolder(moniker) {\n  let placeHolder = document.createComment(' Shady DOM styles for ' +\n    moniker + ' ');\n  let after = lastHeadApplyNode ?\n    lastHeadApplyNode['nextSibling'] : null;\n  let scope = document.head;\n  scope.insertBefore(placeHolder, after || scope.firstChild);\n  lastHeadApplyNode = placeHolder;\n  return placeHolder;\n}\n\n/**\n * @param {HTMLStyleElement} style\n * @param {?Node} target\n * @param {?Node} contextNode\n */\nexport function applyStyle(style, target, contextNode) {\n  target = target || document.head;\n  let after = (contextNode && contextNode.nextSibling) ||\n    target.firstChild;\n  target.insertBefore(style, after);\n  if (!lastHeadApplyNode) {\n    lastHeadApplyNode = style;\n  } else {\n    // only update lastHeadApplyNode if the new style is inserted after the old lastHeadApplyNode\n    let position = style.compareDocumentPosition(lastHeadApplyNode);\n    if (position === Node.DOCUMENT_POSITION_PRECEDING) {\n      lastHeadApplyNode = style;\n    }\n  }\n}\n\n/**\n * @param {string} buildType\n * @return {boolean}\n */\nexport function isTargetedBuild(buildType) {\n  return nativeShadow ? buildType === 'shadow' : buildType === 'shady';\n}\n\n/**\n * Walk from text[start] matching parens and\n * returns position of the outer end paren\n * @param {string} text\n * @param {number} start\n * @return {number}\n */\nexport function findMatchingParen(text, start) {\n  let level = 0;\n  for (let i=start, l=text.length; i < l; i++) {\n    if (text[i] === '(') {\n      level++;\n    } else if (text[i] === ')') {\n      if (--level === 0) {\n        return i;\n      }\n    }\n  }\n  return -1;\n}\n\n/**\n * @param {string} str\n * @param {function(string, string, string, string)} callback\n */\nexport function processVariableAndFallback(str, callback) {\n  // find 'var('\n  let start = str.indexOf('var(');\n  if (start === -1) {\n    // no var?, everything is prefix\n    return callback(str, '', '', '');\n  }\n  //${prefix}var(${inner})${suffix}\n  let end = findMatchingParen(str, start + 3);\n  let inner = str.substring(start + 4, end);\n  let prefix = str.substring(0, start);\n  // suffix may have other variables\n  let suffix = processVariableAndFallback(str.substring(end + 1), callback);\n  let comma = inner.indexOf(',');\n  // value and fallback args should be trimmed to match in property lookup\n  if (comma === -1) {\n    // variable, no fallback\n    return callback(prefix, inner.trim(), '', suffix);\n  }\n  // var(${value},${fallback})\n  let value = inner.substring(0, comma).trim();\n  let fallback = inner.substring(comma + 1).trim();\n  return callback(prefix, value, fallback, suffix);\n}\n\n/**\n * @param {Element} element\n * @param {string} value\n */\nexport function setElementClassRaw(element, value) {\n  // use native setAttribute provided by ShadyDOM when setAttribute is patched\n  if (nativeShadow) {\n    element.setAttribute('class', value);\n  } else {\n    window['ShadyDOM']['nativeMethods']['setAttribute'].call(element, 'class', value);\n  }\n}\n\nexport const wrap = window['ShadyDOM'] && window['ShadyDOM']['wrap'] || ((node) => node);\n\n/**\n * @param {Element | {is: string, extends: string}} element\n * @return {{is: string, typeExtension: string}}\n */\nexport function getIsExtends(element) {\n  let localName = element['localName'];\n  let is = '', typeExtension = '';\n  /*\n  NOTE: technically, this can be wrong for certain svg elements\n  with `-` in the name like `<font-face>`\n  */\n  if (localName) {\n    if (localName.indexOf('-') > -1) {\n      is = localName;\n    } else {\n      typeExtension = localName;\n      is = (element.getAttribute && element.getAttribute('is')) || '';\n    }\n  } else {\n    is = /** @type {?} */(element).is;\n    typeExtension = /** @type {?} */(element).extends;\n  }\n  return {is, typeExtension};\n}\n\n/**\n * @param {Element|DocumentFragment} element\n * @return {string}\n */\nexport function gatherStyleText(element) {\n  /** @type {!Array<string>} */\n  const styleTextParts = [];\n  const styles = /** @type {!NodeList<!HTMLStyleElement>} */(element.querySelectorAll('style'));\n  for (let i = 0; i < styles.length; i++) {\n    const style = styles[i];\n    if (isUnscopedStyle(style)) {\n      if (!nativeShadow) {\n        processUnscopedStyle(style);\n        style.parentNode.removeChild(style);\n      }\n    } else {\n      styleTextParts.push(style.textContent);\n      style.parentNode.removeChild(style);\n    }\n  }\n  return styleTextParts.join('').trim();\n}\n\n/**\n * Split a selector separated by commas into an array in a smart way\n * @param {string} selector\n * @return {!Array<string>}\n */\nexport function splitSelectorList(selector) {\n  const parts = [];\n  let part = '';\n  for (let i = 0; i >= 0 && i < selector.length; i++) {\n    // A selector with parentheses will be one complete part\n    if (selector[i] === '(') {\n      // find the matching paren\n      const end = findMatchingParen(selector, i);\n      // push the paren block into the part\n      part += selector.slice(i, end + 1);\n      // move the index to after the paren block\n      i = end;\n    } else if (selector[i] === ',') {\n      parts.push(part);\n      part = '';\n    } else {\n      part += selector[i];\n    }\n  }\n  // catch any pieces after the last comma\n  if (part) {\n    parts.push(part);\n  }\n  return parts;\n}\n\nconst CSS_BUILD_ATTR = 'css-build';\n\n/**\n * Return the polymer-css-build \"build type\" applied to this element\n *\n * @param {!HTMLElement} element\n * @return {string} Can be \"\", \"shady\", or \"shadow\"\n */\nexport function getCssBuild(element) {\n  if (cssBuild !== undefined) {\n    return /** @type {string} */(cssBuild);\n  }\n  if (element.__cssBuild === undefined) {\n    // try attribute first, as it is the common case\n    const attrValue = element.getAttribute(CSS_BUILD_ATTR);\n    if (attrValue) {\n      element.__cssBuild = attrValue;\n    } else {\n      const buildComment = getBuildComment(element);\n      if (buildComment !== '') {\n        // remove build comment so it is not needlessly copied into every element instance\n        removeBuildComment(element);\n      }\n      element.__cssBuild = buildComment;\n    }\n  }\n  return element.__cssBuild || '';\n}\n\n/**\n * Check if the given element, either a <template> or <style>, has been processed\n * by polymer-css-build.\n *\n * If so, then we can make a number of optimizations:\n * - polymer-css-build will decompose mixins into individual CSS Custom Properties,\n * so the ApplyShim can be skipped entirely.\n * - Under native ShadowDOM, the style text can just be copied into each instance\n * without modification\n * - If the build is \"shady\" and ShadyDOM is in use, the styling does not need\n * scoping beyond the shimming of CSS Custom Properties\n *\n * @param {!HTMLElement} element\n * @return {boolean}\n */\nexport function elementHasBuiltCss(element) {\n  return getCssBuild(element) !== '';\n}\n\n/**\n * For templates made with tagged template literals, polymer-css-build will\n * insert a comment of the form `<!--css-build:shadow-->`\n *\n * @param {!HTMLElement} element\n * @return {string}\n */\nexport function getBuildComment(element) {\n  const buildComment = element.localName === 'template' ?\n      /** @type {!HTMLTemplateElement} */ (element).content.firstChild :\n      element.firstChild;\n  if (buildComment instanceof Comment) {\n    const commentParts = buildComment.textContent.trim().split(':');\n    if (commentParts[0] === CSS_BUILD_ATTR) {\n      return commentParts[1];\n    }\n  }\n  return '';\n}\n\n/**\n * Check if the css build status is optimal, and do no unneeded work.\n *\n * @param {string=} cssBuild CSS build status\n * @return {boolean} css build is optimal or not\n */\nexport function isOptimalCssBuild(cssBuild = '') {\n  // CSS custom property shim always requires work\n  if (cssBuild === '' || !nativeCssVariables) {\n    return false;\n  }\n  return nativeShadow ? cssBuild === 'shadow' : cssBuild === 'shady';\n}\n\n/**\n * @param {!HTMLElement} element\n */\nfunction removeBuildComment(element) {\n  const buildComment = element.localName === 'template' ?\n      /** @type {!HTMLTemplateElement} */ (element).content.firstChild :\n      element.firstChild;\n  buildComment.parentNode.removeChild(buildComment);\n}\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {StyleNode} from './css-parse.js'; // eslint-disable-line no-unused-vars\nimport * as StyleUtil from './style-util.js';\nimport {nativeShadow} from './style-settings.js';\n\n/* Transforms ShadowDOM styling into ShadyDOM styling\n\n* scoping:\n\n  * elements in scope get scoping selector class=\"x-foo-scope\"\n  * selectors re-written as follows:\n\n    div button -> div.x-foo-scope button.x-foo-scope\n\n* :host -> scopeName\n\n* :host(...) -> scopeName...\n\n* ::slotted(...) -> scopeName > ...\n\n* ...:dir(ltr|rtl) -> [dir=\"ltr|rtl\"] ..., ...[dir=\"ltr|rtl\"]\n\n* :host(:dir[rtl]) -> scopeName:dir(rtl) -> [dir=\"rtl\"] scopeName, scopeName[dir=\"rtl\"]\n\n*/\nconst SCOPE_NAME = 'style-scope';\n\nclass StyleTransformer {\n  get SCOPE_NAME() {\n    return SCOPE_NAME;\n  }\n  /**\n   * Given a node and scope name, add a scoping class to each node\n   * in the tree. This facilitates transforming css into scoped rules.\n   * @param {!Node} node\n   * @param {string} scope\n   * @param {boolean=} shouldRemoveScope\n   * @deprecated\n   */\n  dom(node, scope, shouldRemoveScope) {\n    const fn = (node) => {\n      this.element(node, scope || '', shouldRemoveScope);\n    };\n    this._transformDom(node, fn);\n  }\n\n  /**\n   * Given a node and scope name, add a scoping class to each node in the tree.\n   * @param {!Node} node\n   * @param {string} scope\n   */\n  domAddScope(node, scope) {\n    const fn = (node) => {\n      this.element(node, scope || '');\n    };\n    this._transformDom(node, fn);\n  }\n\n  /**\n   * @param {!Node} startNode\n   * @param {!function(!Node)} transformer\n   */\n  _transformDom(startNode, transformer) {\n    if (startNode.nodeType === Node.ELEMENT_NODE) {\n      transformer(startNode)\n    }\n    let c$;\n    if (startNode.localName === 'template') {\n      const template = /** @type {!HTMLTemplateElement} */ (startNode);\n      // In case the template is in svg context, fall back to the node\n      // since it won't be an HTMLTemplateElement with a .content property\n      c$ = (template.content || template._content || template).childNodes;\n    } else {\n      c$ = /** @type {!ParentNode} */ (startNode).children ||\n          startNode.childNodes;\n    }\n    if (c$) {\n      for (let i = 0; i < c$.length; i++) {\n        this._transformDom(c$[i], transformer);\n      }\n    }\n  }\n\n  /**\n   * @param {?} element\n   * @param {?} scope\n   * @param {?=} shouldRemoveScope\n   */\n  element(element, scope, shouldRemoveScope) {\n    // note: if using classes, we add both the general 'style-scope' class\n    // as well as the specific scope. This enables easy filtering of all\n    // `style-scope` elements\n    if (scope) {\n      // note: svg on IE does not have classList so fallback to class\n      if (element.classList) {\n        if (shouldRemoveScope) {\n          element.classList.remove(SCOPE_NAME);\n          element.classList.remove(scope);\n        } else {\n          element.classList.add(SCOPE_NAME);\n          element.classList.add(scope);\n        }\n      } else if (element.getAttribute) {\n        let c = element.getAttribute(CLASS);\n        if (shouldRemoveScope) {\n          if (c) {\n            let newValue = c.replace(SCOPE_NAME, '').replace(scope, '');\n            StyleUtil.setElementClassRaw(element, newValue);\n          }\n        } else {\n          let newValue = (c ? c + ' ' : '') + SCOPE_NAME + ' ' + scope;\n          StyleUtil.setElementClassRaw(element, newValue);\n        }\n      }\n    }\n  }\n\n  /**\n   * Given a node, replace the scoping class to each subnode in the tree.\n   * @param {!Node} node\n   * @param {string} oldScope\n   * @param {string} newScope\n   */\n  domReplaceScope(node, oldScope, newScope) {\n    const fn = (node) => {\n      this.element(node, oldScope, true);\n      this.element(node, newScope);\n    };\n    this._transformDom(node, fn);\n  }\n  /**\n   * Given a node, remove the scoping class to each subnode in the tree.\n   * @param {!Node} node\n   * @param {string} oldScope\n   */\n  domRemoveScope(node, oldScope) {\n    const fn = (node) => {\n      this.element(node, oldScope || '', true);\n    };\n    this._transformDom(node, fn);\n  }\n\n  /**\n   * @param {?} element\n   * @param {?} styleRules\n   * @param {?=} callback\n   * @param {string=} cssBuild\n   * @param {string=} cssText\n   * @return {string}\n   */\n  elementStyles(element, styleRules, callback, cssBuild = '', cssText = '') {\n    // no need to shim selectors if settings.useNativeShadow, also\n    // a shady css build will already have transformed selectors\n    // NOTE: This method may be called as part of static or property shimming.\n    // When there is a targeted build it will not be called for static shimming,\n    // but when the property shim is used it is called and should opt out of\n    // static shimming work when a proper build exists.\n    if (cssText === '') {\n      if (nativeShadow || cssBuild === 'shady') {\n        cssText = StyleUtil.toCssText(styleRules, callback);\n      } else {\n        let {is, typeExtension} = StyleUtil.getIsExtends(element);\n        cssText = this.css(styleRules, is, typeExtension, callback) + '\\n\\n';\n      }\n    }\n    return cssText.trim();\n  }\n\n  // Given a string of cssText and a scoping string (scope), returns\n  // a string of scoped css where each selector is transformed to include\n  // a class created from the scope. ShadowDOM selectors are also transformed\n  // (e.g. :host) to use the scoping selector.\n  css(rules, scope, ext, callback) {\n    let hostScope = this._calcHostScope(scope, ext);\n    scope = this._calcElementScope(scope);\n    let self = this;\n    return StyleUtil.toCssText(rules, function(/** StyleNode */rule) {\n      if (!rule.isScoped) {\n        self.rule(rule, scope, hostScope);\n        rule.isScoped = true;\n      }\n      if (callback) {\n        callback(rule, scope, hostScope);\n      }\n    });\n  }\n\n  _calcElementScope(scope) {\n    if (scope) {\n      return CSS_CLASS_PREFIX + scope;\n    } else {\n      return '';\n    }\n  }\n\n  _calcHostScope(scope, ext) {\n    return ext ? `[is=${scope}]` : scope;\n  }\n\n  rule(rule, scope, hostScope) {\n    this._transformRule(rule, this._transformComplexSelector,\n      scope, hostScope);\n  }\n\n  /**\n   * transforms a css rule to a scoped rule.\n   *\n   * @param {StyleNode} rule\n   * @param {Function} transformer\n   * @param {string=} scope\n   * @param {string=} hostScope\n   */\n  _transformRule(rule, transformer, scope, hostScope) {\n    // NOTE: save transformedSelector for subsequent matching of elements\n    // against selectors (e.g. when calculating style properties)\n    rule['selector'] = rule.transformedSelector =\n      this._transformRuleCss(rule, transformer, scope, hostScope);\n  }\n\n  /**\n   * @param {StyleNode} rule\n   * @param {Function} transformer\n   * @param {string=} scope\n   * @param {string=} hostScope\n   */\n  _transformRuleCss(rule, transformer, scope, hostScope) {\n    let p$ = StyleUtil.splitSelectorList(rule['selector']);\n    // we want to skip transformation of rules that appear in keyframes,\n    // because they are keyframe selectors, not element selectors.\n    if (!StyleUtil.isKeyframesSelector(rule)) {\n      for (let i=0, l=p$.length, p; (i<l) && (p=p$[i]); i++) {\n        p$[i] = transformer.call(this, p, scope, hostScope);\n      }\n    }\n    return p$.filter((part) => Boolean(part)).join(COMPLEX_SELECTOR_SEP);\n  }\n\n  /**\n   * @param {string} selector\n   * @return {string}\n   */\n  _twiddleNthPlus(selector) {\n    return selector.replace(NTH, (m, type, inside) => {\n      if (inside.indexOf('+') > -1) {\n        inside = inside.replace(/\\+/g, '___');\n      } else if (inside.indexOf('___') > -1) {\n        inside = inside.replace(/___/g, '+');\n      }\n      return `:${type}(${inside})`;\n    });\n  }\n\n  /**\n   * Preserve `:matches()` selectors by replacing them with MATCHES_REPLACMENT\n   * and returning an array of `:matches()` selectors.\n   * Use `_replacesMatchesPseudo` to replace the `:matches()` parts\n   *\n   * @param {string} selector\n   * @return {{selector: string, matches: !Array<string>}}\n   */\n  _preserveMatchesPseudo(selector) {\n    /** @type {!Array<string>} */\n    const matches = [];\n    let match;\n    while ((match = selector.match(MATCHES))) {\n      const start = match.index;\n      const end = StyleUtil.findMatchingParen(selector, start);\n      if (end === -1) {\n        throw new Error(`${match.input} selector missing ')'`)\n      }\n      const part = selector.slice(start, end + 1);\n      selector = selector.replace(part, MATCHES_REPLACEMENT);\n      matches.push(part);\n    }\n    return {selector, matches};\n  }\n\n  /**\n   * Replace MATCHES_REPLACMENT character with the given set of `:matches()`\n   * selectors.\n   *\n   * @param {string} selector\n   * @param {!Array<string>} matches\n   * @return {string}\n   */\n  _replaceMatchesPseudo(selector, matches) {\n    const parts = selector.split(MATCHES_REPLACEMENT);\n    return matches.reduce((acc, cur, idx) => acc + cur + parts[idx + 1], parts[0]);\n  }\n\n/**\n * @param {string} selector\n * @param {string} scope\n * @param {string=} hostScope\n */\n  _transformComplexSelector(selector, scope, hostScope) {\n    let stop = false;\n    selector = selector.trim();\n    // Remove spaces inside of selectors like `:nth-of-type` because it confuses SIMPLE_SELECTOR_SEP\n    let isNth = NTH.test(selector);\n    if (isNth) {\n      selector = selector.replace(NTH, (m, type, inner) => `:${type}(${inner.replace(/\\s/g, '')})`)\n      selector = this._twiddleNthPlus(selector);\n    }\n    // Preserve selectors like `:-webkit-any` so that SIMPLE_SELECTOR_SEP does\n    // not get confused by spaces inside the pseudo selector\n    const isMatches = MATCHES.test(selector);\n    /** @type {!Array<string>} */\n    let matches;\n    if (isMatches) {\n      ({selector, matches} = this._preserveMatchesPseudo(selector));\n    }\n    selector = selector.replace(SLOTTED_START, `${HOST} $1`);\n    selector = selector.replace(SIMPLE_SELECTOR_SEP, (m, c, s) => {\n      if (!stop) {\n        let info = this._transformCompoundSelector(s, c, scope, hostScope);\n        stop = stop || info.stop;\n        c = info.combinator;\n        s = info.value;\n      }\n      return c + s;\n    });\n    // replace `:matches()` selectors\n    if (isMatches) {\n      selector = this._replaceMatchesPseudo(selector, matches);\n    }\n    if (isNth) {\n      selector = this._twiddleNthPlus(selector);\n    }\n    return selector;\n  }\n\n  _transformCompoundSelector(selector, combinator, scope, hostScope) {\n    // replace :host with host scoping class\n    let slottedIndex = selector.indexOf(SLOTTED);\n    if (selector.indexOf(HOST) >= 0) {\n      selector = this._transformHostSelector(selector, hostScope);\n    // replace other selectors with scoping class\n    } else if (slottedIndex !== 0) {\n      selector = scope ? this._transformSimpleSelector(selector, scope) :\n        selector;\n    }\n    // mark ::slotted() scope jump to replace with descendant selector + arg\n    // also ignore left-side combinator\n    let slotted = false;\n    if (slottedIndex >= 0) {\n      combinator = '';\n      slotted = true;\n    }\n    // process scope jumping selectors up to the scope jump and then stop\n    let stop;\n    if (slotted) {\n      stop = true;\n      if (slotted) {\n        // .zonk ::slotted(.foo) -> .zonk.scope > .foo\n        selector = selector.replace(SLOTTED_PAREN, (m, paren) => ` > ${paren}`);\n      }\n    }\n    selector = selector.replace(DIR_PAREN, (m, before, dir) =>\n      `[dir=\"${dir}\"] ${before}, ${before}[dir=\"${dir}\"]`);\n    return {value: selector, combinator, stop};\n  }\n\n  _transformSimpleSelector(selector, scope) {\n    const attributes = selector.split(/(\\[.+?\\])/);\n\n    const output = [];\n    for (let i = 0; i < attributes.length; i++) {\n      // Do not attempt to transform any attribute selector content\n      if ((i % 2) === 1) {\n        output.push(attributes[i]);\n      } else {\n        const part = attributes[i];\n\n        if (!(part === '' && i === attributes.length - 1)) {\n          let p$ = part.split(PSEUDO_PREFIX);\n          p$[0] += scope;\n          output.push(p$.join(PSEUDO_PREFIX));\n        }\n      }\n    }\n\n    return output.join('');\n  }\n\n  // :host(...) -> scopeName...\n  _transformHostSelector(selector, hostScope) {\n    let m = selector.match(HOST_PAREN);\n    let paren = m && m[2].trim() || '';\n    if (paren) {\n      if (!paren[0].match(SIMPLE_SELECTOR_PREFIX)) {\n        // paren starts with a type selector\n        let typeSelector = paren.split(SIMPLE_SELECTOR_PREFIX)[0];\n        // if the type selector is our hostScope then avoid pre-pending it\n        if (typeSelector === hostScope) {\n          return paren;\n        // otherwise, this selector should not match in this scope so\n        // output a bogus selector.\n        } else {\n          return SELECTOR_NO_MATCH;\n        }\n      } else {\n        // make sure to do a replace here to catch selectors like:\n        // `:host(.foo)::before`\n        return selector.replace(HOST_PAREN, function(m, host, paren) {\n          return hostScope + paren;\n        });\n      }\n    // if no paren, do a straight :host replacement.\n    // TODO(sorvell): this should not strictly be necessary but\n    // it's needed to maintain support for `:host[foo]` type selectors\n    // which have been improperly used under Shady DOM. This should be\n    // deprecated.\n    } else {\n      return selector.replace(HOST, hostScope);\n    }\n  }\n\n  /**\n   * @param {StyleNode} rule\n   */\n  documentRule(rule) {\n    // reset selector in case this is redone.\n    rule['selector'] = rule['parsedSelector'];\n    this.normalizeRootSelector(rule);\n    this._transformRule(rule, this._transformDocumentSelector);\n  }\n\n  /**\n   * @param {StyleNode} rule\n   */\n  normalizeRootSelector(rule) {\n    if (rule['selector'] === ROOT) {\n      rule['selector'] = 'html';\n    }\n  }\n\n/**\n * @param {string} selector\n */\n  _transformDocumentSelector(selector) {\n    if (selector.match(HOST)) {\n      // remove ':host' type selectors in document rules\n      return '';\n    } else if (selector.match(SLOTTED)) {\n      return this._transformComplexSelector(selector, SCOPE_DOC_SELECTOR)\n    } else {\n      return this._transformSimpleSelector(selector.trim(), SCOPE_DOC_SELECTOR);\n    }\n  }\n}\n\nconst NTH = /:(nth[-\\w]+)\\(([^)]+)\\)/;\nconst SCOPE_DOC_SELECTOR = `:not(.${SCOPE_NAME})`;\nconst COMPLEX_SELECTOR_SEP = ',';\nconst SIMPLE_SELECTOR_SEP = /(^|[\\s>+~]+)((?:\\[.+?\\]|[^\\s>+~=[])+)/g;\nconst SIMPLE_SELECTOR_PREFIX = /[[.:#*]/;\nconst HOST = ':host';\nconst ROOT = ':root';\nconst SLOTTED = '::slotted';\nconst SLOTTED_START = new RegExp(`^(${SLOTTED})`);\n// NOTE: this supports 1 nested () pair for things like\n// :host(:not([selected]), more general support requires\n// parsing which seems like overkill\nconst HOST_PAREN = /(:host)(?:\\(((?:\\([^)(]*\\)|[^)(]*)+?)\\))/;\n// similar to HOST_PAREN\nconst SLOTTED_PAREN = /(?:::slotted)(?:\\(((?:\\([^)(]*\\)|[^)(]*)+?)\\))/;\nconst DIR_PAREN = /(.*):dir\\((?:(ltr|rtl))\\)/;\nconst CSS_CLASS_PREFIX = '.';\nconst PSEUDO_PREFIX = ':';\nconst CLASS = 'class';\nconst SELECTOR_NO_MATCH = 'should_not_match';\nconst MATCHES = /:(?:matches|any|-(?:webkit|moz)-any)/;\nconst MATCHES_REPLACEMENT = '\\u{e000}';\n\nexport default new StyleTransformer()\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {parse, StyleNode} from './css-parse.js';\nimport {nativeShadow, nativeCssVariables} from './style-settings.js';\nimport StyleTransformer from './style-transformer.js';\nimport * as StyleUtil from './style-util.js';\nimport StyleProperties from './style-properties.js';\nimport {ensureStylePlaceholder, getStylePlaceholder} from './style-placeholder.js';\nimport StyleInfo from './style-info.js';\nimport StyleCache from './style-cache.js';\nimport {flush as watcherFlush, getOwnerScope, getCurrentScope} from './document-watcher.js';\nimport templateMap from './template-map.js';\nimport * as ApplyShimUtils from './apply-shim-utils.js';\nimport {updateNativeProperties, detectMixin} from './common-utils.js';\nimport {CustomStyleInterfaceInterface} from './custom-style-interface.js'; // eslint-disable-line no-unused-vars\n\n/**\n * @const {StyleCache}\n */\nconst styleCache = new StyleCache();\n\nexport default class ScopingShim {\n  constructor() {\n    this._scopeCounter = {};\n    this._documentOwner = /** @type {!HTMLElement} */(document.documentElement);\n    let ast = new StyleNode();\n    ast['rules'] = [];\n    this._documentOwnerStyleInfo = StyleInfo.set(this._documentOwner, new StyleInfo(ast));\n    this._elementsHaveApplied = false;\n    /** @type {?Object} */\n    this._applyShim = null;\n    /** @type {?CustomStyleInterfaceInterface} */\n    this._customStyleInterface = null;\n  }\n  flush() {\n    watcherFlush();\n  }\n  _generateScopeSelector(name) {\n    let id = this._scopeCounter[name] = (this._scopeCounter[name] || 0) + 1;\n    return `${name}-${id}`;\n  }\n  getStyleAst(style) {\n    return StyleUtil.rulesForStyle(style);\n  }\n  styleAstToString(ast) {\n    return StyleUtil.toCssText(ast);\n  }\n  _gatherStyles(template) {\n    return StyleUtil.gatherStyleText(template.content);\n  }\n  /**\n   * Prepare the styling and template for the given element type\n   *\n   * @param {!HTMLTemplateElement} template\n   * @param {string} elementName\n   * @param {string=} typeExtension\n   */\n  prepareTemplate(template, elementName, typeExtension) {\n    this.prepareTemplateDom(template, elementName);\n    this.prepareTemplateStyles(template, elementName, typeExtension);\n  }\n  /**\n   * Prepare styling for the given element type\n   * @param {!HTMLTemplateElement} template\n   * @param {string} elementName\n   * @param {string=} typeExtension\n   */\n  prepareTemplateStyles(template, elementName, typeExtension) {\n    if (template._prepared) {\n      return;\n    }\n    // style placeholders are only used when ShadyDOM is active\n    if (!nativeShadow) {\n      ensureStylePlaceholder(elementName);\n    }\n    template._prepared = true;\n    template.name = elementName;\n    template.extends = typeExtension;\n    templateMap[elementName] = template;\n    let cssBuild = StyleUtil.getCssBuild(template);\n    const optimalBuild = StyleUtil.isOptimalCssBuild(cssBuild);\n    let info = {\n      is: elementName,\n      extends: typeExtension,\n    };\n    let cssText = this._gatherStyles(template);\n    // check if the styling has mixin definitions or uses\n    this._ensure();\n    if (!optimalBuild) {\n      let hasMixins = !cssBuild && detectMixin(cssText);\n      let ast = parse(cssText);\n      // only run the applyshim transforms if there is a mixin involved\n      if (hasMixins && nativeCssVariables && this._applyShim) {\n        this._applyShim['transformRules'](ast, elementName);\n      }\n      template['_styleAst'] = ast;\n    }\n    let ownPropertyNames = [];\n    if (!nativeCssVariables) {\n      ownPropertyNames = StyleProperties.decorateStyles(template['_styleAst']);\n    }\n    if (!ownPropertyNames.length || nativeCssVariables) {\n      let root = nativeShadow ? template.content : null;\n      let placeholder = getStylePlaceholder(elementName);\n      let style = this._generateStaticStyle(info, template['_styleAst'], root, placeholder, cssBuild, optimalBuild ? cssText : '');\n      template._style = style;\n    }\n    template._ownPropertyNames = ownPropertyNames;\n  }\n  /**\n   * Prepare template for the given element type\n   * @param {!HTMLTemplateElement} template\n   * @param {string} elementName\n   */\n  prepareTemplateDom(template, elementName) {\n    const cssBuild = StyleUtil.getCssBuild(template);\n    if (!nativeShadow && cssBuild !== 'shady' && !template._domPrepared) {\n      template._domPrepared = true;\n      StyleTransformer.domAddScope(template.content, elementName);\n    }\n  }\n  /**\n   * @param {!{is: string, extends: (string|undefined)}} info\n   * @param {!StyleNode} rules\n   * @param {DocumentFragment} shadowroot\n   * @param {Node} placeholder\n   * @param {string} cssBuild\n   * @param {string=} cssText\n   * @return {?HTMLStyleElement}\n   */\n  _generateStaticStyle(info, rules, shadowroot, placeholder, cssBuild, cssText) {\n    cssText = StyleTransformer.elementStyles(info, rules, null, cssBuild, cssText);\n    if (cssText.length) {\n      return StyleUtil.applyCss(cssText, info.is, shadowroot, placeholder);\n    }\n    return null;\n  }\n  _prepareHost(host) {\n    const {is, typeExtension} = StyleUtil.getIsExtends(host);\n    const placeholder = getStylePlaceholder(is);\n    const template = templateMap[is];\n    if (!template) {\n      return;\n    }\n    const ast = template['_styleAst'];\n    const ownStylePropertyNames = template._ownPropertyNames;\n    const cssBuild = StyleUtil.getCssBuild(template);\n    const styleInfo = new StyleInfo(\n      ast,\n      placeholder,\n      ownStylePropertyNames,\n      is,\n      typeExtension,\n      cssBuild\n    );\n    StyleInfo.set(host, styleInfo);\n    return styleInfo;\n  }\n  _ensureApplyShim() {\n    if (this._applyShim) {\n      return;\n    } else if (window.ShadyCSS && window.ShadyCSS.ApplyShim) {\n      this._applyShim = /** @type {!Object} */ (window.ShadyCSS.ApplyShim);\n      this._applyShim['invalidCallback'] = ApplyShimUtils.invalidate;\n    }\n  }\n  _ensureCustomStyleInterface() {\n    if (this._customStyleInterface) {\n      return;\n    } else if (window.ShadyCSS && window.ShadyCSS.CustomStyleInterface) {\n      this._customStyleInterface = /** @type {!CustomStyleInterfaceInterface} */(window.ShadyCSS.CustomStyleInterface);\n      /** @type {function(!HTMLStyleElement)} */\n      this._customStyleInterface['transformCallback'] = (style) => {this.transformCustomStyleForDocument(style)};\n      this._customStyleInterface['validateCallback'] = () => {\n        requestAnimationFrame(() => {\n          if (this._customStyleInterface['enqueued'] || this._elementsHaveApplied) {\n            this.flushCustomStyles();\n          }\n        })\n      };\n    }\n  }\n  _ensure() {\n    this._ensureApplyShim();\n    this._ensureCustomStyleInterface();\n  }\n  /**\n   * Flush and apply custom styles to document\n   */\n  flushCustomStyles() {\n    this._ensure();\n    if (!this._customStyleInterface) {\n      return;\n    }\n    let customStyles = this._customStyleInterface['processStyles']();\n    // early return if custom-styles don't need validation\n    if (!this._customStyleInterface['enqueued']) {\n      return;\n    }\n    // bail if custom styles are built optimally\n    if (StyleUtil.isOptimalCssBuild(this._documentOwnerStyleInfo.cssBuild)) {\n      return;\n    }\n    if (!nativeCssVariables) {\n      this._updateProperties(this._documentOwner, this._documentOwnerStyleInfo);\n      this._applyCustomStyles(customStyles);\n      if (this._elementsHaveApplied) {\n        // if custom elements have upgraded and there are no native css variables, we must recalculate the whole tree\n        this.styleDocument();\n      }\n    } else if (!this._documentOwnerStyleInfo.cssBuild) {\n      this._revalidateCustomStyleApplyShim(customStyles);\n    }\n    this._customStyleInterface['enqueued'] = false;\n  }\n  /**\n   * Apply styles for the given element\n   *\n   * @param {!HTMLElement} host\n   * @param {Object=} overrideProps\n   */\n  styleElement(host, overrideProps) {\n    const styleInfo = StyleInfo.get(host) || this._prepareHost(host);\n    // if there is no style info at this point, bail\n    if (!styleInfo) {\n      return;\n    }\n    // Only trip the `elementsHaveApplied` flag if a node other that the root document has `applyStyle` called\n    if (!this._isRootOwner(host)) {\n      this._elementsHaveApplied = true;\n    }\n    if (overrideProps) {\n      styleInfo.overrideStyleProperties =\n        styleInfo.overrideStyleProperties || {};\n      Object.assign(styleInfo.overrideStyleProperties, overrideProps);\n    }\n    if (!nativeCssVariables) {\n      this.styleElementShimVariables(host, styleInfo);\n    } else {\n      this.styleElementNativeVariables(host, styleInfo);\n    }\n  }\n  /**\n   * @param {!HTMLElement} host\n   * @param {!StyleInfo} styleInfo\n   */\n  styleElementShimVariables(host, styleInfo) {\n    this.flush();\n    this._updateProperties(host, styleInfo);\n    if (styleInfo.ownStylePropertyNames && styleInfo.ownStylePropertyNames.length) {\n      this._applyStyleProperties(host, styleInfo);\n    }\n  }\n  /**\n   * @param {!HTMLElement} host\n   * @param {!StyleInfo} styleInfo\n   */\n  styleElementNativeVariables(host, styleInfo) {\n    const { is } = StyleUtil.getIsExtends(host);\n    if (styleInfo.overrideStyleProperties) {\n      updateNativeProperties(host, styleInfo.overrideStyleProperties);\n    }\n    const template = templateMap[is];\n    // bail early if there is no shadowroot for this element\n    if (!template && !this._isRootOwner(host)) {\n      return;\n    }\n    // bail early if the template was built with polymer-css-build\n    if (template && StyleUtil.elementHasBuiltCss(template)) {\n      return;\n    }\n    if (template && template._style && !ApplyShimUtils.templateIsValid(template)) {\n      // update template\n      if (!ApplyShimUtils.templateIsValidating(template)) {\n        this._ensure();\n        this._applyShim && this._applyShim['transformRules'](template['_styleAst'], is);\n        template._style.textContent = StyleTransformer.elementStyles(host, styleInfo.styleRules);\n        ApplyShimUtils.startValidatingTemplate(template);\n      }\n      // update instance if native shadowdom\n      if (nativeShadow) {\n        let root = host.shadowRoot;\n        if (root) {\n          let style = root.querySelector('style');\n          if (style) {\n            style.textContent = StyleTransformer.elementStyles(host, styleInfo.styleRules);\n          }\n        }\n      }\n      styleInfo.styleRules = template['_styleAst'];\n    }\n  }\n  _styleOwnerForNode(node) {\n    let root = StyleUtil.wrap(node).getRootNode();\n    let host = root.host;\n    if (host) {\n      if (StyleInfo.get(host) || this._prepareHost(host)) {\n        return host;\n      } else {\n        return this._styleOwnerForNode(host);\n      }\n    }\n    return this._documentOwner;\n  }\n  _isRootOwner(node) {\n    return (node === this._documentOwner);\n  }\n  _applyStyleProperties(host, styleInfo) {\n    let is = StyleUtil.getIsExtends(host).is;\n    let cacheEntry = styleCache.fetch(is, styleInfo.styleProperties, styleInfo.ownStylePropertyNames);\n    let cachedScopeSelector = cacheEntry && cacheEntry.scopeSelector;\n    let cachedStyle = cacheEntry ? cacheEntry.styleElement : null;\n    let oldScopeSelector = styleInfo.scopeSelector;\n    // only generate new scope if cached style is not found\n    styleInfo.scopeSelector = cachedScopeSelector || this._generateScopeSelector(is);\n    let style = StyleProperties.applyElementStyle(host, styleInfo.styleProperties, styleInfo.scopeSelector, cachedStyle);\n    if (!nativeShadow) {\n      StyleProperties.applyElementScopeSelector(host, styleInfo.scopeSelector, oldScopeSelector);\n    }\n    if (!cacheEntry) {\n      styleCache.store(is, styleInfo.styleProperties, style, styleInfo.scopeSelector);\n    }\n    return style;\n  }\n  _updateProperties(host, styleInfo) {\n    let owner = this._styleOwnerForNode(host);\n    let ownerStyleInfo = StyleInfo.get(owner);\n    let ownerProperties = ownerStyleInfo.styleProperties;\n    // style owner has not updated properties yet\n    // go up the chain and force property update,\n    // except if the owner is the document\n    if (owner !== this._documentOwner && !ownerProperties) {\n      this._updateProperties(owner, ownerStyleInfo);\n      ownerProperties = ownerStyleInfo.styleProperties;\n    }\n    let props = Object.create(ownerProperties || null);\n    let hostAndRootProps = StyleProperties.hostAndRootPropertiesForScope(host, styleInfo.styleRules, styleInfo.cssBuild);\n    let propertyData = StyleProperties.propertyDataFromStyles(ownerStyleInfo.styleRules, host);\n    let propertiesMatchingHost = propertyData.properties\n    Object.assign(\n      props,\n      hostAndRootProps.hostProps,\n      propertiesMatchingHost,\n      hostAndRootProps.rootProps\n    );\n    this._mixinOverrideStyles(props, styleInfo.overrideStyleProperties);\n    StyleProperties.reify(props);\n    styleInfo.styleProperties = props;\n  }\n  _mixinOverrideStyles(props, overrides) {\n    for (let p in overrides) {\n      let v = overrides[p];\n      // skip override props if they are not truthy or 0\n      // in order to fall back to inherited values\n      if (v || v === 0) {\n        props[p] = v;\n      }\n    }\n  }\n  /**\n   * Update styles of the whole document\n   *\n   * @param {Object=} properties\n   */\n  styleDocument(properties) {\n    this.styleSubtree(this._documentOwner, properties);\n  }\n  /**\n   * Update styles of a subtree\n   *\n   * @param {!HTMLElement} host\n   * @param {Object=} properties\n   */\n  styleSubtree(host, properties) {\n    let root = host.shadowRoot;\n    if (root || this._isRootOwner(host)) {\n      this.styleElement(host, properties);\n    }\n    // process the shadowdom children of `host`\n    let shadowChildren =\n        root && (/** @type {!ParentNode} */ (root).children || root.childNodes);\n    if (shadowChildren) {\n      for (let i = 0; i < shadowChildren.length; i++) {\n        let c = /** @type {!HTMLElement} */(shadowChildren[i]);\n        this.styleSubtree(c);\n      }\n    } else {\n      // process the lightdom children of `host`\n      let children = host.children || host.childNodes;\n      if (children) {\n        for (let i = 0; i < children.length; i++) {\n          let c = /** @type {!HTMLElement} */(children[i]);\n          this.styleSubtree(c);\n        }\n      }\n    }\n  }\n  /* Custom Style operations */\n  _revalidateCustomStyleApplyShim(customStyles) {\n    for (let i = 0; i < customStyles.length; i++) {\n      let c = customStyles[i];\n      let s = this._customStyleInterface['getStyleForCustomStyle'](c);\n      if (s) {\n        this._revalidateApplyShim(s);\n      }\n    }\n  }\n  _applyCustomStyles(customStyles) {\n    for (let i = 0; i < customStyles.length; i++) {\n      let c = customStyles[i];\n      let s = this._customStyleInterface['getStyleForCustomStyle'](c);\n      if (s) {\n        StyleProperties.applyCustomStyle(s, this._documentOwnerStyleInfo.styleProperties);\n      }\n    }\n  }\n  transformCustomStyleForDocument(style) {\n    const cssBuild = StyleUtil.getCssBuild(style);\n    if (cssBuild !== this._documentOwnerStyleInfo.cssBuild) {\n      this._documentOwnerStyleInfo.cssBuild = cssBuild;\n    }\n    if (StyleUtil.isOptimalCssBuild(cssBuild)) {\n      return;\n    }\n    let ast = StyleUtil.rulesForStyle(style);\n    StyleUtil.forEachRule(ast, (rule) => {\n      if (nativeShadow) {\n        StyleTransformer.normalizeRootSelector(rule);\n      } else {\n        StyleTransformer.documentRule(rule);\n      }\n      if (nativeCssVariables && cssBuild === '') {\n        this._ensure();\n        this._applyShim && this._applyShim['transformRule'](rule);\n      }\n    });\n    if (nativeCssVariables) {\n      style.textContent = StyleUtil.toCssText(ast);\n    } else {\n      this._documentOwnerStyleInfo.styleRules['rules'].push(ast);\n    }\n  }\n  _revalidateApplyShim(style) {\n    if (nativeCssVariables && this._applyShim) {\n      let ast = StyleUtil.rulesForStyle(style);\n      this._ensure();\n      this._applyShim['transformRules'](ast);\n      style.textContent = StyleUtil.toCssText(ast);\n    }\n  }\n  getComputedStyleValue(element, property) {\n    let value;\n    if (!nativeCssVariables) {\n      // element is either a style host, or an ancestor of a style host\n      let styleInfo = StyleInfo.get(element) || StyleInfo.get(this._styleOwnerForNode(element));\n      value = styleInfo.styleProperties[property];\n    }\n    // fall back to the property value from the computed styling\n    value = value || window.getComputedStyle(element).getPropertyValue(property);\n    // trim whitespace that can come after the `:` in css\n    // example: padding: 2px -> \" 2px\"\n    return value ? value.trim() : '';\n  }\n  // given an element and a classString, replaces\n  // the element's class with the provided classString and adds\n  // any necessary ShadyCSS static and property based scoping selectors\n  setElementClass(element, classString) {\n    let root = StyleUtil.wrap(element).getRootNode();\n    let classes = classString ? classString.split(/\\s/) : [];\n    let scopeName = root.host && root.host.localName;\n    // If no scope, try to discover scope name from existing class.\n    // This can occur if, for example, a template stamped element that\n    // has been scoped is manipulated when not in a root.\n    if (!scopeName) {\n      var classAttr = element.getAttribute('class');\n      if (classAttr) {\n        let k$ = classAttr.split(/\\s/);\n        for (let i=0; i < k$.length; i++) {\n          if (k$[i] === StyleTransformer.SCOPE_NAME) {\n            scopeName = k$[i+1];\n            break;\n          }\n        }\n      }\n    }\n    if (scopeName) {\n      classes.push(StyleTransformer.SCOPE_NAME, scopeName);\n    }\n    if (!nativeCssVariables) {\n      let styleInfo = StyleInfo.get(element);\n      if (styleInfo && styleInfo.scopeSelector) {\n        classes.push(StyleProperties.XSCOPE_NAME, styleInfo.scopeSelector);\n      }\n    }\n    StyleUtil.setElementClassRaw(element, classes.join(' '));\n  }\n  _styleInfoForNode(node) {\n    return StyleInfo.get(node);\n  }\n  /**\n   * @param {!Element} node\n   * @param {string} scope\n   */\n  scopeNode(node, scope) {\n    StyleTransformer.element(node, scope);\n  }\n  /**\n   * @param {!Element} node\n   * @param {string} scope\n   */\n  unscopeNode(node, scope) {\n    StyleTransformer.element(node, scope, true);\n  }\n  /**\n   * @param {!Node} node\n   * @return {string}\n   */\n  scopeForNode(node) {\n    return getOwnerScope(node);\n  }\n  /**\n   * @param {!Element} node\n   * @return {string}\n   */\n  currentScopeForNode(node) {\n    return getCurrentScope(node);\n  }\n}\n\n/* exports */\n/* eslint-disable no-self-assign */\nScopingShim.prototype['flush'] = ScopingShim.prototype.flush;\nScopingShim.prototype['prepareTemplate'] = ScopingShim.prototype.prepareTemplate;\nScopingShim.prototype['styleElement'] = ScopingShim.prototype.styleElement;\nScopingShim.prototype['styleDocument'] = ScopingShim.prototype.styleDocument;\nScopingShim.prototype['styleSubtree'] = ScopingShim.prototype.styleSubtree;\nScopingShim.prototype['getComputedStyleValue'] = ScopingShim.prototype.getComputedStyleValue;\nScopingShim.prototype['setElementClass'] = ScopingShim.prototype.setElementClass;\nScopingShim.prototype['_styleInfoForNode'] = ScopingShim.prototype._styleInfoForNode;\nScopingShim.prototype['transformCustomStyleForDocument'] = ScopingShim.prototype.transformCustomStyleForDocument;\nScopingShim.prototype['getStyleAst'] = ScopingShim.prototype.getStyleAst;\nScopingShim.prototype['styleAstToString'] = ScopingShim.prototype.styleAstToString;\nScopingShim.prototype['flushCustomStyles'] = ScopingShim.prototype.flushCustomStyles;\nScopingShim.prototype['scopeNode'] = ScopingShim.prototype.scopeNode;\nScopingShim.prototype['unscopeNode'] = ScopingShim.prototype.unscopeNode;\nScopingShim.prototype['scopeForNode'] = ScopingShim.prototype.scopeForNode;\nScopingShim.prototype['currentScopeForNode'] = ScopingShim.prototype.currentScopeForNode;\n/* eslint-enable no-self-assign */\nObject.defineProperties(ScopingShim.prototype, {\n  'nativeShadow': {\n    get() {\n      return nativeShadow;\n    }\n  },\n  'nativeCss': {\n    get() {\n      return nativeCssVariables;\n    }\n  }\n});\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {nativeShadow} from './style-settings.js';\nimport StyleTransformer from './style-transformer.js';\nimport {getIsExtends, elementHasBuiltCss, wrap} from './style-util.js';\n\nexport let flush = function() {};\n\n/**\n * @param {!Element} element\n * @return {string}\n */\nfunction getClasses(element) {\n  if (element.classList && element.classList.value) {\n    return element.classList.value;\n  } else {\n    // NOTE: className is patched to remove scoping classes in ShadyDOM\n    // use getAttribute('class') instead, which is unpatched\n    return element.getAttribute('class') || '';\n  }\n}\n\nconst scopeRegExp = new RegExp(`${StyleTransformer.SCOPE_NAME}\\\\s*([^\\\\s]*)`);\n\n/**\n * @param {!Element} element\n * @return {string}\n */\nexport function getCurrentScope(element) {\n  const match = getClasses(element).match(scopeRegExp);\n  if (match) {\n    return match[1];\n  } else {\n    return '';\n  }\n}\n\n/**\n * @param {!Node} node\n */\nexport function getOwnerScope(node) {\n  const ownerRoot = wrap(node).getRootNode();\n  if (ownerRoot === node || ownerRoot === node.ownerDocument) {\n    return '';\n  }\n  const host = /** @type {!ShadowRoot} */(ownerRoot).host;\n  if (!host) {\n    // this may actually be a document fragment\n    return '';\n  }\n  return getIsExtends(host).is;\n}\n\n/**\n * @param {!Element} element\n */\nexport function ensureCorrectScope(element) {\n  const currentScope = getCurrentScope(element);\n  const ownerRoot = wrap(element).getRootNode();\n  if (ownerRoot === element) {\n    return;\n  }\n  if (currentScope && ownerRoot === element.ownerDocument) {\n    // node was scoped, but now is in document\n    StyleTransformer.domRemoveScope(element, currentScope);\n  } else if (ownerRoot instanceof ShadowRoot) {\n    const ownerScope = getOwnerScope(element);\n    if (ownerScope !== currentScope) {\n      // node was scoped, but not by its current owner\n      StyleTransformer.domReplaceScope(element, currentScope, ownerScope);\n    }\n  }\n}\n\n/**\n * @param {!HTMLElement|!HTMLDocument} element\n */\nexport function ensureCorrectSubtreeScoping(element) {\n  // find unscoped subtree nodes\n  const unscopedNodes = window['ShadyDOM']['nativeMethods']['querySelectorAll'].call(\n    element, `:not(.${StyleTransformer.SCOPE_NAME})`);\n\n  for (let j = 0; j < unscopedNodes.length; j++) {\n    // it's possible, during large batch inserts, that nodes that aren't\n    // scoped within the current scope were added.\n    // To make sure that any unscoped nodes that were inserted in the current batch are correctly styled,\n    // query all unscoped nodes and force their style-scope to be applied.\n    // This could happen if a sub-element appended an unscoped node in its shadowroot and this function\n    // runs on a parent element of the host of that unscoped node:\n    // parent-element -> element -> unscoped node\n    // Here unscoped node should have the style-scope element, not parent-element.\n    const unscopedNode = unscopedNodes[j];\n    const scopeForPreviouslyUnscopedNode = getOwnerScope(unscopedNode);\n    if (scopeForPreviouslyUnscopedNode) {\n      StyleTransformer.element(unscopedNode, scopeForPreviouslyUnscopedNode);\n    }\n  }\n}\n\n/**\n * @param {HTMLElement} el\n * @return {boolean}\n */\nfunction isElementWithBuiltCss(el) {\n  if (el.localName === 'style' || el.localName === 'template') {\n    return elementHasBuiltCss(el);\n  }\n  return false;\n}\n\n/**\n * @param {Array<MutationRecord|null>|null} mxns\n */\nfunction handler(mxns) {\n  for (let x=0; x < mxns.length; x++) {\n    let mxn = mxns[x];\n    if (mxn.target === document.documentElement ||\n      mxn.target === document.head) {\n      continue;\n    }\n    for (let i=0; i < mxn.addedNodes.length; i++) {\n      let n = mxn.addedNodes[i];\n      if (n.nodeType !== Node.ELEMENT_NODE) {\n        continue;\n      }\n      n = /** @type {HTMLElement} */(n); // eslint-disable-line no-self-assign\n      let root = n.getRootNode();\n      let currentScope = getCurrentScope(n);\n      // node was scoped, but now is in document\n      // If this element has built css, we must not remove scoping as this node\n      // will be used as a template or style without re - applying scoping as an optimization\n      if (currentScope && root === n.ownerDocument && !isElementWithBuiltCss(n)) {\n        StyleTransformer.domRemoveScope(n, currentScope);\n      } else if (root instanceof ShadowRoot) {\n        const newScope = getOwnerScope(n);\n        // rescope current node and subtree if necessary\n        if (newScope !== currentScope) {\n          StyleTransformer.domReplaceScope(n, currentScope, newScope);\n        }\n        // make sure all the subtree elements are scoped correctly\n        ensureCorrectSubtreeScoping(n);\n      }\n    }\n  }\n}\n\n// if native Shadow DOM is being used, or ShadyDOM handles dynamic scoiping, do not activate the MutationObserver\nif (!nativeShadow && !(window['ShadyDOM'] && window['ShadyDOM']['handlesDynamicScoping'])) {\n  let observer = new MutationObserver(handler);\n  let start = (node) => {\n    observer.observe(node, {childList: true, subtree: true});\n  }\n  let nativeCustomElements = (window['customElements'] &&\n    !window['customElements']['polyfillWrapFlushCallback']);\n  // need to start immediately with native custom elements\n  // TODO(dfreedm): with polyfilled HTMLImports and native custom elements\n  // excessive mutations may be observed; this can be optimized via cooperation\n  // with the HTMLImports polyfill.\n  if (nativeCustomElements) {\n    start(document);\n  } else {\n    let delayedStart = () => {\n      start(document.body);\n    }\n    // use polyfill timing if it's available\n    if (window['HTMLImports']) {\n      window['HTMLImports']['whenReady'](delayedStart);\n    // otherwise push beyond native imports being ready\n    // which requires RAF + readystate interactive.\n    } else {\n      requestAnimationFrame(function() {\n        if (document.readyState === 'loading') {\n          let listener = function() {\n            delayedStart();\n            document.removeEventListener('readystatechange', listener);\n          }\n          document.addEventListener('readystatechange', listener);\n        } else {\n          delayedStart();\n        }\n      });\n    }\n  }\n\n  flush = function() {\n    handler(observer.takeRecords());\n  }\n}\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {removeCustomPropAssignment, StyleNode} from './css-parse.js'; // eslint-disable-line no-unused-vars\nimport {nativeShadow} from './style-settings.js';\nimport StyleTransformer from './style-transformer.js';\nimport * as StyleUtil from './style-util.js';\nimport * as RX from './common-regex.js';\nimport StyleInfo from './style-info.js';\n\n// TODO: dedupe with shady\n/**\n * @param {string} selector\n * @return {boolean}\n * @this {Element}\n */\nconst matchesSelector = function(selector) {\n  const method = this.matches || this.matchesSelector ||\n    this.mozMatchesSelector || this.msMatchesSelector ||\n    this.oMatchesSelector || this.webkitMatchesSelector;\n  return method && method.call(this, selector);\n};\n\nconst IS_IE = navigator.userAgent.match('Trident');\n\nconst XSCOPE_NAME = 'x-scope';\n\nclass StyleProperties {\n  get XSCOPE_NAME() {\n    return XSCOPE_NAME;\n  }\n/**\n * decorates styles with rule info and returns an array of used style property names\n *\n * @param {StyleNode} rules\n * @return {Array<string>}\n */\n  decorateStyles(rules) {\n    let self = this, props = {}, keyframes = [], ruleIndex = 0;\n    StyleUtil.forEachRule(rules, function(rule) {\n      self.decorateRule(rule);\n      // mark in-order position of ast rule in styles block, used for cache key\n      rule.index = ruleIndex++;\n      self.collectPropertiesInCssText(rule.propertyInfo.cssText, props);\n    }, function onKeyframesRule(rule) {\n      keyframes.push(rule);\n    });\n    // Cache all found keyframes rules for later reference:\n    rules._keyframes = keyframes;\n    // return this list of property names *consumes* in these styles.\n    let names = [];\n    for (let i in props) {\n      names.push(i);\n    }\n    return names;\n  }\n\n  // decorate a single rule with property info\n  decorateRule(rule) {\n    if (rule.propertyInfo) {\n      return rule.propertyInfo;\n    }\n    let info = {}, properties = {};\n    let hasProperties = this.collectProperties(rule, properties);\n    if (hasProperties) {\n      info.properties = properties;\n      // TODO(sorvell): workaround parser seeing mixins as additional rules\n      rule['rules'] = null;\n    }\n    info.cssText = this.collectCssText(rule);\n    rule.propertyInfo = info;\n    return info;\n  }\n\n  // collects the custom properties from a rule's cssText\n  collectProperties(rule, properties) {\n    let info = rule.propertyInfo;\n    if (info) {\n      if (info.properties) {\n        Object.assign(properties, info.properties);\n        return true;\n      }\n    } else {\n      let m, rx = RX.VAR_ASSIGN;\n      let cssText = rule['parsedCssText'];\n      let value;\n      let any;\n      while ((m = rx.exec(cssText))) {\n        // note: group 2 is var, 3 is mixin\n        value = (m[2] || m[3]).trim();\n        // value of 'inherit' or 'unset' is equivalent to not setting the property here\n        if (value !== 'inherit' || value !== 'unset') {\n          properties[m[1].trim()] = value;\n        }\n        any = true;\n      }\n      return any;\n    }\n\n  }\n\n  // returns cssText of properties that consume variables/mixins\n  collectCssText(rule) {\n    return this.collectConsumingCssText(rule['parsedCssText']);\n  }\n\n  // NOTE: we support consumption inside mixin assignment\n  // but not production, so strip out {...}\n  collectConsumingCssText(cssText) {\n    return cssText.replace(RX.BRACKETED, '')\n      .replace(RX.VAR_ASSIGN, '');\n  }\n\n  collectPropertiesInCssText(cssText, props) {\n    let m;\n    while ((m = RX.VAR_CONSUMED.exec(cssText))) {\n      let name = m[1];\n      // This regex catches all variable names, and following non-whitespace char\n      // If next char is not ':', then variable is a consumer\n      if (m[2] !== ':') {\n        props[name] = true;\n      }\n    }\n  }\n\n  // turns custom properties into realized values.\n  reify(props) {\n    // big perf optimization here: reify only *own* properties\n    // since this object has __proto__ of the element's scope properties\n    let names = Object.getOwnPropertyNames(props);\n    for (let i=0, n; i < names.length; i++) {\n      n = names[i];\n      props[n] = this.valueForProperty(props[n], props);\n    }\n  }\n\n  // given a property value, returns the reified value\n  // a property value may be:\n  // (1) a literal value like: red or 5px;\n  // (2) a variable value like: var(--a), var(--a, red), or var(--a, --b) or\n  // var(--a, var(--b));\n  // (3) a literal mixin value like { properties }. Each of these properties\n  // can have values that are: (a) literal, (b) variables, (c) @apply mixins.\n  valueForProperty(property, props) {\n    // case (1) default\n    // case (3) defines a mixin and we have to reify the internals\n    if (property) {\n      if (property.indexOf(';') >=0) {\n        property = this.valueForProperties(property, props);\n      } else {\n        // case (2) variable\n        let self = this;\n        let fn = function(prefix, value, fallback, suffix) {\n          if (!value) {\n            return prefix + suffix;\n          }\n          let propertyValue = self.valueForProperty(props[value], props);\n          // if value is \"initial\", then the variable should be treated as unset\n          if (!propertyValue || propertyValue === 'initial') {\n            // fallback may be --a or var(--a) or literal\n            propertyValue = self.valueForProperty(props[fallback] || fallback, props) ||\n            fallback;\n          } else if (propertyValue === 'apply-shim-inherit') {\n            // CSS build will replace `inherit` with `apply-shim-inherit`\n            // for use with native css variables.\n            // Since we have full control, we can use `inherit` directly.\n            propertyValue = 'inherit';\n          }\n          return prefix + (propertyValue || '') + suffix;\n        };\n        property = StyleUtil.processVariableAndFallback(property, fn);\n      }\n    }\n    return property && property.trim() || '';\n  }\n\n  // note: we do not yet support mixin within mixin\n  valueForProperties(property, props) {\n    let parts = property.split(';');\n    for (let i=0, p, m; i<parts.length; i++) {\n      if ((p = parts[i])) {\n        RX.MIXIN_MATCH.lastIndex = 0;\n        m = RX.MIXIN_MATCH.exec(p);\n        if (m) {\n          p = this.valueForProperty(props[m[1]], props);\n        } else {\n          let colon = p.indexOf(':');\n          if (colon !== -1) {\n            let pp = p.substring(colon);\n            pp = pp.trim();\n            pp = this.valueForProperty(pp, props) || pp;\n            p = p.substring(0, colon) + pp;\n          }\n        }\n        parts[i] = (p && p.lastIndexOf(';') === p.length - 1) ?\n          // strip trailing ;\n          p.slice(0, -1) :\n          p || '';\n      }\n    }\n    return parts.join(';');\n  }\n\n  applyProperties(rule, props) {\n    let output = '';\n    // dynamically added sheets may not be decorated so ensure they are.\n    if (!rule.propertyInfo) {\n      this.decorateRule(rule);\n    }\n    if (rule.propertyInfo.cssText) {\n      output = this.valueForProperties(rule.propertyInfo.cssText, props);\n    }\n    rule['cssText'] = output;\n  }\n\n  // Apply keyframe transformations to the cssText of a given rule. The\n  // keyframeTransforms object is a map of keyframe names to transformer\n  // functions which take in cssText and spit out transformed cssText.\n  applyKeyframeTransforms(rule, keyframeTransforms) {\n    let input = rule['cssText'];\n    let output = rule['cssText'];\n    if (rule.hasAnimations == null) {\n      // Cache whether or not the rule has any animations to begin with:\n      rule.hasAnimations = RX.ANIMATION_MATCH.test(input);\n    }\n    // If there are no animations referenced, we can skip transforms:\n    if (rule.hasAnimations) {\n      let transform;\n      // If we haven't transformed this rule before, we iterate over all\n      // transforms:\n      if (rule.keyframeNamesToTransform == null) {\n        rule.keyframeNamesToTransform = [];\n        for (let keyframe in keyframeTransforms) {\n          transform = keyframeTransforms[keyframe];\n          output = transform(input);\n          // If the transform actually changed the CSS text, we cache the\n          // transform name for future use:\n          if (input !== output) {\n            input = output;\n            rule.keyframeNamesToTransform.push(keyframe);\n          }\n        }\n      } else {\n        // If we already have a list of keyframe names that apply to this\n        // rule, we apply only those keyframe name transforms:\n        for (let i = 0; i < rule.keyframeNamesToTransform.length; ++i) {\n          transform = keyframeTransforms[rule.keyframeNamesToTransform[i]];\n          input = transform(input);\n        }\n        output = input;\n      }\n    }\n    rule['cssText'] = output;\n  }\n\n  // Test if the rules in these styles matches the given `element` and if so,\n  // collect any custom properties into `props`.\n  /**\n   * @param {StyleNode} rules\n   * @param {Element} element\n   */\n  propertyDataFromStyles(rules, element) {\n    let props = {};\n    // generates a unique key for these matches\n    let o = [];\n    // note: active rules excludes non-matching @media rules\n    StyleUtil.forEachRule(rules, (rule) => {\n      // TODO(sorvell): we could trim the set of rules at declaration\n      // time to only include ones that have properties\n      if (!rule.propertyInfo) {\n        this.decorateRule(rule);\n      }\n      // match element against transformedSelector: selector may contain\n      // unwanted uniquification and parsedSelector does not directly match\n      // for :host selectors.\n      let selectorToMatch = rule.transformedSelector || rule['parsedSelector'];\n      if (element && rule.propertyInfo.properties && selectorToMatch) {\n        if (matchesSelector.call(element, selectorToMatch)) {\n          this.collectProperties(rule, props);\n          // produce numeric key for these matches for lookup\n          addToBitMask(rule.index, o);\n        }\n      }\n    }, null, true);\n    return {properties: props, key: o};\n  }\n\n  /**\n   * @param {Element} scope\n   * @param {StyleNode} rule\n   * @param {string} cssBuild\n   * @param {function(Object)} callback\n   */\n  whenHostOrRootRule(scope, rule, cssBuild, callback) {\n    if (!rule.propertyInfo) {\n      this.decorateRule(rule);\n    }\n    if (!rule.propertyInfo.properties) {\n      return;\n    }\n    let {is, typeExtension} = StyleUtil.getIsExtends(scope);\n    let hostScope = is ?\n      StyleTransformer._calcHostScope(is, typeExtension) :\n      'html';\n    let parsedSelector = rule['parsedSelector'];\n    let isRoot = (parsedSelector === ':host > *' || parsedSelector === 'html');\n    let isHost = parsedSelector.indexOf(':host') === 0 && !isRoot;\n    // build info is either in scope (when scope is an element) or in the style\n    // when scope is the default scope; note: this allows default scope to have\n    // mixed mode built and unbuilt styles.\n    if (cssBuild === 'shady') {\n      // :root -> x-foo > *.x-foo for elements and html for custom-style\n      isRoot = parsedSelector === (hostScope + ' > *.' + hostScope) || parsedSelector.indexOf('html') !== -1;\n      // :host -> x-foo for elements, but sub-rules have .x-foo in them\n      isHost = !isRoot && parsedSelector.indexOf(hostScope) === 0;\n    }\n    if (!isRoot && !isHost) {\n      return;\n    }\n    let selectorToMatch = hostScope;\n    if (isHost) {\n      // need to transform :host because `:host` does not work with `matches`\n      if (!rule.transformedSelector) {\n        // transform :host into a matchable selector\n        rule.transformedSelector =\n        StyleTransformer._transformRuleCss(\n          rule,\n          StyleTransformer._transformComplexSelector,\n          StyleTransformer._calcElementScope(is),\n          hostScope\n        );\n      }\n      selectorToMatch = rule.transformedSelector || hostScope;\n    }\n    callback({\n      selector: selectorToMatch,\n      isHost: isHost,\n      isRoot: isRoot\n    });\n  }\n/**\n * @param {Element} scope\n * @param {StyleNode} rules\n * @param {string} cssBuild\n * @return {Object}\n */\n  hostAndRootPropertiesForScope(scope, rules, cssBuild) {\n    let hostProps = {}, rootProps = {};\n    // note: active rules excludes non-matching @media rules\n    StyleUtil.forEachRule(rules, (rule) => {\n      // if scope is StyleDefaults, use _element for matchesSelector\n      this.whenHostOrRootRule(scope, rule, cssBuild, (info) => {\n        let element = scope._element || scope;\n        if (matchesSelector.call(element, info.selector)) {\n          if (info.isHost) {\n            this.collectProperties(rule, hostProps);\n          } else {\n            this.collectProperties(rule, rootProps);\n          }\n        }\n      });\n    }, null, true);\n    return {rootProps: rootProps, hostProps: hostProps};\n  }\n\n  /**\n   * @param {Element} element\n   * @param {Object} properties\n   * @param {string} scopeSelector\n   */\n  transformStyles(element, properties, scopeSelector) {\n    let self = this;\n    let {is, typeExtension} = StyleUtil.getIsExtends(element);\n    let hostSelector = StyleTransformer\n      ._calcHostScope(is, typeExtension);\n    let rxHostSelector = element.extends ?\n      '\\\\' + hostSelector.slice(0, -1) + '\\\\]' :\n      hostSelector;\n    let hostRx = new RegExp(RX.HOST_PREFIX + rxHostSelector +\n      RX.HOST_SUFFIX);\n    let {styleRules: rules, cssBuild} = StyleInfo.get(element);\n    let keyframeTransforms =\n      this._elementKeyframeTransforms(element, rules, scopeSelector);\n    return StyleTransformer.elementStyles(element, rules, function(rule) {\n      self.applyProperties(rule, properties);\n      if (!nativeShadow &&\n          !StyleUtil.isKeyframesSelector(rule) &&\n          rule['cssText']) {\n        // NOTE: keyframe transforms only scope munge animation names, so it\n        // is not necessary to apply them in ShadowDOM.\n        self.applyKeyframeTransforms(rule, keyframeTransforms);\n        self._scopeSelector(rule, hostRx, hostSelector, scopeSelector);\n      }\n    }, cssBuild);\n  }\n\n  /**\n   * @param {Element} element\n   * @param {StyleNode} rules\n   * @param {string} scopeSelector\n   * @return {Object}\n   */\n  _elementKeyframeTransforms(element, rules, scopeSelector) {\n    let keyframesRules = rules._keyframes;\n    let keyframeTransforms = {};\n    if (!nativeShadow && keyframesRules) {\n      // For non-ShadowDOM, we transform all known keyframes rules in\n      // advance for the current scope. This allows us to catch keyframes\n      // rules that appear anywhere in the stylesheet:\n      for (let i = 0, keyframesRule = keyframesRules[i];\n           i < keyframesRules.length;\n           keyframesRule = keyframesRules[++i]) {\n        this._scopeKeyframes(keyframesRule, scopeSelector);\n        keyframeTransforms[keyframesRule['keyframesName']] =\n            this._keyframesRuleTransformer(keyframesRule);\n      }\n    }\n    return keyframeTransforms;\n  }\n\n  // Generate a factory for transforming a chunk of CSS text to handle a\n  // particular scoped keyframes rule.\n  /**\n   * @param {StyleNode} keyframesRule\n   * @return {function(string):string}\n   */\n  _keyframesRuleTransformer(keyframesRule) {\n    return function(cssText) {\n      return cssText.replace(\n          keyframesRule.keyframesNameRx,\n          keyframesRule.transformedKeyframesName);\n    };\n  }\n\n/**\n * Transforms `@keyframes` names to be unique for the current host.\n * Example: @keyframes foo-anim -> @keyframes foo-anim-x-foo-0\n *\n * @param {StyleNode} rule\n * @param {string} scopeId\n */\n  _scopeKeyframes(rule, scopeId) {\n    // Animation names are of the form [\\w-], so ensure that the name regex does not partially apply\n    // to similarly named keyframe names by checking for a word boundary at the beginning and\n    // a non-word boundary or `-` at the end.\n    rule.keyframesNameRx = new RegExp(`\\\\b${rule['keyframesName']}(?!\\\\B|-)`, 'g');\n    rule.transformedKeyframesName = rule['keyframesName'] + '-' + scopeId;\n    rule.transformedSelector = rule.transformedSelector || rule['selector'];\n    rule['selector'] = rule.transformedSelector.replace(\n        rule['keyframesName'], rule.transformedKeyframesName);\n  }\n\n  // Strategy: x scope shim a selector e.g. to scope `.x-foo-42` (via classes):\n  // non-host selector: .a.x-foo -> .x-foo-42 .a.x-foo\n  // host selector: x-foo.wide -> .x-foo-42.wide\n  // note: we use only the scope class (.x-foo-42) and not the hostSelector\n  // (x-foo) to scope :host rules; this helps make property host rules\n  // have low specificity. They are overrideable by class selectors but,\n  // unfortunately, not by type selectors (e.g. overriding via\n  // `.special` is ok, but not by `x-foo`).\n  /**\n   * @param {StyleNode} rule\n   * @param {RegExp} hostRx\n   * @param {string} hostSelector\n   * @param {string} scopeId\n   */\n  _scopeSelector(rule, hostRx, hostSelector, scopeId) {\n    rule.transformedSelector = rule.transformedSelector || rule['selector'];\n    let selector = rule.transformedSelector;\n    let scope = '.' + scopeId;\n    let parts = StyleUtil.splitSelectorList(selector);\n    for (let i=0, l=parts.length, p; (i<l) && (p=parts[i]); i++) {\n      parts[i] = p.match(hostRx) ?\n        p.replace(hostSelector, scope) :\n        scope + ' ' + p;\n    }\n    rule['selector'] = parts.join(',');\n  }\n\n  /**\n   * @param {Element} element\n   * @param {string} selector\n   * @param {string} old\n   */\n  applyElementScopeSelector(element, selector, old) {\n    let c = element.getAttribute('class') || '';\n    let v = c;\n    if (old) {\n      v = c.replace(\n        new RegExp('\\\\s*' + XSCOPE_NAME + '\\\\s*' + old + '\\\\s*', 'g'), ' ');\n    }\n    v += (v ? ' ' : '') + XSCOPE_NAME + ' ' + selector;\n    if (c !== v) {\n      StyleUtil.setElementClassRaw(element, v);\n    }\n  }\n\n  /**\n   * @param {HTMLElement} element\n   * @param {Object} properties\n   * @param {string} selector\n   * @param {HTMLStyleElement} style\n   * @return {HTMLStyleElement}\n   */\n  applyElementStyle(element, properties, selector, style) {\n    // calculate cssText to apply\n    let cssText = style ? style.textContent || '' :\n      this.transformStyles(element, properties, selector);\n    // if shady and we have a cached style that is not style, decrement\n    let styleInfo = StyleInfo.get(element);\n    let s = styleInfo.customStyle;\n    if (s && !nativeShadow && (s !== style)) {\n      s['_useCount']--;\n      if (s['_useCount'] <= 0 && s.parentNode) {\n        s.parentNode.removeChild(s);\n      }\n    }\n    // apply styling always under native or if we generated style\n    // or the cached style is not in document(!)\n    if (nativeShadow) {\n      // update existing style only under native\n      if (styleInfo.customStyle) {\n        styleInfo.customStyle.textContent = cssText;\n        style = styleInfo.customStyle;\n      // otherwise, if we have css to apply, do so\n      } else if (cssText) {\n        // apply css after the scope style of the element to help with\n        // style precedence rules.\n        style = StyleUtil.applyCss(cssText, selector, element.shadowRoot,\n          styleInfo.placeholder);\n      }\n    } else {\n      // shady and no cache hit\n      if (!style) {\n        // apply css after the scope style of the element to help with\n        // style precedence rules.\n        if (cssText) {\n          style = StyleUtil.applyCss(cssText, selector, null,\n            styleInfo.placeholder);\n        }\n      // shady and cache hit but not in document\n      } else if (!style.parentNode) {\n        if (IS_IE && cssText.indexOf('@media') > -1) {\n            // @media rules may be stale in IE 10 and 11\n            // refresh the text content of the style to revalidate them.\n          style.textContent = cssText;\n        }\n        StyleUtil.applyStyle(style, null, styleInfo.placeholder);\n      }\n    }\n    // ensure this style is our custom style and increment its use count.\n    if (style) {\n      style['_useCount'] = style['_useCount'] || 0;\n      // increment use count if we changed styles\n      if (styleInfo.customStyle != style) {\n        style['_useCount']++;\n      }\n      styleInfo.customStyle = style;\n    }\n    return style;\n  }\n\n  /**\n   * @param {Element} style\n   * @param {Object} properties\n   */\n  applyCustomStyle(style, properties) {\n    let rules = StyleUtil.rulesForStyle(/** @type {HTMLStyleElement} */(style));\n    let self = this;\n    style.textContent = StyleUtil.toCssText(rules, function(/** StyleNode */rule) {\n      let css = rule['cssText'] = rule['parsedCssText'];\n      if (rule.propertyInfo && rule.propertyInfo.cssText) {\n        // remove property assignments\n        // so next function isn't confused\n        // NOTE: we have 3 categories of css:\n        // (1) normal properties,\n        // (2) custom property assignments (--foo: red;),\n        // (3) custom property usage: border: var(--foo); @apply(--foo);\n        // In elements, 1 and 3 are separated for efficiency; here they\n        // are not and this makes this case unique.\n        css = removeCustomPropAssignment(/** @type {string} */(css));\n        // replace with reified properties, scenario is same as mixin\n        rule['cssText'] = self.valueForProperties(css, properties);\n      }\n    });\n  }\n}\n\n/**\n * @param {number} n\n * @param {Array<number>} bits\n */\nfunction addToBitMask(n, bits) {\n  let o = parseInt(n / 32, 10);\n  let v = 1 << (n % 32);\n  bits[o] = (bits[o] || 0) | v;\n}\n\nexport default new StyleProperties();","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {StyleNode} from './css-parse.js'; // eslint-disable-line no-unused-vars\n\n/** @const {string} */\nconst infoKey = '__styleInfo';\n\nexport default class StyleInfo {\n  /**\n   * @param {Element} node\n   * @return {StyleInfo}\n   */\n  static get(node) {\n    if (node) {\n      return node[infoKey];\n    } else {\n      return null;\n    }\n  }\n  /**\n   * @param {!Element} node\n   * @param {StyleInfo} styleInfo\n   * @return {StyleInfo}\n   */\n  static set(node, styleInfo) {\n    node[infoKey] = styleInfo;\n    return styleInfo;\n  }\n  /**\n   * @param {StyleNode} ast\n   * @param {Node=} placeholder\n   * @param {Array<string>=} ownStylePropertyNames\n   * @param {string=} elementName\n   * @param {string=} typeExtension\n   * @param {string=} cssBuild\n   */\n  constructor(ast, placeholder, ownStylePropertyNames, elementName, typeExtension, cssBuild) {\n    /** @type {StyleNode} */\n    this.styleRules = ast || null;\n    /** @type {Node} */\n    this.placeholder = placeholder || null;\n    /** @type {!Array<string>} */\n    this.ownStylePropertyNames = ownStylePropertyNames || [];\n    /** @type {Array<Object>} */\n    this.overrideStyleProperties = null;\n    /** @type {string} */\n    this.elementName = elementName || '';\n    /** @type {string} */\n    this.cssBuild = cssBuild || '';\n    /** @type {string} */\n    this.typeExtension = typeExtension || '';\n    /** @type {Object<string, string>} */\n    this.styleProperties = null;\n    /** @type {?string} */\n    this.scopeSelector = null;\n    /** @type {HTMLStyleElement} */\n    this.customStyle = null;\n  }\n  _getStyleRules() {\n    return this.styleRules;\n  }\n}\n\n/* eslint-disable-next-line no-self-assign */\nStyleInfo.prototype['_getStyleRules'] = StyleInfo.prototype._getStyleRules;\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {applyStylePlaceHolder} from './style-util.js';\nimport {nativeShadow} from './style-settings.js';\n\n/** @type {!Object<string, !Node>} */\nconst placeholderMap = {};\n\n/**\n * @param {string} elementName\n * @return {Node}\n */\nexport function getStylePlaceholder(elementName) {\n  return placeholderMap[elementName] || null;\n}\n\n/**\n * @param {string} elementName\n */\nexport function ensureStylePlaceholder(elementName) {\n  if (!placeholderMap[elementName]) {\n    placeholderMap[elementName] = applyStylePlaceHolder(elementName);\n  }\n}\n\n/**\n * @const {CustomElementRegistry}\n */\nconst ce = window['customElements'];\nif (ce && !nativeShadow) {\n  /**\n   * @const {function(this:CustomElementRegistry, string,function(new:HTMLElement),{extends: string}=)}\n   */\n  const origDefine = ce['define'];\n  /**\n   * @param {string} name\n   * @param {function(new:HTMLElement)} clazz\n   * @param {{extends: string}=} options\n   */\n  const wrappedDefine = (name, clazz, options) => {\n    ensureStylePlaceholder(name);\n    origDefine.call(/** @type {!CustomElementRegistry} */(ce), name, clazz, options);\n  };\n  ce['define'] = wrappedDefine;\n}","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n'use strict';\n\nexport default class StyleCache {\n  constructor(typeMax = 100) {\n    // map element name -> [{properties, styleElement, scopeSelector}]\n    this.cache = {};\n    /** @type {number} */\n    this.typeMax = typeMax;\n  }\n\n  _validate(cacheEntry, properties, ownPropertyNames) {\n    for (let idx = 0; idx < ownPropertyNames.length; idx++) {\n      let pn = ownPropertyNames[idx];\n      if (cacheEntry.properties[pn] !== properties[pn]) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  store(tagname, properties, styleElement, scopeSelector) {\n    let list = this.cache[tagname] || [];\n    list.push({properties, styleElement, scopeSelector});\n    if (list.length > this.typeMax) {\n      list.shift();\n    }\n    this.cache[tagname] = list;\n  }\n\n  fetch(tagname, properties, ownPropertyNames) {\n    let list = this.cache[tagname];\n    if (!list) {\n      return;\n    }\n    // reverse list for most-recent lookups\n    for (let idx = list.length - 1; idx >= 0; idx--) {\n      let entry = list[idx];\n      if (this._validate(entry, properties, ownPropertyNames)) {\n        return entry;\n      }\n    }\n  }\n}\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\n/**\n * @const {!Object<string, !HTMLTemplateElement>}\n */\nconst templateMap = {};\nexport default templateMap;\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\nimport templateMap from './template-map.js';\nimport {StyleNode} from './css-parse.js'; // eslint-disable-line no-unused-vars\n\n/*\n * Utilities for handling invalidating apply-shim mixins for a given template.\n *\n * The invalidation strategy involves keeping track of the \"current\" version of a template's mixins, and updating that count when a mixin is invalidated.\n * The template\n */\n\n/** @const {string} */\nconst CURRENT_VERSION = '_applyShimCurrentVersion';\n\n/** @const {string} */\nconst NEXT_VERSION = '_applyShimNextVersion';\n\n/** @const {string} */\nconst VALIDATING_VERSION = '_applyShimValidatingVersion';\n\n/**\n * @const {Promise<void>}\n */\nconst promise = Promise.resolve();\n\n/**\n * @param {string} elementName\n */\nexport function invalidate(elementName){\n  let template = templateMap[elementName];\n  if (template) {\n    invalidateTemplate(template);\n  }\n}\n\n/**\n * This function can be called multiple times to mark a template invalid\n * and signal that the style inside must be regenerated.\n *\n * Use `startValidatingTemplate` to begin an asynchronous validation cycle.\n * During that cycle, call `templateIsValidating` to see if the template must\n * be revalidated\n * @param {HTMLTemplateElement} template\n */\nexport function invalidateTemplate(template) {\n  // default the current version to 0\n  template[CURRENT_VERSION] = template[CURRENT_VERSION] || 0;\n  // ensure the \"validating for\" flag exists\n  template[VALIDATING_VERSION] = template[VALIDATING_VERSION] || 0;\n  // increment the next version\n  template[NEXT_VERSION] = (template[NEXT_VERSION] || 0) + 1;\n}\n\n/**\n * @param {string} elementName\n * @return {boolean}\n */\nexport function isValid(elementName) {\n  let template = templateMap[elementName];\n  if (template) {\n    return templateIsValid(template);\n  }\n  return true;\n}\n\n/**\n * @param {HTMLTemplateElement} template\n * @return {boolean}\n */\nexport function templateIsValid(template) {\n  return template[CURRENT_VERSION] === template[NEXT_VERSION];\n}\n\n/**\n * @param {string} elementName\n * @return {boolean}\n */\nexport function isValidating(elementName) {\n  let template = templateMap[elementName];\n  if (template) {\n    return templateIsValidating(template);\n  }\n  return false;\n}\n\n/**\n * Returns true if the template is currently invalid and `startValidating` has been called since the last invalidation.\n * If false, the template must be validated.\n * @param {HTMLTemplateElement} template\n * @return {boolean}\n */\nexport function templateIsValidating(template) {\n  return !templateIsValid(template) && template[VALIDATING_VERSION] === template[NEXT_VERSION];\n}\n\n/**\n * the template is marked as `validating` for one microtask so that all instances\n * found in the tree crawl of `applyStyle` will update themselves,\n * but the template will only be updated once.\n * @param {string} elementName\n*/\nexport function startValidating(elementName) {\n  let template = templateMap[elementName];\n  startValidatingTemplate(template);\n}\n\n/**\n * Begin an asynchronous invalidation cycle.\n * This should be called after every validation of a template\n *\n * After one microtask, the template will be marked as valid until the next call to `invalidateTemplate`\n * @param {HTMLTemplateElement} template\n */\nexport function startValidatingTemplate(template) {\n  // remember that the current \"next version\" is the reason for this validation cycle\n  template[VALIDATING_VERSION] = template[NEXT_VERSION];\n  // however, there only needs to be one async task to clear the counters\n  if (!template._validating) {\n    template._validating = true;\n    promise.then(function() {\n      // sync the current version to let future invalidations cause a refresh cycle\n      template[CURRENT_VERSION] = template[NEXT_VERSION];\n      template._validating = false;\n    });\n  }\n}\n\n/**\n * @return {boolean}\n */\nexport function elementsAreInvalid() {\n  for (let elementName in templateMap) {\n    let template = templateMap[elementName];\n    if (!templateIsValid(template)) {\n      return true;\n    }\n  }\n  return false;\n}\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport { MIXIN_MATCH, VAR_ASSIGN } from './common-regex.js';\n\n/**\n * @param {Element} element\n * @param {Object=} properties\n */\nexport function updateNativeProperties(element, properties) {\n  // remove previous properties\n  for (let p in properties) {\n    // NOTE: for bc with shim, don't apply null values.\n    if (p === null) {\n      element.style.removeProperty(p);\n    } else {\n      element.style.setProperty(p, properties[p]);\n    }\n  }\n}\n\n/**\n * @param {Element} element\n * @param {string} property\n * @return {string}\n */\nexport function getComputedStyleValue(element, property) {\n  /**\n   * @const {string}\n   */\n  const value = window.getComputedStyle(element).getPropertyValue(property);\n  if (!value) {\n    return '';\n  } else {\n    return value.trim();\n  }\n}\n\n/**\n * return true if `cssText` contains a mixin definition or consumption\n * @param {string} cssText\n * @return {boolean}\n */\nexport function detectMixin(cssText) {\n  const has = MIXIN_MATCH.test(cssText) || VAR_ASSIGN.test(cssText);\n  // reset state of the regexes\n  MIXIN_MATCH.lastIndex = 0;\n  VAR_ASSIGN.lastIndex = 0;\n  return has;\n}\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport ScopingShim from '../src/scoping-shim.js';\nimport {nativeCssVariables, nativeShadow, cssBuild} from '../src/style-settings.js';\n\n/** @const {ScopingShim} */\nconst scopingShim = new ScopingShim();\n\nlet ApplyShim, CustomStyleInterface;\n\nif (window['ShadyCSS']) {\n  ApplyShim = window['ShadyCSS']['ApplyShim'];\n  CustomStyleInterface = window['ShadyCSS']['CustomStyleInterface'];\n}\n\nwindow.ShadyCSS = {\n  ScopingShim: scopingShim,\n  /**\n   * @param {!HTMLTemplateElement} template\n   * @param {string} elementName\n   * @param {string=} elementExtends\n   */\n  prepareTemplate(template, elementName, elementExtends) {\n    scopingShim.flushCustomStyles();\n    scopingShim.prepareTemplate(template, elementName, elementExtends)\n  },\n\n  /**\n   * @param {!HTMLTemplateElement} template\n   * @param {string} elementName\n   */\n  prepareTemplateDom(template, elementName) {\n    scopingShim.prepareTemplateDom(template, elementName);\n  },\n\n  /**\n   * @param {!HTMLTemplateElement} template\n   * @param {string} elementName\n   * @param {string=} elementExtends\n   */\n  prepareTemplateStyles(template, elementName, elementExtends) {\n    scopingShim.flushCustomStyles();\n    scopingShim.prepareTemplateStyles(template, elementName, elementExtends)\n  },\n  /**\n   * @param {!HTMLElement} element\n   * @param {Object=} properties\n   */\n  styleSubtree(element, properties) {\n    scopingShim.flushCustomStyles();\n    scopingShim.styleSubtree(element, properties);\n  },\n\n  /**\n   * @param {!HTMLElement} element\n   */\n  styleElement(element) {\n    scopingShim.flushCustomStyles();\n    scopingShim.styleElement(element);\n  },\n\n  /**\n   * @param {Object=} properties\n   */\n  styleDocument(properties) {\n    scopingShim.flushCustomStyles();\n    scopingShim.styleDocument(properties);\n  },\n\n  flushCustomStyles() {\n    scopingShim.flushCustomStyles();\n  },\n\n  /**\n   * @param {Element} element\n   * @param {string} property\n   * @return {string}\n   */\n  getComputedStyleValue(element, property) {\n    return scopingShim.getComputedStyleValue(element, property);\n  },\n\n  nativeCss: nativeCssVariables,\n\n  nativeShadow: nativeShadow,\n\n  cssBuild: cssBuild\n};\n\nif (ApplyShim) {\n  window.ShadyCSS.ApplyShim = ApplyShim;\n}\n\nif (CustomStyleInterface) {\n  window.ShadyCSS.CustomStyleInterface = CustomStyleInterface;\n}"]}