Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3034)

Unified Diff: appengine/config_service/ui/bower_components/shadycss/apply-shim.min.js.map

Issue 2923973003: Added base template for config ui. (Closed)
Patch Set: Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: appengine/config_service/ui/bower_components/shadycss/apply-shim.min.js.map
diff --git a/appengine/config_service/ui/bower_components/shadycss/apply-shim.min.js.map b/appengine/config_service/ui/bower_components/shadycss/apply-shim.min.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..e1e8e8bb7c0492a391c953d71bcd7c0de6b5bd0b
--- /dev/null
+++ b/appengine/config_service/ui/bower_components/shadycss/apply-shim.min.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["src/template-map.js","src/css-parse.js","src/apply-shim-utils.js","src/common-regex.js","src/style-settings.js","src/style-util.js","src/apply-shim.js","src/common-utils.js","src/document-wait.js","entrypoints/apply-shim.js"],"names":["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","templateIsValid$$module$src$apply_shim_utils","templateIsValid","startValidatingTemplate$$module$src$apply_shim_utils","startValidatingTemplate","_validating","then","VAR_ASSIGN","MIXIN_MATCH","MEDIA_MATCH","nativeShadow","window","nativeCssVariables","calcCssVariables$$module$src$style_settings","calcCssVariables","settings","navigator","userAgent","CSS","supports","ShadyCSS","undefined","nativeCss","module$src$style_settings.nativeCssVariables","toCssText$$module$src$style_util","toCssText","rulesForStyle$$module$src$style_util","rulesForStyle","style","textContent","forEachRule$$module$src$style_util","forEachRule","styleRuleCallback","keyframesRuleCallback","onlyActiveRules","skipRules","type","matchMedia","matches","processVariableAndFallback$$module$src$style_util","processVariableAndFallback","str","callback","start","level","inner","end","prefix","suffix","comma","value","fallback","APPLY_NAME_CLEAN","INITIAL_INHERIT","MixinMap","_map","set","name","props","properties","dependants","get","invalidCallback","ApplyShim","_measureElement","_currentElement","detectMixin","has","test","lastIndex","transformTemplate","content","querySelector","ast","transformStyle","transformRules","transformCustomStyle","rule","transformRule","transformCssText","matchText","propertyName","valueProperty","valueMixin","_produceCssProperties","_consumeCssProperties","m","exec","mixinName","idx","index","textBeforeApply","slice","textAfterApply","defaults","_cssTextToMap","_atApplyToCssProperties","vars","mixinEntry","f","fallbacks","parts","MIXIN_VAR_SEP","join","replacement","property","out","sp","_replaceInitialOrInherit","document","createElement","setAttribute","all","head","appendChild","getComputedStyle","getPropertyValue","_invalidateMixinEntry","mixinAsProperties","combinedProps","mixinValues","oldProps","Object","assign","create","needToInvalidate","v","prototype","defineProperty","cb","readyPromise","whenReady","resolveFn","documentWait$$module$src$document_wait","documentWait","requestAnimationFrame","readyState","addEventListener","applyShim","ApplyShimInterface","customStyleInterface","ensure","CustomStyleInterface","flushCustomStyles","prepareTemplate","styles","cs","styleSubtree","element","removeProperty","setProperty","shadowRoot","styleElement","shadowChildren","children","childNodes","localName","is","getAttribute","styleDocument","body","ScopingShim","applyShimInterface","getComputedStyleValue"],"mappings":"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","file":"apply-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","/**\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.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@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","/**\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']);\nexport let 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 nativeCssVariables = nativeShadow || Boolean(!navigator.userAgent.match('AppleWebKit/601') &&\n window.CSS && CSS.supports && CSS.supports('box-shadow', '0 0 0 var(--foo)'));\n }\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@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.js'\nimport {parse, stringify, types, StyleNode} from './css-parse.js' // eslint-disable-line no-unused-vars\nimport {MEDIA_MATCH} from './common-regex.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 * @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","/**\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 * The apply shim simulates the behavior of `@apply` proposed at\n * https://tabatkins.github.io/specs/css-apply-rule/.\n * The approach is to convert a property like this:\n *\n * --foo: {color: red; background: blue;}\n *\n * to this:\n *\n * --foo_-_color: red;\n * --foo_-_background: blue;\n *\n * Then where `@apply --foo` is used, that is converted to:\n *\n * color: var(--foo_-_color);\n * background: var(--foo_-_background);\n *\n * This approach generally works but there are some issues and limitations.\n * Consider, for example, that somewhere *between* where `--foo` is set and used,\n * another element sets it to:\n *\n * --foo: { border: 2px solid red; }\n *\n * We must now ensure that the color and background from the previous setting\n * do not apply. This is accomplished by changing the property set to this:\n *\n * --foo_-_border: 2px solid red;\n * --foo_-_color: initial;\n * --foo_-_background: initial;\n *\n * This works but introduces one new issue.\n * Consider this setup at the point where the `@apply` is used:\n *\n * background: orange;\n * `@apply` --foo;\n *\n * In this case the background will be unset (initial) rather than the desired\n * `orange`. We address this by altering the property set to use a fallback\n * value like this:\n *\n * color: var(--foo_-_color);\n * background: var(--foo_-_background, orange);\n * border: var(--foo_-_border);\n *\n * Note that the default is retained in the property set and the `background` is\n * the desired `orange`. This leads us to a limitation.\n *\n * Limitation 1:\n\n * Only properties in the rule where the `@apply`\n * is used are considered as default values.\n * If another rule matches the element and sets `background` with\n * less specificity than the rule in which `@apply` appears,\n * the `background` will not be set.\n *\n * Limitation 2:\n *\n * When using Polymer's `updateStyles` api, new properties may not be set for\n * `@apply` properties.\n\n*/\n\n'use strict';\n\nimport {forEachRule, processVariableAndFallback, rulesForStyle, toCssText} from './style-util.js'\nimport {MIXIN_MATCH, VAR_ASSIGN} from './common-regex.js'\nimport {detectMixin} from './common-utils.js'\nimport {StyleNode} from './css-parse.js' // eslint-disable-line no-unused-vars\n\nconst APPLY_NAME_CLEAN = /;\\s*/m;\nconst INITIAL_INHERIT = /^\\s*(initial)|(inherit)\\s*$/;\n\n// separator used between mixin-name and mixin-property-name when producing properties\n// NOTE: plain '-' may cause collisions in user styles\nconst MIXIN_VAR_SEP = '_-_';\n\n/**\n * @typedef {!Object<string, string>}\n */\nlet PropertyEntry; // eslint-disable-line no-unused-vars\n\n/**\n * @typedef {!Object<string, boolean>}\n */\nlet DependantsEntry; // eslint-disable-line no-unused-vars\n\n/** @typedef {{\n * properties: PropertyEntry,\n * dependants: DependantsEntry\n * }}\n */\nlet MixinMapEntry; // eslint-disable-line no-unused-vars\n\n// map of mixin to property names\n// --foo: {border: 2px} -> {properties: {(--foo, ['border'])}, dependants: {'element-name': proto}}\nclass MixinMap {\n constructor() {\n /** @type {!Object<string, !MixinMapEntry>} */\n this._map = {};\n }\n /**\n * @param {string} name\n * @param {!PropertyEntry} props\n */\n set(name, props) {\n name = name.trim();\n this._map[name] = {\n properties: props,\n dependants: {}\n }\n }\n /**\n * @param {string} name\n * @return {MixinMapEntry}\n */\n get(name) {\n name = name.trim();\n return this._map[name] || null;\n }\n}\n\n/**\n * Callback for when an element is marked invalid\n * @type {?function(string)}\n */\nlet invalidCallback = null;\n\n/** @unrestricted */\nclass ApplyShim {\n constructor() {\n /** @type {?string} */\n this._currentElement = null;\n /** @type {HTMLMetaElement} */\n this._measureElement = null;\n this._map = new MixinMap();\n }\n /**\n * return true if `cssText` contains a mixin definition or consumption\n * @param {string} cssText\n * @return {boolean}\n */\n detectMixin(cssText) {\n return detectMixin(cssText);\n }\n /**\n * @param {!HTMLTemplateElement} template\n * @param {string} elementName\n * @return {StyleNode}\n */\n transformTemplate(template, elementName) {\n const style = /** @type {HTMLStyleElement} */(template.content.querySelector('style'));\n /** @type {StyleNode} */\n let ast = null;\n if (style) {\n ast = this.transformStyle(style, elementName);\n }\n return ast;\n }\n /**\n * @param {!HTMLStyleElement} style\n * @param {string} elementName\n * @return {StyleNode}\n */\n transformStyle(style, elementName = '') {\n let ast = rulesForStyle(style);\n this.transformRules(ast, elementName);\n style.textContent = toCssText(ast);\n return ast;\n }\n /**\n * @param {!HTMLStyleElement} style\n * @return {StyleNode}\n */\n transformCustomStyle(style) {\n let ast = rulesForStyle(style);\n forEachRule(ast, (rule) => {\n if (rule['selector'] === ':root') {\n rule['selector'] = 'html';\n }\n this.transformRule(rule);\n })\n style.textContent = toCssText(ast);\n return ast;\n }\n /**\n * @param {StyleNode} rules\n * @param {string} elementName\n */\n transformRules(rules, elementName) {\n this._currentElement = elementName;\n forEachRule(rules, (r) => {\n this.transformRule(r);\n });\n this._currentElement = null;\n }\n /**\n * @param {!StyleNode} rule\n */\n transformRule(rule) {\n rule['cssText'] = this.transformCssText(rule['parsedCssText']);\n // :root was only used for variable assignment in property shim,\n // but generates invalid selectors with real properties.\n // replace with `:host > *`, which serves the same effect\n if (rule['selector'] === ':root') {\n rule['selector'] = ':host > *';\n }\n }\n /**\n * @param {string} cssText\n * @return {string}\n */\n transformCssText(cssText) {\n // produce variables\n cssText = cssText.replace(VAR_ASSIGN, (matchText, propertyName, valueProperty, valueMixin) =>\n this._produceCssProperties(matchText, propertyName, valueProperty, valueMixin));\n // consume mixins\n return this._consumeCssProperties(cssText);\n }\n /**\n * @param {string} property\n * @return {string}\n */\n _getInitialValueForProperty(property) {\n if (!this._measureElement) {\n this._measureElement = /** @type {HTMLMetaElement} */(document.createElement('meta'));\n this._measureElement.setAttribute('apply-shim-measure', '');\n this._measureElement.style.all = 'initial';\n document.head.appendChild(this._measureElement);\n }\n return window.getComputedStyle(this._measureElement).getPropertyValue(property);\n }\n /**\n * replace mixin consumption with variable consumption\n * @param {string} text\n * @return {string}\n */\n _consumeCssProperties(text) {\n /** @type {Array} */\n let m = null;\n // loop over text until all mixins with defintions have been applied\n while((m = MIXIN_MATCH.exec(text))) {\n let matchText = m[0];\n let mixinName = m[1];\n let idx = m.index;\n // collect properties before apply to be \"defaults\" if mixin might override them\n // match includes a \"prefix\", so find the start and end positions of @apply\n let applyPos = idx + matchText.indexOf('@apply');\n let afterApplyPos = idx + matchText.length;\n // find props defined before this @apply\n let textBeforeApply = text.slice(0, applyPos);\n let textAfterApply = text.slice(afterApplyPos);\n let defaults = this._cssTextToMap(textBeforeApply);\n let replacement = this._atApplyToCssProperties(mixinName, defaults);\n // use regex match position to replace mixin, keep linear processing time\n text = `${textBeforeApply}${replacement}${textAfterApply}`;\n // move regex search to _after_ replacement\n MIXIN_MATCH.lastIndex = idx + replacement.length;\n }\n return text;\n }\n /**\n * produce variable consumption at the site of mixin consumption\n * `@apply` --foo; -> for all props (${propname}: var(--foo_-_${propname}, ${fallback[propname]}}))\n * Example:\n * border: var(--foo_-_border); padding: var(--foo_-_padding, 2px)\n *\n * @param {string} mixinName\n * @param {Object} fallbacks\n * @return {string}\n */\n _atApplyToCssProperties(mixinName, fallbacks) {\n mixinName = mixinName.replace(APPLY_NAME_CLEAN, '');\n let vars = [];\n let mixinEntry = this._map.get(mixinName);\n // if we depend on a mixin before it is created\n // make a sentinel entry in the map to add this element as a dependency for when it is defined.\n if (!mixinEntry) {\n this._map.set(mixinName, {});\n mixinEntry = this._map.get(mixinName);\n }\n if (mixinEntry) {\n if (this._currentElement) {\n mixinEntry.dependants[this._currentElement] = true;\n }\n let p, parts, f;\n for (p in mixinEntry.properties) {\n f = fallbacks && fallbacks[p];\n parts = [p, ': var(', mixinName, MIXIN_VAR_SEP, p];\n if (f) {\n parts.push(',', f);\n }\n parts.push(')');\n vars.push(parts.join(''));\n }\n }\n return vars.join('; ');\n }\n\n /**\n * @param {string} property\n * @param {string} value\n * @return {string}\n */\n _replaceInitialOrInherit(property, value) {\n let match = INITIAL_INHERIT.exec(value);\n if (match) {\n if (match[1]) {\n // initial\n // replace `initial` with the concrete initial value for this property\n value = this._getInitialValueForProperty(property);\n } else {\n // inherit\n // with this purposfully illegal value, the variable will be invalid at\n // compute time (https://www.w3.org/TR/css-variables/#invalid-at-computed-value-time)\n // and for inheriting values, will behave similarly\n // we cannot support the same behavior for non inheriting values like 'border'\n value = 'apply-shim-inherit';\n }\n }\n return value;\n }\n\n /**\n * \"parse\" a mixin definition into a map of properties and values\n * cssTextToMap('border: 2px solid black') -> ('border', '2px solid black')\n * @param {string} text\n * @return {!Object<string, string>}\n */\n _cssTextToMap(text) {\n let props = text.split(';');\n let property, value;\n let out = {};\n for (let i = 0, p, sp; i < props.length; i++) {\n p = props[i];\n if (p) {\n sp = p.split(':');\n // ignore lines that aren't definitions like @media\n if (sp.length > 1) {\n property = sp[0].trim();\n // some properties may have ':' in the value, like data urls\n value = this._replaceInitialOrInherit(property, sp.slice(1).join(':'));\n out[property] = value;\n }\n }\n }\n return out;\n }\n\n /**\n * @param {MixinMapEntry} mixinEntry\n */\n _invalidateMixinEntry(mixinEntry) {\n if (!invalidCallback) {\n return;\n }\n for (let elementName in mixinEntry.dependants) {\n if (elementName !== this._currentElement) {\n invalidCallback(elementName);\n }\n }\n }\n\n /**\n * @param {string} matchText\n * @param {string} propertyName\n * @param {?string} valueProperty\n * @param {?string} valueMixin\n * @return {string}\n */\n _produceCssProperties(matchText, propertyName, valueProperty, valueMixin) {\n // handle case where property value is a mixin\n if (valueProperty) {\n // form: --mixin2: var(--mixin1), where --mixin1 is in the map\n processVariableAndFallback(valueProperty, (prefix, value) => {\n if (value && this._map.get(value)) {\n valueMixin = `@apply ${value};`\n }\n });\n }\n if (!valueMixin) {\n return matchText;\n }\n let mixinAsProperties = this._consumeCssProperties(valueMixin);\n let prefix = matchText.slice(0, matchText.indexOf('--'));\n let mixinValues = this._cssTextToMap(mixinAsProperties);\n let combinedProps = mixinValues;\n let mixinEntry = this._map.get(propertyName);\n let oldProps = mixinEntry && mixinEntry.properties;\n if (oldProps) {\n // NOTE: since we use mixin, the map of properties is updated here\n // and this is what we want.\n combinedProps = Object.assign(Object.create(oldProps), mixinValues);\n } else {\n this._map.set(propertyName, combinedProps);\n }\n let out = [];\n let p, v;\n // set variables defined by current mixin\n let needToInvalidate = false;\n for (p in combinedProps) {\n v = mixinValues[p];\n // if property not defined by current mixin, set initial\n if (v === undefined) {\n v = 'initial';\n }\n if (oldProps && !(p in oldProps)) {\n needToInvalidate = true;\n }\n out.push(`${propertyName}${MIXIN_VAR_SEP}${p}: ${v}`);\n }\n if (needToInvalidate) {\n this._invalidateMixinEntry(mixinEntry);\n }\n if (mixinEntry) {\n mixinEntry.properties = combinedProps;\n }\n // because the mixinMap is global, the mixin might conflict with\n // a different scope's simple variable definition:\n // Example:\n // some style somewhere:\n // --mixin1:{ ... }\n // --mixin2: var(--mixin1);\n // some other element:\n // --mixin1: 10px solid red;\n // --foo: var(--mixin1);\n // In this case, we leave the original variable definition in place.\n if (valueProperty) {\n prefix = `${matchText};${prefix}`;\n }\n return `${prefix}${out.join('; ')};`;\n }\n}\n\n/* exports */\nApplyShim.prototype['detectMixin'] = ApplyShim.prototype.detectMixin;\nApplyShim.prototype['transformStyle'] = ApplyShim.prototype.transformStyle;\nApplyShim.prototype['transformCustomStyle'] = ApplyShim.prototype.transformCustomStyle;\nApplyShim.prototype['transformRules'] = ApplyShim.prototype.transformRules;\nApplyShim.prototype['transformRule'] = ApplyShim.prototype.transformRule;\nApplyShim.prototype['transformTemplate'] = ApplyShim.prototype.transformTemplate;\nApplyShim.prototype['_separator'] = MIXIN_VAR_SEP;\nObject.defineProperty(ApplyShim.prototype, 'invalidCallback', {\n /** @return {?function(string)} */\n get() {\n return invalidCallback;\n },\n /** @param {?function(string)} cb */\n set(cb) {\n invalidCallback = cb;\n }\n});\n\nexport default ApplyShim;","/**\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'\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@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 requestAnimationFrame(function() {\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}\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 ApplyShim from '../src/apply-shim.js'\nimport templateMap from '../src/template-map.js'\nimport {getIsExtends, toCssText} from '../src/style-util.js'\nimport * as ApplyShimUtils from '../src/apply-shim-utils.js'\nimport documentWait from '../src/document-wait.js'\nimport {getComputedStyleValue, updateNativeProperties} from '../src/common-utils.js'\nimport {CustomStyleInterfaceInterface} from '../src/custom-style-interface.js' // eslint-disable-line no-unused-vars\nimport {nativeCssVariables, nativeShadow} from '../src/style-settings.js'\n\n/** @const {ApplyShim} */\nconst applyShim = new ApplyShim();\n\nclass ApplyShimInterface {\n constructor() {\n /** @type {?CustomStyleInterfaceInterface} */\n this.customStyleInterface = null;\n documentWait(() => {\n this.ensure();\n });\n applyShim['invalidCallback'] = ApplyShimUtils.invalidate;\n }\n ensure() {\n if (this.customStyleInterface) {\n return;\n }\n this.customStyleInterface = window.ShadyCSS.CustomStyleInterface;\n if (this.customStyleInterface) {\n this.customStyleInterface['transformCallback'] = (style) => {\n applyShim.transformCustomStyle(style);\n };\n this.customStyleInterface['validateCallback'] = () => {\n requestAnimationFrame(() => {\n if (this.customStyleInterface['enqueued']) {\n this.flushCustomStyles();\n }\n });\n }\n }\n }\n /**\n * @param {!HTMLTemplateElement} template\n * @param {string} elementName\n */\n prepareTemplate(template, elementName) {\n this.ensure();\n templateMap[elementName] = template;\n let ast = applyShim.transformTemplate(template, elementName);\n // save original style ast to use for revalidating instances\n template['_styleAst'] = ast;\n }\n flushCustomStyles() {\n this.ensure();\n if (!this.customStyleInterface) {\n return;\n }\n let styles = this.customStyleInterface['processStyles']();\n if (!this.customStyleInterface['enqueued']) {\n return;\n }\n for (let i = 0; i < styles.length; i++ ) {\n let cs = styles[i];\n let style = this.customStyleInterface['getStyleForCustomStyle'](cs);\n if (style) {\n applyShim.transformCustomStyle(style);\n }\n }\n this.customStyleInterface['enqueued'] = false;\n }\n /**\n * @param {HTMLElement} element\n * @param {Object=} properties\n */\n styleSubtree(element, properties) {\n this.ensure();\n if (properties) {\n updateNativeProperties(element, properties);\n }\n if (element.shadowRoot) {\n this.styleElement(element);\n let shadowChildren = element.shadowRoot.children || element.shadowRoot.childNodes;\n for (let i = 0; i < shadowChildren.length; i++) {\n this.styleSubtree(/** @type {HTMLElement} */(shadowChildren[i]));\n }\n } else {\n let children = element.children || element.childNodes;\n for (let i = 0; i < children.length; i++) {\n this.styleSubtree(/** @type {HTMLElement} */(children[i]));\n }\n }\n }\n /**\n * @param {HTMLElement} element\n */\n styleElement(element) {\n this.ensure();\n let {is} = getIsExtends(element);\n let template = templateMap[is];\n if (template && !ApplyShimUtils.templateIsValid(template)) {\n // only revalidate template once\n if (!ApplyShimUtils.templateIsValidating(template)) {\n this.prepareTemplate(template, is);\n ApplyShimUtils.startValidatingTemplate(template);\n }\n // update this element instance\n let root = element.shadowRoot;\n if (root) {\n let style = /** @type {HTMLStyleElement} */(root.querySelector('style'));\n if (style) {\n // reuse the template's style ast, it has all the original css text\n style['__cssRules'] = template['_styleAst'];\n style.textContent = toCssText(template['_styleAst'])\n }\n }\n }\n }\n /**\n * @param {Object=} properties\n */\n styleDocument(properties) {\n this.ensure();\n this.styleSubtree(document.body, properties);\n }\n}\n\nif (!window.ShadyCSS || !window.ShadyCSS.ScopingShim) {\n const applyShimInterface = new ApplyShimInterface();\n let CustomStyleInterface = window.ShadyCSS && window.ShadyCSS.CustomStyleInterface;\n\n window.ShadyCSS = {\n /**\n * @param {!HTMLTemplateElement} template\n * @param {string} elementName\n * @param {string=} elementExtends\n */\n prepareTemplate(template, elementName, elementExtends) { // eslint-disable-line no-unused-vars\n applyShimInterface.flushCustomStyles();\n applyShimInterface.prepareTemplate(template, elementName)\n },\n\n /**\n * @param {!HTMLElement} element\n * @param {Object=} properties\n */\n styleSubtree(element, properties) {\n applyShimInterface.flushCustomStyles();\n applyShimInterface.styleSubtree(element, properties);\n },\n\n /**\n * @param {!HTMLElement} element\n */\n styleElement(element) {\n applyShimInterface.flushCustomStyles();\n applyShimInterface.styleElement(element);\n },\n\n /**\n * @param {Object=} properties\n */\n styleDocument(properties) {\n applyShimInterface.flushCustomStyles();\n applyShimInterface.styleDocument(properties);\n },\n\n /**\n * @param {Element} element\n * @param {string} property\n * @return {string}\n */\n getComputedStyleValue(element, property) {\n return getComputedStyleValue(element, property);\n },\n nativeCss: nativeCssVariables,\n nativeShadow: nativeShadow\n };\n\n if (CustomStyleInterface) {\n window.ShadyCSS.CustomStyleInterface = CustomStyleInterface;\n }\n}\n\nwindow.ShadyCSS.ApplyShim = applyShim;"]}

Powered by Google App Engine
This is Rietveld 408576698