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

Unified Diff: appengine/config_service/ui/bower_components/shadycss/scoping-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/scoping-shim.min.js.map
diff --git a/appengine/config_service/ui/bower_components/shadycss/scoping-shim.min.js.map b/appengine/config_service/ui/bower_components/shadycss/scoping-shim.min.js.map
new file mode 100644
index 0000000000000000000000000000000000000000..dd201ef302142c414949eaf0b87f74ba3a2e5f40
--- /dev/null
+++ b/appengine/config_service/ui/bower_components/shadycss/scoping-shim.min.js.map
@@ -0,0 +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","templateIsValid$$module$src$apply_shim_utils","templateIsValid","startValidatingTemplate$$module$src$apply_shim_utils","startValidatingTemplate","_validating","then","VAR_ASSIGN","MIXIN_MATCH","VAR_CONSUMED","ANIMATION_MATCH","MEDIA_MATCH","BRACKETED","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","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","level","inner","end","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","requestAnimationFrame","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$$module$src$document_watcher","handler","mxns","x","mxn","documentElement","addedNodes","getRootNode","classes","Array","from","hasAttribute","idx","ownerDocument","currentScope","DOCUMENT_FRAGMENT_NODE","newScope","observer","MutationObserver","observe","childList","subtree","delayedStart","body","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","has","_cssBuild","ownPropertyNames","shadowroot","_style","_ownPropertyNames","_ensureCustomStyleInterface","CustomStyleInterface","transformCustomStyleForDocument","flushCustomStyles","_ensureApplyShim","ApplyShim","customStyles","_revalidateCustomStyleApplyShim","_updateProperties","_applyCustomStyles","styleDocument","styleElement","overrideProps","_isRootOwner","removeProperty","setProperty","shadowRoot","list","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"],"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.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'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 {StyleNode} from './css-parse.js' // eslint-disable-line no-unused-vars\nimport * as StyleUtil from './style-util.js'\nimport {nativeShadow} from './style-settings.js'\n\n/* Transforms ShadowDOM styling into ShadyDOM styling\n\n* scoping:\n\n * elements in scope get scoping selector class=\"x-foo-scope\"\n * selectors re-written as follows:\n\n div button -> div.x-foo-scope button.x-foo-scope\n\n* :host -> scopeName\n\n* :host(...) -> scopeName...\n\n* ::slotted(...) -> scopeName > ...\n\n* ...:dir(ltr|rtl) -> [dir=\"ltr|rtl\"] ..., ...[dir=\"ltr|rtl\"]\n\n* :host(:dir[rtl]) -> scopeName:dir(rtl) -> [dir=\"rtl\"] scopeName, scopeName[dir=\"rtl\"]\n\n*/\nconst SCOPE_NAME = 'style-scope';\n\nclass StyleTransformer {\n get SCOPE_NAME() {\n return SCOPE_NAME;\n }\n // 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.js'\nimport StyleTransformer from './style-transformer.js'\nimport {getIsExtends} from './style-util.js'\n\nexport let flush = function() {};\n\n/**\n * @param {HTMLElement} element\n * @return {!Array<string>}\n */\nfunction getClasses(element) {\n let classes = [];\n if (element.classList) {\n classes = Array.from(element.classList);\n } else if (element instanceof window['SVGElement'] && element.hasAttribute('class')) {\n classes = element.getAttribute('class').split(/\\s+/);\n }\n return classes;\n}\n\n/**\n * @param {HTMLElement} element\n * @return {string}\n */\nfunction getCurrentScope(element) {\n let classes = getClasses(element);\n let idx = classes.indexOf(StyleTransformer.SCOPE_NAME);\n if (idx > -1) {\n return classes[idx + 1];\n }\n return '';\n}\n\n/**\n * @param {Array<MutationRecord|null>|null} mxns\n */\nfunction handler(mxns) {\n for (let x=0; x < mxns.length; x++) {\n let mxn = mxns[x];\n if (mxn.target === document.documentElement ||\n mxn.target === document.head) {\n continue;\n }\n for (let i=0; i < mxn.addedNodes.length; i++) {\n let n = mxn.addedNodes[i];\n if (n.nodeType !== Node.ELEMENT_NODE) {\n continue;\n }\n n = /** @type {HTMLElement} */(n); // eslint-disable-line no-self-assign\n let root = n.getRootNode();\n let currentScope = getCurrentScope(n);\n // node was scoped, but now is in document\n if (currentScope && root === n.ownerDocument) {\n StyleTransformer.dom(n, currentScope, true);\n } else if (root.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n let newScope;\n let host = /** @type {ShadowRoot} */(root).host;\n // element may no longer be in a shadowroot\n if (!host) {\n continue;\n }\n newScope = getIsExtends(host).is;\n if (currentScope === newScope) {\n continue;\n }\n if (currentScope) {\n StyleTransformer.dom(n, currentScope, true);\n }\n StyleTransformer.dom(n, newScope);\n }\n }\n }\n}\n\nif (!nativeShadow) {\n let observer = new MutationObserver(handler);\n let start = (node) => {\n observer.observe(node, {childList: true, subtree: true});\n }\n let nativeCustomElements = (window['customElements'] &&\n !window['customElements']['polyfillWrapFlushCallback']);\n // need to start immediately with native custom elements\n // TODO(dfreedm): with polyfilled HTMLImports and native custom elements\n // excessive mutations may be observed; this can be optimized via cooperation\n // with the HTMLImports polyfill.\n if (nativeCustomElements) {\n start(document);\n } else {\n let delayedStart = () => {\n start(document.body);\n }\n // use polyfill timing if it's available\n if (window['HTMLImports']) {\n window['HTMLImports']['whenReady'](delayedStart);\n // otherwise push beyond native imports being ready\n // which requires RAF + readystate interactive.\n } else {\n requestAnimationFrame(function() {\n if (document.readyState === 'loading') {\n let listener = function() {\n delayedStart();\n document.removeEventListener('readystatechange', listener);\n }\n document.addEventListener('readystatechange', listener);\n } else {\n delayedStart();\n }\n });\n }\n }\n\n flush = function() {\n handler(observer.takeRecords());\n }\n}\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {StyleNode} from './css-parse.js' // eslint-disable-line no-unused-vars\n\n/** @const {string} */\nconst infoKey = '__styleInfo';\n\nexport default class StyleInfo {\n /**\n * @param {Element} node\n * @return {StyleInfo}\n */\n static get(node) {\n if (node) {\n return node[infoKey];\n } else {\n return null;\n }\n }\n /**\n * @param {!Element} node\n * @param {StyleInfo} styleInfo\n * @return {StyleInfo}\n */\n static set(node, styleInfo) {\n node[infoKey] = styleInfo;\n return styleInfo;\n }\n /**\n * @param {StyleNode} ast\n * @param {Node=} placeholder\n * @param {Array<string>=} ownStylePropertyNames\n * @param {string=} elementName\n * @param {string=} typeExtension\n * @param {string=} cssBuild\n */\n constructor(ast, placeholder, ownStylePropertyNames, elementName, typeExtension, cssBuild) {\n /** @type {StyleNode} */\n this.styleRules = ast || null;\n /** @type {Node} */\n this.placeholder = placeholder || null;\n /** @type {!Array<string>} */\n this.ownStylePropertyNames = ownStylePropertyNames || [];\n /** @type {Array<Object>} */\n this.overrideStyleProperties = null;\n /** @type {string} */\n this.elementName = elementName || '';\n /** @type {string} */\n this.cssBuild = cssBuild || '';\n /** @type {string} */\n this.typeExtension = typeExtension || '';\n /** @type {Object<string, string>} */\n this.styleProperties = null;\n /** @type {?string} */\n this.scopeSelector = null;\n /** @type {HTMLStyleElement} */\n this.customStyle = null;\n }\n _getStyleRules() {\n return this.styleRules;\n }\n}\n\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.js' // eslint-disable-line no-unused-vars\nimport {nativeShadow} from './style-settings.js'\nimport StyleTransformer from './style-transformer.js'\nimport * as StyleUtil from './style-util.js'\nimport * as RX from './common-regex.js'\nimport StyleInfo from './style-info.js'\n\n// TODO: dedupe with shady\n/**\n * @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 if (IS_IE && cssText.indexOf('@media') > -1) {\n // @media rules may be stale in IE 10 and 11\n // refresh the text content of the style to revalidate them.\n style.textContent = cssText;\n }\n StyleUtil.applyStyle(style, null, styleInfo.placeholder);\n }\n }\n // ensure this style is our custom style and increment its use count.\n if (style) {\n style['_useCount'] = style['_useCount'] || 0;\n // increment use count if we changed styles\n if (styleInfo.customStyle != style) {\n style['_useCount']++;\n }\n styleInfo.customStyle = style;\n }\n return style;\n }\n\n /**\n * @param {Element} style\n * @param {Object} properties\n */\n applyCustomStyle(style, properties) {\n let rules = StyleUtil.rulesForStyle(/** @type {HTMLStyleElement} */(style));\n let self = this;\n style.textContent = StyleUtil.toCssText(rules, function(/** StyleNode */rule) {\n let css = rule['cssText'] = rule['parsedCssText'];\n if (rule.propertyInfo && rule.propertyInfo.cssText) {\n // remove property assignments\n // so next function isn't confused\n // NOTE: we have 3 categories of css:\n // (1) normal properties,\n // (2) custom property assignments (--foo: red;),\n // (3) custom property usage: border: var(--foo); @apply(--foo);\n // In elements, 1 and 3 are separated for efficiency; here they\n // are not and this makes this case unique.\n css = removeCustomPropAssignment(/** @type {string} */(css));\n // replace with reified properties, scenario is same as mixin\n rule['cssText'] = self.valueForProperties(css, properties);\n }\n });\n }\n}\n\n/**\n * @param {number} n\n * @param {Array<number>} bits\n */\nfunction addToBitMask(n, bits) {\n let o = parseInt(n / 32, 10);\n let v = 1 << (n % 32);\n bits[o] = (bits[o] || 0) | v;\n}\n\nexport default new StyleProperties();","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {applyStylePlaceHolder} from './style-util.js'\nimport {nativeShadow} from './style-settings.js'\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.js'\nimport {nativeShadow, nativeCssVariables} from './style-settings.js'\nimport StyleTransformer from './style-transformer.js'\nimport * as StyleUtil from './style-util.js'\nimport StyleProperties from './style-properties.js'\nimport placeholderMap from './style-placeholder.js'\nimport StyleInfo from './style-info.js'\nimport StyleCache from './style-cache.js'\nimport {flush as watcherFlush} from './document-watcher.js'\nimport templateMap from './template-map.js'\nimport * as ApplyShimUtils from './apply-shim-utils.js'\nimport documentWait from './document-wait.js'\nimport {updateNativeProperties, detectMixin} from './common-utils.js'\nimport {CustomStyleInterfaceInterface} from './custom-style-interface.js' //eslint-disable-line no-unused-vars\n\n/**\n * @const {StyleCache}\n */\nconst styleCache = new StyleCache();\n\nexport default class ScopingShim {\n constructor() {\n this._scopeCounter = {};\n this._documentOwner = 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 = detectMixin(cssText)\n let ast = parse(cssText);\n // only run the applyshim transforms if there is a mixin involved\n if (hasMixins && nativeCssVariables && this._applyShim) {\n this._applyShim['transformRules'](ast, elementName);\n }\n template['_styleAst'] = ast;\n 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 && window.ShadyCSS.ApplyShim) {\n this._applyShim = window.ShadyCSS.ApplyShim;\n this._applyShim['invalidCallback'] = ApplyShimUtils.invalidate;\n }\n }\n _ensureCustomStyleInterface() {\n if (this._customStyleInterface) {\n return;\n } else if (window.ShadyCSS && window.ShadyCSS.CustomStyleInterface) {\n this._customStyleInterface = /** @type {!CustomStyleInterfaceInterface} */(window.ShadyCSS.CustomStyleInterface);\n /** @type {function(!HTMLStyleElement)} */\n this._customStyleInterface['transformCallback'] = (style) => {this.transformCustomStyleForDocument(style)};\n this._customStyleInterface['validateCallback'] = () => {\n requestAnimationFrame(() => {\n if (this._customStyleInterface['enqueued'] || this._elementsHaveApplied) {\n this.flushCustomStyles();\n }\n })\n };\n }\n }\n _ensure() {\n this._ensureApplyShim();\n this._ensureCustomStyleInterface();\n }\n /**\n * Flush and apply custom styles to document\n */\n flushCustomStyles() {\n this._ensure();\n if (!this._customStyleInterface) {\n return;\n }\n let customStyles = this._customStyleInterface['processStyles']();\n // early return if custom-styles don't need validation\n if (!this._customStyleInterface['enqueued']) {\n return;\n }\n 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 && 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 && this._applyShim['transformRule'](rule);\n }\n });\n if (nativeCssVariables) {\n style.textContent = StyleUtil.toCssText(ast);\n } else {\n this._documentOwnerStyleInfo.styleRules.rules.push(ast);\n }\n }\n _revalidateApplyShim(style) {\n if (nativeCssVariables && this._applyShim) {\n let ast = StyleUtil.rulesForStyle(style);\n this._ensure();\n this._applyShim['transformRules'](ast);\n style.textContent = StyleUtil.toCssText(ast);\n }\n }\n getComputedStyleValue(element, property) {\n let value;\n if (!nativeCssVariables) {\n // element is either a style host, or an ancestor of a style host\n let styleInfo = StyleInfo.get(element) || StyleInfo.get(this._styleOwnerForNode(element));\n value = styleInfo.styleProperties[property];\n }\n // fall back to the property value from the computed styling\n value = value || window.getComputedStyle(element).getPropertyValue(property);\n // trim whitespace that can come after the `:` in css\n // example: padding: 2px -> \" 2px\"\n return value ? value.trim() : '';\n }\n // given an element and a classString, replaces\n // the element's class with the provided classString and adds\n // any necessary ShadyCSS static and property based scoping selectors\n setElementClass(element, classString) {\n let root = 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\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\nimport ScopingShim from '../src/scoping-shim.js'\nimport {nativeCssVariables, nativeShadow} from '../src/style-settings.js'\n\n/** @const {ScopingShim} */\nconst scopingShim = new ScopingShim();\n\nlet ApplyShim, CustomStyleInterface;\n\nif (window['ShadyCSS']) {\n ApplyShim = window['ShadyCSS']['ApplyShim'];\n CustomStyleInterface = window['ShadyCSS']['CustomStyleInterface'];\n}\n\nwindow.ShadyCSS = {\n ScopingShim: scopingShim,\n /**\n * @param {!HTMLTemplateElement} template\n * @param {string} elementName\n * @param {string=} elementExtends\n */\n prepareTemplate(template, elementName, elementExtends) {\n scopingShim.flushCustomStyles();\n scopingShim.prepareTemplate(template, elementName, elementExtends)\n },\n\n /**\n * @param {!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}"]}

Powered by Google App Engine
This is Rietveld 408576698