forked from webcomponents/shadycss
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscoping-shim.min.js.map
1 lines (1 loc) · 133 KB
/
scoping-shim.min.js.map
1
{"version":3,"sources":["src/template-map.js"," [synthetic:util/global] ","src/css-parse.js","src/apply-shim-utils.js","src/common-regex.js","src/style-settings.js","src/style-util.js","src/document-wait.js","src/style-transformer.js","src/document-watcher.js","src/style-info.js","src/style-properties.js","src/style-placeholder.js","src/scoping-shim.js","src/style-cache.js","src/common-utils.js","entrypoints/scoping-shim.js"],"names":["$jscomp.global","templateMap","constructor","StyleNode","parse$$module$$src$css_parse","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","parseCss$$module$$src$css_parse","node","t","substring","trim","ss","_expandUnicodeEscapes","RX$$module$$src$css_parse.multipleSpaces","lastIndexOf","s","indexOf","AT_START","MEDIA_START","match","RX$$module$$src$css_parse.keyframesRule","types$$module$$src$css_parse.KEYFRAMES_RULE","split","pop","types$$module$$src$css_parse.MEDIA_RULE","VAR_START","types$$module$$src$css_parse.STYLE_RULE","types$$module$$src$css_parse.MIXIN_RULE","r$","r","_expandUnicodeEscapes$$module$$src$css_parse","code","repeat","stringify$$module$$src$css_parse","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","promise","Promise","resolve","invalidate$$module$$src$apply_shim_utils","invalidate","elementName","template","startValidatingTemplate$$module$$src$apply_shim_utils","startValidatingTemplate","_validating","then","VAR_ASSIGN","MIXIN_MATCH","VAR_CONSUMED","ANIMATION_MATCH","MEDIA_MATCH","BRACKETED","nativeShadow","window","nativeCssVariables","navigator","userAgent","CSS","supports","parseSettings$$module$$src$style_settings","parseSettings","settings","ShadyCSS","module$$src$style_settings.nativeShadow","module$$src$style_settings.nativeCssVariables","toCssText$$module$$src$style_util","toCssText","callback","forEachRule","rulesForStyle$$module$$src$style_util","rulesForStyle","style","textContent","isKeyframesSelector$$module$$src$style_util","isKeyframesSelector","rule","forEachRule$$module$$src$style_util","styleRuleCallback","keyframesRuleCallback","onlyActiveRules","skipRules","type","matchMedia","matches","applyCss$$module$$src$style_util","applyCss","moniker","target","contextNode","document","createElement","setAttribute","applyStyle","lastHeadApplyNode","applyStyle$$module$$src$style_util","head","insertBefore","nextSibling","firstChild","compareDocumentPosition","position","Node","DOCUMENT_POSITION_PRECEDING","processVariableAndFallback$$module$$src$style_util","processVariableAndFallback","str","start","end","level","inner","prefix","suffix","comma","value","fallback","setElementClassRaw$$module$$src$style_util","setElementClassRaw","element","call","getIsExtends$$module$$src$style_util","getIsExtends","localName","typeExtension","is","getAttribute","extends","readyPromise","whenReady","resolveFn","documentWait$$module$$src$document_wait","documentWait","readyState","addEventListener","StyleTransformer","dom","scope","shouldRemoveScope","$jscompDefaultExport","_transformDom","selector","nodeType","ELEMENT_NODE","classList","remove","SCOPE_NAME","add","c","CLASS","newValue","c$","childNodes","content","_content","children","elementStyles","styleRules","cssBuildType","css","ext","hostScope","_calcHostScope","CSS_CLASS_PREFIX","isScoped","transformedSelector","_transformRuleCss","self","_transformComplexSelector","transformer","p$","COMPLEX_SELECTOR_SEP","join","stop","NTH","m","SLOTTED_START","HOST","SIMPLE_SELECTOR_SEP","info","_transformCompoundSelector","combinator","slottedIndex","SLOTTED","_transformHostSelector","_transformSimpleSelector","slotted","SLOTTED_PAREN","paren","DIR_PAREN","before","dir","PSEUDO_PREFIX","HOST_PAREN","SIMPLE_SELECTOR_PREFIX","host","typeSelector","SELECTOR_NO_MATCH","normalizeRootSelector","ROOT","_transformDocumentSelector","SCOPE_DOC_SELECTOR","$jscomp.global.Object.defineProperties","RegExp","flush$$module$$src$document_watcher","handler","mxns","x","mxn","documentElement","addedNodes","contains","hasAttribute","getRootNode","DOCUMENT_FRAGMENT_NODE","removedNodes","classes","undefined","Array","from","classIdx","observer","MutationObserver","observe","childList","subtree","customElements","delayedStart","body","requestAnimationFrame","listener","removeEventListener","flush","takeRecords","module$$src$document_watcher.flush","StyleInfo","ast","placeholder","ownStylePropertyNames","overrideStyleProperties","customStyle","scopeSelector","styleProperties","get","set","styleInfo","_getStyleRules","prototype","Element","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","IS_IE","StyleProperties","decorateStyles","props","keyframes","ruleIndex","decorateRule","index","propertyInfo","exec","name","onKeyframesRule","_keyframes","names","properties","collectProperties","hasProperties","Object","assign","any","valueForProperty","property","valueForProperties","fn","propertyValue","parts","lastIndex","colon","pp","slice","propertyDataFromStyles","o","selectorToMatch","parseInt","key","whenHostOrRootRule","cssBuild","parsedSelector","isRoot","isHost","hostAndRootPropertiesForScope","hostProps","rootProps","_element","transformStyles","hostSelector","hostRx","HOST_PREFIX","rxHostSelector","HOST_SUFFIX","StyleInfo$$module$$src$style_info.get","keyframeTransforms","_elementKeyframeTransforms","output","input","hasAnimations","test","keyframeNamesToTransform","keyframe","transform","keyframesRules","keyframesNameRx","transformedKeyframesName","scopeId","_keyframesRuleTransformer","applyCustomStyle","XSCOPE_NAME","placeholderMap","ce","origDefine","wrappedDefine","clazz","options","placeHolder","createComment","after","styleCache","cache","typeMax","ScopingShim","_scopeCounter","_documentOwner","_documentOwnerStyleInfo","StyleInfo$$module$$src$style_info.set","_elementsHaveApplied","_customStyleInterface","_applyShim","_ensure","ScopingShim$$module$$src$scoping_shim.prototype","?.prototype","ScopingShim$$module$$src$scoping_shim_prototype$flush","getStyleAst","styleAstToString","prepareTemplate","_prepared","querySelector","styles","querySelectorAll","parentNode","removeChild","__cssBuild","hasMixins","_cssBuild","ownPropertyNames","shadowroot","_style","_ownPropertyNames","_ensureApplyShim","ApplyShim","_ensureCustomStyleInterface","CustomStyleInterface","transformCustomStyleForDocument","flushCustomStyles","customStyles","_revalidateCustomStyleApplyShim","_updateProperties","_applyCustomStyles","styleDocument","styleElement","overrideProps","_isRootOwner","removeProperty","setProperty","shadowRoot","list","idx","entry","pn","cachedStyle","cacheEntry","oldScopeSelector","cachedScopeSelector","id","v","shift","_styleOwnerForNode","owner","ownerStyleInfo","create","hostAndRootProps","propertiesMatchingHost","propertyData","overrides","getOwnPropertyNames","styleSubtree","shadowChildren","_transformRule","getComputedStyleValue","getComputedStyle","getPropertyValue","setElementClass","classString","scopeName","classAttr","k$","_styleInfoForNode","defineProperties","scopingShim","elementExtends","nativeCss"],"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'use strict';\n\n/**\n * @const {!Object<string, !HTMLTemplateElement>}\n */\nconst templateMap = {};\nexport default templateMap;\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/*\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","/**\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'\nimport {StyleNode} from './css-parse' // eslint-disable-line no-unused-vars\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 * @param {HTMLTemplateElement} template\n */\nexport function invalidateTemplate(template) {\n template['_applyShimInvalid'] = true;\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['_applyShimInvalid'];\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 * @param {HTMLTemplateElement} template\n * @return {boolean}\n */\nexport function templateIsValidating(template) {\n return template._validating;\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 * @param {HTMLTemplateElement} template\n */\nexport function startValidatingTemplate(template) {\n if (!template._validating) {\n template._validating = true;\n promise.then(function() {\n template['_applyShimInvalid'] = false;\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@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[^(]*(\\([^)]*\\))/;\nexport const IS_VAR = /^--/;\nexport const BRACKETED = /\\{[^}]*\\}/g;\nexport const HOST_PREFIX = '(?:^|[^.#[:])';\nexport const HOST_SUFFIX = '($|[.:[\\\\s>+~])';","/**\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 let nativeShadow = !(window['ShadyDOM'] && window['ShadyDOM']['inUse']);\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\nexport let nativeCssVariables = (!navigator.userAgent.match('AppleWebKit/601') &&\nwindow.CSS && CSS.supports && CSS.supports('box-shadow', '0 0 0 var(--foo)'));\n\n/**\n * @param {ShadyCSSOptions | ShadyCSSInterface | undefined} settings\n */\nfunction parseSettings(settings) {\n if (settings) {\n nativeCssVariables = nativeCssVariables && !settings['nativeCss'] && !settings['shimcssproperties'];\n nativeShadow = nativeShadow && !settings['nativeShadow'] && !settings['shimshadow'];\n }\n}\n\nif (window.ShadyCSS) {\n parseSettings(window.ShadyCSS);\n} else if (window['WebComponents']) {\n parseSettings(window['WebComponents']['flags']);\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, nativeCssVariables} from './style-settings'\nimport {parse, stringify, types, StyleNode} from './css-parse' // eslint-disable-line no-unused-vars\nimport {MEDIA_MATCH} from './common-regex';\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 * @param {Element} element\n * @return {?string}\n */\nexport function getCssBuildType(element) {\n return element.getAttribute('css-build');\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 */\nfunction 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\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@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 {Promise<void>} */\nlet readyPromise = null;\n\n/** @type {?function(?function())} */\nlet whenReady = window['HTMLImports'] && window['HTMLImports']['whenReady'] || null;\n\n/** @type {function()} */\nlet resolveFn;\n\n/**\n * @param {?function()} callback\n */\nexport default function documentWait(callback) {\n if (whenReady) {\n whenReady(callback)\n } else {\n if (!readyPromise) {\n readyPromise = new Promise((resolve) => {resolveFn = resolve});\n if (document.readyState === 'complete') {\n resolveFn();\n } else {\n document.addEventListener('readystatechange', () => {\n if (document.readyState === 'complete') {\n resolveFn();\n }\n });\n }\n }\n readyPromise.then(function(){ callback && callback(); });\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' // eslint-disable-line no-unused-vars\nimport * as StyleUtil from './style-util'\nimport {nativeShadow} from './style-settings'\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 // 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 dom(node, scope, shouldRemoveScope) {\n // one time optimization to skip scoping...\n if (node['__styleScoped']) {\n node['__styleScoped'] = null;\n } else {\n this._transformDom(node, scope || '', shouldRemoveScope);\n }\n }\n\n _transformDom(node, selector, shouldRemoveScope) {\n if (node.nodeType === Node.ELEMENT_NODE) {\n this.element(node, selector, shouldRemoveScope);\n }\n let c$ = (node.localName === 'template') ?\n (node.content || node._content).childNodes :\n node.children || node.childNodes;\n if (c$) {\n for (let i=0; i<c$.length; i++) {\n this._transformDom(c$[i], selector, shouldRemoveScope);\n }\n }\n }\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 elementStyles(element, styleRules, callback) {\n let cssBuildType = element['__cssBuild'];\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 let cssText = '';\n if (nativeShadow || cssBuildType === '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 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$ = rule['selector'].split(COMPLEX_SELECTOR_SEP);\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$.join(COMPLEX_SELECTOR_SEP);\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 selector = selector.replace(NTH, (m, type, inner) => `:${type}(${inner.replace(/\\s/g, '')})`);\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 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 let p$ = selector.split(PSEUDO_PREFIX);\n p$[0] += scope;\n return p$.join(PSEUDO_PREFIX);\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 return selector.match(SLOTTED) ?\n this._transformComplexSelector(selector, SCOPE_DOC_SELECTOR) :\n this._transformSimpleSelector(selector.trim(), SCOPE_DOC_SELECTOR);\n }\n}\n\nlet NTH = /:(nth[-\\w]+)\\(([^)]+)\\)/;\nlet SCOPE_DOC_SELECTOR = `:not(.${SCOPE_NAME})`;\nlet COMPLEX_SELECTOR_SEP = ',';\nlet SIMPLE_SELECTOR_SEP = /(^|[\\s>+~]+)((?:\\[.+?\\]|[^\\s>+~=\\[])+)/g;\nlet SIMPLE_SELECTOR_PREFIX = /[[.:#*]/;\nlet HOST = ':host';\nlet ROOT = ':root';\nlet SLOTTED = '::slotted';\nlet 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\nlet HOST_PAREN = /(:host)(?:\\(((?:\\([^)(]*\\)|[^)(]*)+?)\\))/;\n// similar to HOST_PAREN\nlet SLOTTED_PAREN = /(?:::slotted)(?:\\(((?:\\([^)(]*\\)|[^)(]*)+?)\\))/;\nlet DIR_PAREN = /(.*):dir\\((?:(ltr|rtl))\\)/;\nlet CSS_CLASS_PREFIX = '.';\nlet PSEUDO_PREFIX = ':';\nlet CLASS = 'class';\nlet SELECTOR_NO_MATCH = 'should_not_match';\n\nexport default new StyleTransformer()","/**\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'\nimport StyleTransformer from './style-transformer'\nimport {getIsExtends} from './style-util'\n\nexport let flush = function() {};\n\nif (!nativeShadow) {\n let elementNeedsScoping = (element) => {\n return (element.classList &&\n !element.classList.contains(StyleTransformer.SCOPE_NAME) ||\n // note: necessary for IE11\n (element instanceof window['SVGElement'] && (!element.hasAttribute('class') ||\n element.getAttribute('class').indexOf(StyleTransformer.SCOPE_NAME) < 0)));\n }\n\n/**\n * @param {Array<MutationRecord|null>|null} mxns\n */\n let 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 (elementNeedsScoping(n)) {\n let root = n.getRootNode();\n if (root.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n // may no longer be in a shadowroot\n let host = /** @type {ShadowRoot} */(root).host;\n if (host) {\n let {is: scope} = getIsExtends(host);\n StyleTransformer.dom(n, scope);\n }\n }\n }\n }\n for (let i=0; i < mxn.removedNodes.length; i++) {\n let n = /** @type {HTMLElement} */(mxn.removedNodes[i]);\n if (n.nodeType === Node.ELEMENT_NODE) {\n let classes = undefined;\n if (n.classList) {\n classes = Array.from(n.classList);\n } else if (n.hasAttribute('class')) {\n classes = n.getAttribute('class').split(/\\s+/);\n }\n if (classes !== undefined) {\n // NOTE: relies on the scoping class always being adjacent to the\n // SCOPE_NAME class.\n let classIdx = classes.indexOf(StyleTransformer.SCOPE_NAME);\n if (classIdx >= 0) {\n let scope = classes[classIdx + 1];\n if (scope) {\n StyleTransformer.dom(n, scope, true);\n }\n }\n }\n }\n }\n }\n };\n\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']['flush']);\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 {StyleNode} from './css-parse' // 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\nStyleInfo.prototype['_getStyleRules'] = StyleInfo.prototype._getStyleRules;","/**\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' // eslint-disable-line no-unused-vars\nimport {nativeShadow} from './style-settings'\nimport StyleTransformer from './style-transformer'\nimport * as StyleUtil from './style-util'\nimport * as RX from './common-regex'\nimport StyleInfo from './style-info'\n\n// TODO: dedupe with shady\n/**\n * @const {function(string):boolean}\n */\nconst matchesSelector = ((p) => p.matches || p.matchesSelector ||\n p.mozMatchesSelector || p.msMatchesSelector ||\np.oMatchesSelector || p.webkitMatchesSelector)(window.Element.prototype);\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 = {}, self = this;\n // generates a unique key for these matches\n let o = [];\n // note: active rules excludes non-matching @media rules\n StyleUtil.forEachRule(rules, function(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 self.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 self.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|undefined} 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 (cssBuild === 'shadow') {\n isRoot = parsedSelector === ':host > *' || parsedSelector === 'html';\n isHost = isHost && !isRoot;\n }\n if (!isRoot && !isHost) {\n return;\n }\n let selectorToMatch = hostScope;\n if (isHost) {\n // need to transform :host under ShadowDOM because `:host` does not work with `matches`\n if (nativeShadow && !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 * @return {Object}\n */\n hostAndRootPropertiesForScope(scope, rules) {\n let hostProps = {}, rootProps = {}, self = this;\n // note: active rules excludes non-matching @media rules\n let cssBuild = rules && rules['__cssBuild'];\n StyleUtil.forEachRule(rules, function(rule) {\n // if scope is StyleDefaults, use _element for matchesSelector\n self.whenHostOrRootRule(scope, rule, cssBuild, function(info) {\n let element = scope._element || scope;\n if (matchesSelector.call(element, info.selector)) {\n if (info.isHost) {\n self.collectProperties(rule, hostProps);\n } else {\n self.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 rules = StyleInfo.get(element).styleRules;\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 });\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 rule.keyframesNameRx = new RegExp(rule['keyframesName'], '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 = selector.split(',');\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 StyleUtil.applyStyle(style, null, styleInfo.placeholder);\n }\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 // @media rules may be stale in IE 10 and 11\n if (IS_IE) {\n style.textContent = style.textContent;\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 {applyStylePlaceHolder} from './style-util'\nimport {nativeShadow} from './style-settings'\n\n/** @type {Object<string, !Node>} */\nlet placeholderMap = {};\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 * @return {function(new:HTMLElement)}\n */\n const wrappedDefine = (name, clazz, options) => {\n placeholderMap[name] = applyStylePlaceHolder(name);\n return origDefine.call(/** @type {!CustomElementRegistry} */(ce), name, clazz, options);\n }\n ce['define'] = wrappedDefine;\n}\n\nexport default placeholderMap;\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'\nimport {nativeShadow, nativeCssVariables} from './style-settings'\nimport StyleTransformer from './style-transformer'\nimport * as StyleUtil from './style-util'\nimport StyleProperties from './style-properties'\nimport placeholderMap from './style-placeholder'\nimport StyleInfo from './style-info'\nimport StyleCache from './style-cache'\nimport {flush as watcherFlush} from './document-watcher'\nimport templateMap from './template-map'\nimport * as ApplyShimUtils from './apply-shim-utils'\nimport documentWait from './document-wait'\nimport {updateNativeProperties} from './common-utils'\nimport {CustomStyleInterfaceInterface} from './custom-style-interface' //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 = 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 this._applyShim = null;\n /** @type {?CustomStyleInterfaceInterface} */\n this._customStyleInterface = null;\n documentWait(() => {\n this._ensure();\n });\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 let styles = template.content.querySelectorAll('style');\n let cssText = [];\n for (let i = 0; i < styles.length; i++) {\n let s = styles[i];\n cssText.push(s.textContent);\n s.parentNode.removeChild(s);\n }\n return cssText.join('').trim();\n }\n _getCssBuild(template) {\n let style = template.content.querySelector('style');\n if (!style) {\n return '';\n }\n return style.getAttribute('css-build') || '';\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 if (template._prepared) {\n return;\n }\n template._prepared = true;\n template.name = elementName;\n template.extends = typeExtension;\n templateMap[elementName] = template;\n let cssBuild = this._getCssBuild(template);\n let cssText = this._gatherStyles(template);\n let info = {\n is: elementName,\n extends: typeExtension,\n __cssBuild: cssBuild,\n };\n if (!nativeShadow) {\n StyleTransformer.dom(template.content, elementName);\n }\n // check if the styling has mixin definitions or uses\n this._ensure();\n let hasMixins = this._applyShim['detectMixin'](cssText);\n let ast = parse(cssText);\n // only run the applyshim transforms if there is a mixin involved\n if (hasMixins && nativeCssVariables) {\n this._applyShim['transformRules'](ast, elementName);\n }\n template['_styleAst'] = ast;\n template._cssBuild = cssBuild;\n\n let ownPropertyNames = [];\n if (!nativeCssVariables) {\n ownPropertyNames = StyleProperties.decorateStyles(template['_styleAst'], info);\n }\n if (!ownPropertyNames.length || nativeCssVariables) {\n let root = nativeShadow ? template.content : null;\n let placeholder = placeholderMap[elementName];\n let style = this._generateStaticStyle(info, template['_styleAst'], root, placeholder);\n template._style = style;\n }\n template._ownPropertyNames = ownPropertyNames;\n }\n _generateStaticStyle(info, rules, shadowroot, placeholder) {\n let cssText = StyleTransformer.elementStyles(info, rules);\n if (cssText.length) {\n return StyleUtil.applyCss(cssText, info.is, shadowroot, placeholder);\n }\n }\n _prepareHost(host) {\n let {is, typeExtension} = StyleUtil.getIsExtends(host);\n let placeholder = placeholderMap[is];\n let template = templateMap[is];\n let ast;\n let ownStylePropertyNames;\n let cssBuild;\n if (template) {\n ast = template['_styleAst'];\n ownStylePropertyNames = template._ownPropertyNames;\n cssBuild = template._cssBuild;\n }\n return StyleInfo.set(host,\n new StyleInfo(\n ast,\n placeholder,\n ownStylePropertyNames,\n is,\n typeExtension,\n cssBuild\n )\n );\n }\n _ensureApplyShim() {\n if (this._applyShim) {\n return;\n } else if (window.ShadyCSS.ApplyShim) {\n this._applyShim = window.ShadyCSS.ApplyShim;\n this._applyShim['invalidCallback'] = ApplyShimUtils.invalidate;\n } else {\n this._applyShim = {\n /* eslint-disable no-unused-vars */\n ['detectMixin'](str){return false},\n ['transformRule'](ast){},\n ['transformRules'](ast, name){},\n /* eslint-enable no-unused-vars */\n }\n }\n }\n _ensureCustomStyleInterface() {\n if (this._customStyleInterface) {\n return;\n } else if (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 } else {\n this._customStyleInterface = /** @type {!CustomStyleInterfaceInterface} */({\n ['processStyles']() {},\n ['enqueued']: false,\n ['getStyleForCustomStyle'](s) { return null } // eslint-disable-line no-unused-vars\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 let customStyles = this._customStyleInterface['processStyles']();\n // early return if custom-styles don't need validation\n if (!this._customStyleInterface['enqueued']) {\n return;\n }\n if (!nativeCssVariables) {\n this._updateProperties(this._documentOwner, this._documentOwnerStyleInfo);\n this._applyCustomStyles(customStyles);\n } else {\n this._revalidateCustomStyleApplyShim(customStyles);\n }\n this._customStyleInterface['enqueued'] = false;\n // if custom elements have upgraded and there are no native css variables, we must recalculate the whole tree\n if (this._elementsHaveApplied && !nativeCssVariables) {\n this.styleDocument();\n }\n }\n /**\n * Apply styles for the given element\n *\n * @param {!HTMLElement} host\n * @param {Object=} overrideProps\n */\n styleElement(host, overrideProps) {\n let {is} = StyleUtil.getIsExtends(host);\n let styleInfo = StyleInfo.get(host);\n if (!styleInfo) {\n styleInfo = this._prepareHost(host);\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._updateProperties(host, styleInfo);\n if (styleInfo.ownStylePropertyNames && styleInfo.ownStylePropertyNames.length) {\n this._applyStyleProperties(host, styleInfo);\n }\n } else {\n if (styleInfo.overrideStyleProperties) {\n updateNativeProperties(host, styleInfo.overrideStyleProperties);\n }\n let template = templateMap[is];\n // bail early if there is no shadowroot for this element\n if (!template && !this._isRootOwner(host)) {\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['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 style.textContent = StyleTransformer.elementStyles(host, styleInfo.styleRules);\n }\n }\n styleInfo.styleRules = template['_styleAst'];\n }\n }\n }\n _styleOwnerForNode(node) {\n let root = node.getRootNode();\n let host = root.host;\n if (host) {\n if (StyleInfo.get(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 let props = Object.create(ownerProperties || null);\n let hostAndRootProps = StyleProperties.hostAndRootPropertiesForScope(host, styleInfo.styleRules);\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 = root && (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 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) {\n this._ensure();\n 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) {\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 = 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\n/* exports */\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;\nObject.defineProperties(ScopingShim.prototype, {\n 'nativeShadow': {\n get() {\n return nativeShadow;\n }\n },\n 'nativeCss': {\n get() {\n return nativeCssVariables;\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'use strict';\n\nexport default class StyleCache {\n constructor(typeMax = 100) {\n // map element name -> [{properties, styleElement, scopeSelector}]\n this.cache = {};\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 * @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@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'\nimport {nativeCssVariables, nativeShadow} from '../src/style-settings'\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 {!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 /**\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\nif (ApplyShim) {\n window.ShadyCSS.ApplyShim = ApplyShim;\n}\n\nif (CustomStyleInterface) {\n window.ShadyCSS.CustomStyleInterface = CustomStyleInterface;\n}"]}