{"version":3,"sources":["src/template-map.js","src/css-parse.js","src/apply-shim-utils.js","src/style-settings.js","src/common-regex.js","src/unscoped-style-handler.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","text","replace","RX$$module$src$css_parse.comments","RX$$module$src$css_parse.port","parseCss","root","length","n","i","l","OPEN_BRACE","p","previous","push","CLOSE_BRACE","node","t","substring","trim","ss","_expandUnicodeEscapes","RX$$module$src$css_parse.multipleSpaces","lastIndexOf","s","indexOf","AT_START","MEDIA_START","types$$module$src$css_parse.MEDIA_RULE","match","RX$$module$src$css_parse.keyframesRule","types$$module$src$css_parse.KEYFRAMES_RULE","split","pop","VAR_START","types$$module$src$css_parse.MIXIN_RULE","types$$module$src$css_parse.STYLE_RULE","r$","r","code","repeat","stringify","preserveProperties","cssText","rules","RX$$module$src$css_parse.customProp","RX$$module$src$css_parse.mixinProp","RX$$module$src$css_parse.mixinApply","RX$$module$src$css_parse.varApply","STYLE_RULE","KEYFRAMES_RULE","MEDIA_RULE","MIXIN_RULE","comments","port","customProp","mixinProp","mixinApply","varApply","keyframesRule","multipleSpaces","promise","Promise","resolve","invalidate","elementName","template","templateIsValid","startValidatingTemplate","_validating","then","nativeShadow","window","nativeCssVariables","calcCssVariables","settings","navigator","userAgent","CSS","supports","ShadyCSS","undefined","nativeCss","module$src$style_settings.nativeCssVariables","VAR_ASSIGN","MIXIN_MATCH","MEDIA_MATCH","styleTextSet","Set","toCssText","rulesForStyle","style","textContent","forEachRule","styleRuleCallback","keyframesRuleCallback","onlyActiveRules","skipRules","type","matchMedia","matches","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","_gatheredStyle","styleTextParts","styles","content","querySelectorAll","hasAttribute","scopingAttribute","add","newStyle","cloneNode","document","head","appendChild","parentNode","removeChild","styleText","join","createElement","insertBefore","firstChild","transformStyle","ast","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","replacement","property","out","sp","_replaceInitialOrInherit","setAttribute","all","getComputedStyle","getPropertyValue","_invalidateMixinEntry","mixinAsProperties","combinedProps","mixinValues","oldProps","Object","assign","create","needToInvalidate","v","prototype","defineProperty","cb","readyPromise","whenReady","resolveFn","documentWait","requestAnimationFrame","readyState","addEventListener","applyShim","ApplyShimInterface","customStyleInterface","ensure","CustomStyleInterface","flushCustomStyles","prepareTemplate","cs","styleSubtree","element","removeProperty","setProperty","shadowRoot","styleElement","shadowChildren","children","childNodes","localName","is","getAttribute","querySelector","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}\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} */\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} 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}\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\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 // Edge 15: custom properties used in ::before and ::after will also be used in the parent element\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/12414257/\n nativeCssVariables = nativeShadow || Boolean(!navigator.userAgent.match(/AppleWebKit\\/601|Edge\\/15/) &&\n window.CSS && CSS.supports && CSS.supports('box-shadow', '0 0 0 var(--foo)'));\n }\n}\n\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\nexport const VAR_ASSIGN = /(?:^|[;\\s{]\\s*)(--[\\w-]*?)\\s*:\\s*(?:((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};{])+)|\\{([^}]*)\\}(?:(?=[;\\s}])|$))/gi;\nexport const MIXIN_MATCH = /(?:^|\\W+)@apply\\s*\\(?([^);\\n]*)\\)?/gi;\nexport const VAR_CONSUMED = /(--[\\w-]+)\\s*([:,;)]|$)/gi;\nexport const ANIMATION_MATCH = /(animation\\s*:)|(animation-name\\s*:)/;\nexport const MEDIA_MATCH = /@media\\s(.*)/;\nexport const IS_VAR = /^--/;\nexport const BRACKETED = /\\{[^}]*\\}/g;\nexport const HOST_PREFIX = '(?:^|[^.#[:])';\nexport const HOST_SUFFIX = '($|[.:[\\\\s>+~])';\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\n/** @type {!Set} */\nconst styleTextSet = new Set();\n\nexport const scopingAttribute = 'shady-unscoped';\n\n/**\n * Add a specifically-marked style to the document directly, and only one copy of that style.\n *\n * @param {!HTMLStyleElement} style\n * @return {undefined}\n */\nexport function processUnscopedStyle(style) {\n const text = style.textContent;\n if (!styleTextSet.has(text)) {\n styleTextSet.add(text);\n const newStyle = style.cloneNode(true);\n document.head.appendChild(newStyle);\n }\n}\n\n/**\n * Check if a style is supposed to be unscoped\n * @param {!HTMLStyleElement} style\n * @return {boolean} true if the style has the unscoping attribute\n */\nexport function isUnscopedStyle(style) {\n return style.hasAttribute(scopingAttribute);\n}","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\nimport {nativeShadow, nativeCssVariables} from './style-settings.js';\nimport {parse, stringify, types, StyleNode} from './css-parse.js'; // eslint-disable-line no-unused-vars\nimport {MEDIA_MATCH} from './common-regex.js';\nimport {processUnscopedStyle, isUnscopedStyle} from './unscoped-style-handler.js';\n\n/**\n * @param {string|StyleNode} rules\n * @param {function(StyleNode)=} callback\n * @return {string}\n */\nexport function toCssText (rules, callback) {\n if (!rules) {\n return '';\n }\n if (typeof rules === 'string') {\n rules = parse(rules);\n }\n if (callback) {\n forEachRule(rules, callback);\n }\n return stringify(rules, nativeCssVariables);\n}\n\n/**\n * @param {HTMLStyleElement} style\n * @return {StyleNode}\n */\nexport function rulesForStyle(style) {\n if (!style['__cssRules'] && style.textContent) {\n style['__cssRules'] = parse(style.textContent);\n }\n return style['__cssRules'] || null;\n}\n\n// Tests if a rule is a keyframes selector, which looks almost exactly\n// like a normal selector but is not (it has nothing to do with scoping\n// for example).\n/**\n * @param {StyleNode} rule\n * @return {boolean}\n */\nexport function isKeyframesSelector(rule) {\n return Boolean(rule['parent']) &&\n rule['parent']['type'] === types.KEYFRAMES_RULE;\n}\n\n/**\n * @param {StyleNode} node\n * @param {Function=} styleRuleCallback\n * @param {Function=} keyframesRuleCallback\n * @param {boolean=} onlyActiveRules\n */\nexport function forEachRule(node, styleRuleCallback, keyframesRuleCallback, onlyActiveRules) {\n if (!node) {\n return;\n }\n let skipRules = false;\n let type = node['type'];\n if (onlyActiveRules) {\n if (type === types.MEDIA_RULE) {\n let matchMedia = node['selector'].match(MEDIA_MATCH);\n if (matchMedia) {\n // if rule is a non matching @media rule, skip subrules\n if (!window.matchMedia(matchMedia[1]).matches) {\n skipRules = true;\n }\n }\n }\n }\n if (type === types.STYLE_RULE) {\n styleRuleCallback(node);\n } else if (keyframesRuleCallback &&\n type === types.KEYFRAMES_RULE) {\n keyframesRuleCallback(node);\n } else if (type === types.MIXIN_RULE) {\n skipRules = true;\n }\n let r$ = node['rules'];\n if (r$ && !skipRules) {\n for (let i=0, l=r$.length, r; (i`\n */\n if (localName) {\n if (localName.indexOf('-') > -1) {\n is = localName;\n } else {\n typeExtension = localName;\n is = (element.getAttribute && element.getAttribute('is')) || '';\n }\n } else {\n is = /** @type {?} */(element).is;\n typeExtension = /** @type {?} */(element).extends;\n }\n return {is, typeExtension};\n}\n\n/**\n * @param {Element|DocumentFragment} element\n * @return {string}\n */\nexport function gatherStyleText(element) {\n /** @type {!Array} */\n const styleTextParts = [];\n const styles = /** @type {!NodeList} */(element.querySelectorAll('style'));\n for (let i = 0; i < styles.length; i++) {\n const style = styles[i];\n if (isUnscopedStyle(style)) {\n if (!nativeShadow) {\n processUnscopedStyle(style);\n style.parentNode.removeChild(style);\n }\n } else {\n styleTextParts.push(style.textContent);\n style.parentNode.removeChild(style);\n }\n }\n return styleTextParts.join('').trim();\n}","/**\n@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, gatherStyleText} 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}\n */\nlet PropertyEntry; // eslint-disable-line no-unused-vars\n\n/**\n * @typedef {!Object}\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} */\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 /**\n * Gather styles into one style for easier processing\n * @param {!HTMLTemplateElement} template\n * @return {HTMLStyleElement}\n */\n gatherStyles(template) {\n const styleText = gatherStyleText(template.content);\n if (styleText) {\n const style = /** @type {!HTMLStyleElement} */(document.createElement('style'));\n style.textContent = styleText;\n template.content.insertBefore(style, template.content.firstChild);\n return style;\n }\n return null;\n }\n /**\n * @param {!HTMLTemplateElement} template\n * @param {string} elementName\n * @return {StyleNode}\n */\n transformTemplate(template, elementName) {\n if (template._gatheredStyle === undefined) {\n template._gatheredStyle = this.gatherStyles(template);\n }\n /** @type {HTMLStyleElement} */\n const style = template._gatheredStyle;\n return style ? this.transformStyle(style, elementName) : null;\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}\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.js';\n\n/**\n * @param {Element} element\n * @param {Object=} properties\n */\nexport function updateNativeProperties(element, properties) {\n // remove previous properties\n for (let p in properties) {\n // NOTE: for bc with shim, don't apply null values.\n if (p === null) {\n element.style.removeProperty(p);\n } else {\n element.style.setProperty(p, properties[p]);\n }\n }\n}\n\n/**\n * @param {Element} element\n * @param {string} property\n * @return {string}\n */\nexport function getComputedStyleValue(element, property) {\n /**\n * @const {string}\n */\n const value = window.getComputedStyle(element).getPropertyValue(property);\n if (!value) {\n return '';\n } else {\n return value.trim();\n }\n}\n\n/**\n * return true if `cssText` contains a mixin definition or consumption\n * @param {string} cssText\n * @return {boolean}\n */\nexport function detectMixin(cssText) {\n const has = MIXIN_MATCH.test(cssText) || VAR_ASSIGN.test(cssText);\n // reset state of the regexes\n MIXIN_MATCH.lastIndex = 0;\n VAR_ASSIGN.lastIndex = 0;\n return has;\n}\n","/**\n@license\nCopyright (c) 2017 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt\nThe complete set of authors may be found at http://polymer.github.io/AUTHORS.txt\nThe complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt\nCode distributed by Google as part of the polymer project is also\nsubject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt\n*/\n\n'use strict';\n\n/** @type {Promise} */\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;"]}