Icard/angular-clarity-master(work.../node_modules/css-vars-ponyfill/dist/css-vars-ponyfill.js.map

1 line
111 KiB
Plaintext

{"version":3,"file":"css-vars-ponyfill.js","sources":["../node_modules/get-css-data/dist/get-css-data.esm.js","../node_modules/balanced-match/index.js","../src/parse-css.js","../src/parse-vars.js","../src/stringify-css.js","../src/walk-css.js","../src/transform-css.js","../src/index.js"],"sourcesContent":["/*!\n * get-css-data\n * v2.1.0\n * https://github.com/jhildenbiddle/get-css-data\n * (c) 2018-2022 John Hildenbiddle <http://hildenbiddle.com>\n * MIT license\n */\nfunction getUrls(urls) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var settings = {\n mimeType: options.mimeType || null,\n onBeforeSend: options.onBeforeSend || Function.prototype,\n onSuccess: options.onSuccess || Function.prototype,\n onError: options.onError || Function.prototype,\n onComplete: options.onComplete || Function.prototype\n };\n var urlArray = Array.isArray(urls) ? urls : [ urls ];\n var urlQueue = Array.apply(null, Array(urlArray.length)).map((function(x) {\n return null;\n }));\n function isValidCss(text) {\n var isString = typeof text === \"string\";\n var isHTML = isString && text.trim().charAt(0) === \"<\";\n return isString && !isHTML;\n }\n function onError(xhr, urlIndex) {\n settings.onError(xhr, urlArray[urlIndex], urlIndex);\n }\n function onSuccess(responseText, urlIndex) {\n var returnVal = settings.onSuccess(responseText, urlArray[urlIndex], urlIndex);\n responseText = returnVal === false ? \"\" : returnVal || responseText;\n urlQueue[urlIndex] = responseText;\n if (urlQueue.indexOf(null) === -1) {\n settings.onComplete(urlQueue);\n }\n }\n var parser = document.createElement(\"a\");\n urlArray.forEach((function(url, i) {\n parser.setAttribute(\"href\", url);\n parser.href = String(parser.href);\n var isIElte9 = Boolean(document.all && !window.atob);\n var isIElte9CORS = isIElte9 && parser.host.split(\":\")[0] !== location.host.split(\":\")[0];\n if (isIElte9CORS) {\n var isSameProtocol = parser.protocol === location.protocol;\n if (isSameProtocol) {\n var xdr = new XDomainRequest;\n xdr.open(\"GET\", url);\n xdr.timeout = 0;\n xdr.onprogress = Function.prototype;\n xdr.ontimeout = Function.prototype;\n xdr.onload = function() {\n var text = xdr.responseText;\n if (isValidCss(text)) {\n onSuccess(text, i);\n } else {\n onError(xdr, i);\n }\n };\n xdr.onerror = function(err) {\n onError(xdr, i);\n };\n setTimeout((function() {\n xdr.send();\n }), 0);\n } else {\n console.warn(\"Internet Explorer 9 Cross-Origin (CORS) requests must use the same protocol (\".concat(url, \")\"));\n onError(null, i);\n }\n } else {\n var xhr = new XMLHttpRequest;\n xhr.open(\"GET\", url);\n if (settings.mimeType && xhr.overrideMimeType) {\n xhr.overrideMimeType(settings.mimeType);\n }\n settings.onBeforeSend(xhr, url, i);\n xhr.onreadystatechange = function() {\n if (xhr.readyState === 4) {\n var text = xhr.responseText;\n if (xhr.status < 400 && isValidCss(text)) {\n onSuccess(text, i);\n } else if (xhr.status === 0 && isValidCss(text)) {\n onSuccess(text, i);\n } else {\n onError(xhr, i);\n }\n }\n };\n xhr.send();\n }\n }));\n}\n\n/**\n * Gets CSS data from <style> and <link> nodes (including @imports), then\n * returns data in order processed by DOM. Allows specifying nodes to\n * include/exclude and filtering CSS data using RegEx.\n *\n * @preserve\n * @param {object} [options] The options object\n * @param {object} [options.rootElement=document] Root element to traverse for\n * <link> and <style> nodes.\n * @param {string} [options.include] CSS selector matching <link> and <style>\n * nodes to include\n * @param {string} [options.exclude] CSS selector matching <link> and <style>\n * nodes to exclude\n * @param {object} [options.filter] Regular expression used to filter node CSS\n * data. Each block of CSS data is tested against the filter,\n * and only matching data is included.\n * @param {boolean} [options.skipDisabled=true] Determines if disabled\n * stylesheets will be skipped while collecting CSS data.\n * @param {boolean} [options.useCSSOM=false] Determines if CSS data will be\n * collected from a stylesheet's runtime values instead of its\n * text content. This is required to get accurate CSS data\n * when a stylesheet has been modified using the deleteRule()\n * or insertRule() methods because these modifications will\n * not be reflected in the stylesheet's text content.\n * @param {function} [options.onBeforeSend] Callback before XHR is sent. Passes\n * 1) the XHR object, 2) source node reference, and 3) the\n * source URL as arguments.\n * @param {function} [options.onSuccess] Callback on each CSS node read. Passes\n * 1) CSS text, 2) source node reference, and 3) the source\n * URL as arguments.\n * @param {function} [options.onError] Callback on each error. Passes 1) the XHR\n * object for inspection, 2) soure node reference, and 3) the\n * source URL that failed (either a <link> href or an @import)\n * as arguments\n * @param {function} [options.onComplete] Callback after all nodes have been\n * processed. Passes 1) concatenated CSS text, 2) an array of\n * CSS text in DOM order, and 3) an array of nodes in DOM\n * order as arguments.\n *\n * @example\n *\n * getCssData({\n * rootElement : document,\n * include : 'style,link[rel=\"stylesheet\"]',\n * exclude : '[href=\"skip.css\"]',\n * filter : /red/,\n * skipDisabled: true,\n * useCSSOM : false,\n * onBeforeSend(xhr, node, url) {\n * // ...\n * }\n * onSuccess(cssText, node, url) {\n * // ...\n * }\n * onError(xhr, node, url) {\n * // ...\n * },\n * onComplete(cssText, cssArray, nodeArray) {\n * // ...\n * }\n * });\n */ function getCssData(options) {\n var regex = {\n cssComments: /\\/\\*[\\s\\S]+?\\*\\//g,\n cssImports: /(?:@import\\s*)(?:url\\(\\s*)?(?:['\"])([^'\"]*)(?:['\"])(?:\\s*\\))?(?:[^;]*;)/g\n };\n var settings = {\n rootElement: options.rootElement || document,\n include: options.include || 'style,link[rel=\"stylesheet\"]',\n exclude: options.exclude || null,\n filter: options.filter || null,\n skipDisabled: options.skipDisabled !== false,\n useCSSOM: options.useCSSOM || false,\n onBeforeSend: options.onBeforeSend || Function.prototype,\n onSuccess: options.onSuccess || Function.prototype,\n onError: options.onError || Function.prototype,\n onComplete: options.onComplete || Function.prototype\n };\n var sourceNodes = Array.apply(null, settings.rootElement.querySelectorAll(settings.include)).filter((function(node) {\n return !matchesSelector(node, settings.exclude);\n }));\n var cssArray = Array.apply(null, Array(sourceNodes.length)).map((function(x) {\n return null;\n }));\n function handleComplete() {\n var isComplete = cssArray.indexOf(null) === -1;\n if (isComplete) {\n cssArray.reduce((function(skipIndices, value, i) {\n if (value === \"\") {\n skipIndices.push(i);\n }\n return skipIndices;\n }), []).reverse().forEach((function(skipIndex) {\n return [ sourceNodes, cssArray ].forEach((function(arr) {\n return arr.splice(skipIndex, 1);\n }));\n }));\n var cssText = cssArray.join(\"\");\n settings.onComplete(cssText, cssArray, sourceNodes);\n }\n }\n function handleSuccess(cssText, cssIndex, node, sourceUrl) {\n var returnVal = settings.onSuccess(cssText, node, sourceUrl);\n cssText = returnVal !== undefined && Boolean(returnVal) === false ? \"\" : returnVal || cssText;\n resolveImports(cssText, node, sourceUrl, (function(resolvedCssText, errorData) {\n if (cssArray[cssIndex] === null) {\n errorData.forEach((function(data) {\n return settings.onError(data.xhr, node, data.url);\n }));\n if (!settings.filter || settings.filter.test(resolvedCssText)) {\n cssArray[cssIndex] = resolvedCssText;\n } else {\n cssArray[cssIndex] = \"\";\n }\n handleComplete();\n }\n }));\n }\n function parseImportData(cssText, baseUrl) {\n var ignoreRules = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n var importData = {};\n importData.rules = (cssText.replace(regex.cssComments, \"\").match(regex.cssImports) || []).filter((function(rule) {\n return ignoreRules.indexOf(rule) === -1;\n }));\n importData.urls = importData.rules.map((function(rule) {\n return rule.replace(regex.cssImports, \"$1\");\n }));\n importData.absoluteUrls = importData.urls.map((function(url) {\n return getFullUrl(url, baseUrl);\n }));\n importData.absoluteRules = importData.rules.map((function(rule, i) {\n var oldUrl = importData.urls[i];\n var newUrl = getFullUrl(importData.absoluteUrls[i], baseUrl);\n return rule.replace(oldUrl, newUrl);\n }));\n return importData;\n }\n function resolveImports(cssText, node, baseUrl, callbackFn) {\n var __errorData = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];\n var __errorRules = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : [];\n var importData = parseImportData(cssText, baseUrl, __errorRules);\n if (importData.rules.length) {\n getUrls(importData.absoluteUrls, {\n onBeforeSend: function onBeforeSend(xhr, url, urlIndex) {\n settings.onBeforeSend(xhr, node, url);\n },\n onSuccess: function onSuccess(cssText, url, urlIndex) {\n var returnVal = settings.onSuccess(cssText, node, url);\n cssText = returnVal === false ? \"\" : returnVal || cssText;\n var responseImportData = parseImportData(cssText, url, __errorRules);\n responseImportData.rules.forEach((function(rule, i) {\n cssText = cssText.replace(rule, responseImportData.absoluteRules[i]);\n }));\n return cssText;\n },\n onError: function onError(xhr, url, urlIndex) {\n __errorData.push({\n xhr: xhr,\n url: url\n });\n __errorRules.push(importData.rules[urlIndex]);\n resolveImports(cssText, node, baseUrl, callbackFn, __errorData, __errorRules);\n },\n onComplete: function onComplete(responseArray) {\n responseArray.forEach((function(importText, i) {\n cssText = cssText.replace(importData.rules[i], importText);\n }));\n resolveImports(cssText, node, baseUrl, callbackFn, __errorData, __errorRules);\n }\n });\n } else {\n callbackFn(cssText, __errorData);\n }\n }\n if (sourceNodes.length) {\n sourceNodes.forEach((function(node, i) {\n var linkHref = node.getAttribute(\"href\");\n var linkRel = node.getAttribute(\"rel\");\n var isLink = node.nodeName.toLowerCase() === \"link\" && linkHref && linkRel && linkRel.toLowerCase().indexOf(\"stylesheet\") !== -1;\n var isSkip = settings.skipDisabled === false ? false : node.disabled;\n var isStyle = node.nodeName.toLowerCase() === \"style\";\n if (isLink && !isSkip) {\n var isURIScheme = linkHref.indexOf(\"data:text/css\") !== -1;\n if (isURIScheme) {\n var cssText = decodeURIComponent(linkHref.substring(linkHref.indexOf(\",\") + 1));\n if (settings.useCSSOM) {\n cssText = Array.apply(null, node.sheet.cssRules).map((function(rule) {\n return rule.cssText;\n })).join(\"\");\n }\n handleSuccess(cssText, i, node, location.href);\n } else {\n getUrls(linkHref, {\n mimeType: \"text/css\",\n onBeforeSend: function onBeforeSend(xhr, url, urlIndex) {\n settings.onBeforeSend(xhr, node, url);\n },\n onSuccess: function onSuccess(cssText, url, urlIndex) {\n var sourceUrl = getFullUrl(linkHref);\n handleSuccess(cssText, i, node, sourceUrl);\n },\n onError: function onError(xhr, url, urlIndex) {\n cssArray[i] = \"\";\n settings.onError(xhr, node, url);\n handleComplete();\n }\n });\n }\n } else if (isStyle && !isSkip) {\n var _cssText = node.textContent;\n if (settings.useCSSOM) {\n _cssText = Array.apply(null, node.sheet.cssRules).map((function(rule) {\n return rule.cssText;\n })).join(\"\");\n }\n handleSuccess(_cssText, i, node, location.href);\n } else {\n cssArray[i] = \"\";\n handleComplete();\n }\n }));\n } else {\n settings.onComplete(\"\", []);\n }\n}\n\nfunction getFullUrl(url, base) {\n var d = document.implementation.createHTMLDocument(\"\");\n var b = d.createElement(\"base\");\n var a = d.createElement(\"a\");\n d.head.appendChild(b);\n d.body.appendChild(a);\n b.href = base || document.baseURI || (document.querySelector(\"base\") || {}).href || location.href;\n a.href = url;\n return a.href;\n}\n\nfunction matchesSelector(elm, selector) {\n var matches = elm.matches || elm.matchesSelector || elm.webkitMatchesSelector || elm.mozMatchesSelector || elm.msMatchesSelector || elm.oMatchesSelector;\n return matches.call(elm, selector);\n}\n\nexport { getCssData as default };\n//# sourceMappingURL=get-css-data.esm.js.map\n","'use strict';\nmodule.exports = balanced;\nfunction balanced(a, b, str) {\n if (a instanceof RegExp) a = maybeMatch(a, str);\n if (b instanceof RegExp) b = maybeMatch(b, str);\n\n var r = range(a, b, str);\n\n return r && {\n start: r[0],\n end: r[1],\n pre: str.slice(0, r[0]),\n body: str.slice(r[0] + a.length, r[1]),\n post: str.slice(r[1] + b.length)\n };\n}\n\nfunction maybeMatch(reg, str) {\n var m = str.match(reg);\n return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n var begs, beg, left, right, result;\n var ai = str.indexOf(a);\n var bi = str.indexOf(b, ai + 1);\n var i = ai;\n\n if (ai >= 0 && bi > 0) {\n if(a===b) {\n return [ai, bi];\n }\n begs = [];\n left = str.length;\n\n while (i >= 0 && !result) {\n if (i == ai) {\n begs.push(i);\n ai = str.indexOf(a, i + 1);\n } else if (begs.length == 1) {\n result = [ begs.pop(), bi ];\n } else {\n beg = begs.pop();\n if (beg < left) {\n left = beg;\n right = bi;\n }\n\n bi = str.indexOf(b, i + 1);\n }\n\n i = ai < bi && ai >= 0 ? ai : bi;\n }\n\n if (begs.length) {\n result = [ left, right ];\n }\n }\n\n return result;\n}\n","/**\n * Based on css parser/compiler by NxChg\n * https://github.com/NxtChg/pieces/tree/master/js/css_parser\n */\n\n\n// Dependencies\n// =============================================================================\nimport balanced from 'balanced-match';\n\n\n// Functions\n// =============================================================================\n/**\n * Parses CSS string and generates AST object\n *\n * @param {string} css The CSS string to be converted to an AST\n * @param {object} [options] Options object\n * @param {boolean} [options.preserveStatic=true] Determines if CSS\n * declarations that do not reference a custom property will\n * be preserved in the transformed CSS\n * @param {boolean} [options.removeComments=false] Remove comments from returned\n * object\n * @returns {object}\n */\nfunction parseCss(css, options = {}) {\n const defaults = {\n preserveStatic: true,\n removeComments: false\n };\n const settings = Object.assign({}, defaults, options);\n const errors = [];\n\n // Errors\n // -------------------------------------------------------------------------\n function error(msg) {\n throw new Error(`CSS parse error: ${msg}`);\n }\n\n // RegEx\n // -------------------------------------------------------------------------\n // Match regexp and return captures\n function match(re) {\n const m = re.exec(css);\n\n if (m) {\n css = css.slice(m[0].length);\n\n return m;\n }\n }\n\n function open() {\n return match(/^{\\s*/);\n }\n\n function close() {\n return match(/^}/);\n }\n\n function whitespace() {\n match(/^\\s*/);\n }\n\n // Comments\n // -------------------------------------------------------------------------\n function comment() {\n whitespace();\n\n if (css[0] !== '/' || css[1] !== '*') {\n return;\n }\n\n let i = 2;\n\n while (css[i] && (css[i] !== '*' || css[i + 1] !== '/')) {\n i++;\n }\n\n if (!css[i]) {\n return error('end of comment is missing');\n }\n\n const str = css.slice(2, i);\n\n css = css.slice(i + 2);\n\n return {\n type : 'comment',\n comment: str\n };\n }\n\n function comments() {\n const cmnts = [];\n let c;\n\n while ((c = comment())) {\n cmnts.push(c);\n }\n\n return settings.removeComments ? [] : cmnts;\n }\n\n // Selector\n // -------------------------------------------------------------------------\n function selector() {\n whitespace();\n\n while (css[0] === '}') {\n error('extra closing bracket');\n }\n\n // Match selector\n const m = match(/^((\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'|[^{])+)/);\n\n if (m) {\n let selector = m[0].trim();\n let selectorItems;\n\n const hasComment = /\\/\\*/.test(selector);\n\n if (hasComment) {\n // Remove comments\n selector = selector.replace(/\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*\\/+/g, '');\n }\n\n const hasCommaInQuotes = /[\"']\\w*,\\w*[\"']/.test(selector);\n\n if (hasCommaInQuotes) {\n // Replace comma in comma-separated lists with marker\n selector = selector.replace(/\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'/g, function(m) {\n return m.replace(/,/g, '\\u200C');\n });\n }\n\n const hasMultipleSelectors = /,/.test(selector);\n\n // Create array of selectors\n if (hasMultipleSelectors) {\n // From comma-separated list\n selectorItems = selector.split(/\\s*(?![^(]*\\)),\\s*/);\n }\n else {\n selectorItems = [selector];\n }\n\n if (hasCommaInQuotes) {\n // Restore comma in comma-separated lists\n selectorItems = selectorItems.map(function(s) {\n return s.replace(/\\u200C/g, ',');\n });\n }\n\n return selectorItems;\n }\n }\n\n // Declarations\n // -------------------------------------------------------------------------\n function declaration() {\n // Nested @ rule(s)\n if (css[0] === '@') {\n return at_rule();\n }\n\n match(/^([;\\s]*)+/); // ignore empty declarations + whitespace\n\n const comment_regexp = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\n let prop = match(/^(\\*?[-#/*\\\\\\w.]+(\\[[0-9a-z_-]+\\])?)\\s*/);\n\n if (!prop) {\n return;\n }\n\n prop = prop[0].trim();\n\n if (!match(/^:\\s*/)) {\n return error('property missing \\':\\'');\n }\n\n // Quotes regex repeats verbatim inside and outside parentheses\n const val = match(/^((?:\\/\\*.*?\\*\\/|'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\((\\s*'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|[^)]*?)\\s*\\)|[^};])+)/);\n const ret = {\n type : 'declaration',\n property: prop.replace(comment_regexp, ''),\n value : val ? val[0].replace(comment_regexp, '').trim() : ''\n };\n\n match(/^[;\\s]*/);\n\n return ret;\n }\n\n function declarations() {\n if (!open()) {\n return error('missing \\'{\\'');\n }\n\n let d;\n let decls = comments();\n\n while ((d = declaration())) {\n decls.push(d);\n decls = decls.concat(comments());\n }\n\n if (!close()) {\n return error('missing \\'}\\'');\n }\n\n return decls;\n }\n\n // Keyframes\n // -------------------------------------------------------------------------\n function keyframe() {\n whitespace();\n\n const vals = [];\n let m;\n\n while ((m = match(/^((\\d+\\.\\d+|\\.\\d+|\\d+)%?|[a-z]+)\\s*/))) {\n vals.push(m[1]);\n match(/^,\\s*/);\n }\n\n if (vals.length) {\n return {\n type : 'keyframe',\n values : vals,\n declarations: declarations()\n };\n }\n }\n\n function at_keyframes() {\n let m = match(/^@([-\\w]+)?keyframes\\s*/);\n\n if (!m) {\n return;\n }\n\n const vendor = m[1];\n\n m = match(/^([-\\w]+)\\s*/);\n\n if (!m) {\n return error('@keyframes missing name');\n }\n\n const name = m[1];\n\n if (!open()) {\n return error('@keyframes missing \\'{\\'');\n }\n\n let frame;\n let frames = comments();\n\n while ((frame = keyframe())) {\n frames.push(frame);\n frames = frames.concat(comments());\n }\n\n if (!close()) {\n return error('@keyframes missing \\'}\\'');\n }\n\n return {\n type : 'keyframes',\n name : name,\n vendor : vendor,\n keyframes: frames\n };\n }\n\n // @ Rules\n // -------------------------------------------------------------------------\n function at_page() {\n const m = match(/^@page */);\n if (m) {\n const sel = selector() || [];\n return { type: 'page', selectors: sel, declarations: declarations() };\n }\n }\n function at_page_margin_box() {\n const m = match(/@(top|bottom|left|right)-(left|center|right|top|middle|bottom)-?(corner)?\\s*/);\n if (m) {\n const name = `${m[1]}-${m[2]}` + (m[3] ? `-${m[3]}` : '');\n return { type: 'page-margin-box', name, declarations: declarations() };\n }\n }\n function at_fontface() {\n const m = match(/^@font-face\\s*/);\n if (m) { return { type: 'font-face', declarations: declarations() }; }\n }\n function at_supports() {\n const m = match(/^@supports *([^{]+)/);\n if (m) { return { type: 'supports', supports: m[1].trim(), rules: rules() }; }\n }\n function at_host() {\n const m = match(/^@host\\s*/);\n if (m) { return { type: 'host', rules: rules() }; }\n }\n function at_media() {\n const m = match(/^@media([^{]+)*/);\n if (m) { return { type: 'media', media: (m[1] || '').trim(), rules: rules() }; }\n }\n function at_custom_m() {\n const m = match(/^@custom-media\\s+(--[^\\s]+)\\s*([^{;]+);/);\n if (m) { return { type: 'custom-media', name: m[1].trim(), media: m[2].trim() }; }\n }\n function at_document() {\n const m = match(/^@([-\\w]+)?document *([^{]+)/);\n if (m) { return { type: 'document', document: m[2].trim(), vendor: m[1] ? m[1].trim() : null, rules: rules() }; }\n }\n function at_x() {\n const m = match(/^@(import|charset|namespace)\\s*([^;]+);/);\n if (m) { return { type: m[1], name: m[2].trim() }; }\n }\n function at_rule() {\n whitespace();\n\n if (css[0] === '@') {\n const ret =\n at_x() ||\n at_fontface() ||\n at_media() ||\n at_keyframes() ||\n at_supports() ||\n at_document() ||\n at_custom_m() ||\n at_host() ||\n at_page() ||\n at_page_margin_box(); // Must be last\n\n if (ret && !settings.preserveStatic) {\n let hasVarFunc = false;\n\n // @page, @font-face\n if (ret.declarations) {\n hasVarFunc = ret.declarations.some(decl => /var\\(/.test(decl.value));\n }\n // @keyframes, @media, @supports, etc.\n else {\n const arr = ret.keyframes || ret.rules || [];\n\n hasVarFunc = arr.some(obj => (obj.declarations || []).some(decl => /var\\(/.test(decl.value)));\n }\n\n return hasVarFunc ? ret : {};\n }\n\n return ret;\n }\n }\n\n // Rules\n // -------------------------------------------------------------------------\n function rule() {\n if (!settings.preserveStatic) {\n const balancedMatch = balanced('{', '}', css);\n\n // Skip rulset if it does not contain a root/host variable\n // declaration or a variable function value\n if (balancedMatch) {\n const hasVarDecl = /:(?:root|host)(?![.:#(])/.test(balancedMatch.pre) && /--\\S*\\s*:/.test(balancedMatch.body);\n const hasVarFunc = /var\\(/.test(balancedMatch.body);\n\n if (!hasVarDecl && !hasVarFunc) {\n css = css.slice(balancedMatch.end + 1);\n\n return {};\n }\n }\n }\n\n const sel = selector() || [];\n const decls = settings.preserveStatic ? declarations() : declarations().filter(decl => {\n const hasVarDecl = sel.some(s => /:(?:root|host)(?![.:#(])/.test(s)) && /^--\\S/.test(decl.property);\n const hasVarFunc = /var\\(/.test(decl.value);\n\n return hasVarDecl || hasVarFunc;\n });\n\n if (!sel.length) {\n error('selector missing');\n }\n\n return {\n type : 'rule',\n selectors : sel,\n declarations: decls\n };\n }\n\n function rules(core) {\n if (!core && !open()) {\n return error('missing \\'{\\'');\n }\n\n let node;\n let rules = comments();\n\n while (css.length && (core || css[0] !== '}') && (node = at_rule() || rule())) {\n if (node.type) {\n rules.push(node);\n }\n\n rules = rules.concat(comments());\n }\n\n if (!core && !close()) {\n return error('missing \\'}\\'');\n }\n\n return rules;\n }\n\n return {\n type: 'stylesheet',\n stylesheet: {\n rules: rules(true),\n errors: errors\n }\n };\n}\n\n\n// Exports\n// =============================================================================\nexport default parseCss;\n","// Dependencies\n// =============================================================================\nimport parseCss from './parse-css';\n\n\n// Functions\n// =============================================================================\n/**\n * Description\n *\n * @param {object|string} cssData CSS data to parse\n * @param {object} [options] Options object\n * @param {object} [options.store={}] CSS variable definitions to include during\n * transformation. Can be used to add new override exisitng definitions.\n * @param {function} [options.onWarning] Callback on each transformation\n * warning. Passes 1) warningMessage as an argument.\n * @returns {object}\n */\nfunction parseVars(cssData, options = {}) {\n const defaults = {\n parseHost: false,\n store : {},\n onWarning() {}\n };\n const settings = Object.assign({}, defaults, options);\n const reVarDeclSelectors = new RegExp(`:${ settings.parseHost ? 'host' : 'root' }$`);\n\n // Convert CSS string to AST\n if (typeof cssData === 'string') {\n cssData = parseCss(cssData, settings);\n }\n\n // Define variables\n cssData.stylesheet.rules.forEach(function(rule) {\n const varNameIndices = [];\n\n if (rule.type !== 'rule' || !rule.selectors.some(s => reVarDeclSelectors.test(s))) {\n return;\n }\n\n rule.declarations.forEach(function(decl, i) {\n const prop = decl.property;\n const value = decl.value;\n\n if (prop && prop.indexOf('--') === 0) {\n settings.store[prop] = value;\n varNameIndices.push(i);\n }\n });\n });\n\n // Return variable store\n return settings.store;\n}\n\n\n// Exports\n// =============================================================================\nexport default parseVars;\n","/**\n * Based on css parser/compiler by NxChg\n * https://github.com/NxtChg/pieces/tree/master/js/css_parser\n */\n\n\n// Functions\n// =============================================================================\n/**\n * Compiles CSS AST to string\n *\n * @param {object} tree CSS AST object\n * @param {string} [delim=''] CSS rule delimiter\n * @param {function} cb Function to be called before each node is processed\n * @returns {string}\n */\nfunction stringifyCss(tree, delim = '', cb) {\n const renderMethods = {\n charset(node) {\n return '@charset ' + node.name + ';';\n },\n comment(node) {\n // Preserve ponyfill marker comments\n return node.comment.indexOf('__CSSVARSPONYFILL') === 0 ? '/*' + node.comment + '*/' : '';\n },\n 'custom-media'(node) {\n return '@custom-media ' + node.name + ' ' + node.media + ';';\n },\n declaration(node) {\n return node.property + ':' + node.value + ';';\n },\n document(node) {\n return '@' + (node.vendor || '') + 'document ' + node.document + '{' + visit(node.rules) + '}';\n },\n 'font-face'(node) {\n return '@font-face' + '{' + visit(node.declarations) + '}';\n },\n host(node) {\n return '@host' + '{' + visit(node.rules) + '}';\n },\n import(node) {\n // FIXED\n return '@import ' + node.name + ';';\n },\n keyframe(node) {\n return node.values.join(',') + '{' + visit(node.declarations) + '}';\n },\n keyframes(node) {\n return '@' + (node.vendor || '') + 'keyframes ' + node.name + '{' + visit(node.keyframes) + '}';\n },\n media(node) {\n return '@media ' + node.media + '{' + visit(node.rules) + '}';\n },\n namespace(node) {\n return '@namespace ' + node.name + ';';\n },\n page(node) {\n return '@page ' + (node.selectors.length ? node.selectors.join(', ') : '') + '{' + visit(node.declarations) + '}';\n },\n 'page-margin-box'(node) {\n return '@' + node.name + '{' + visit(node.declarations) + '}';\n },\n rule(node) {\n const decls = node.declarations;\n\n if (decls.length) {\n return node.selectors.join(',') + '{' + visit(decls) + '}';\n }\n },\n supports(node) {\n // FIXED\n return '@supports ' + node.supports + '{' + visit(node.rules) + '}';\n }\n };\n\n function visit(nodes) {\n let buf = '';\n\n for (let i = 0; i < nodes.length; i++) {\n const n = nodes[i];\n\n if (cb) {\n cb(n);\n }\n\n const txt = renderMethods[n.type](n);\n\n if (txt) {\n buf += txt;\n\n if (txt.length && n.selectors) {\n buf += delim;\n }\n }\n }\n\n return buf;\n }\n\n return visit(tree.stylesheet.rules);\n}\n\n\n// Exports\n// =============================================================================\nexport default stringifyCss;\n","/**\n * Based on rework-visit by reworkcss\n * https://github.com/reworkcss/rework-visit\n */\n\n\n// Functions\n// =============================================================================\n/**\n * Visit `node` declarations recursively and invoke `fn(declarations, node)`.\n *\n * @param {object} node\n * @param {function} fn\n */\nfunction walkCss(node, fn){\n node.rules.forEach(function(rule){\n // @media etc\n if (rule.rules) {\n walkCss(rule, fn);\n\n return;\n }\n\n // keyframes\n if (rule.keyframes) {\n rule.keyframes.forEach(function(keyframe){\n if (keyframe.type === 'keyframe') {\n fn(keyframe.declarations, rule);\n }\n });\n\n return;\n }\n\n // @charset, @import etc\n if (!rule.declarations) {\n return;\n }\n\n fn(rule.declarations, node);\n });\n}\n\n\n// Exports\n// =============================================================================\nexport default walkCss;\n","/**\n * Based on rework-vars by reworkcss\n * https://github.com/reworkcss/rework-vars\n */\n\n\n// Dependencies\n// =============================================================================\nimport balanced from 'balanced-match';\nimport parseCss from './parse-css';\nimport stringifyCss from './stringify-css';\nimport walkCss from './walk-css';\n\n\n// Constants & Variables\n// =============================================================================\nconst VAR_PROP_IDENTIFIER = '--';\nconst VAR_FUNC_IDENTIFIER = 'var';\n\n\n// Functions\n// =============================================================================\n/**\n * Transforms W3C-style CSS variables to static values and returns an updated\n * CSS string.\n *\n * @param {object} cssData CSS text or AST\n * @param {object} [options] Options object\n * @param {boolean} [options.preserveStatic=true] Determines if CSS\n * declarations that do not reference a custom property will\n * be preserved in the transformed CSS\n * @param {boolean} [options.preserveVars=false] Determines if CSS custom\n * property declarations will be preserved in the transformed\n * CSS\n * @param {object} [options.variables={}] CSS variable definitions to include\n * during transformation. Can be used to add new override\n * exisitng definitions.\n * @param {function} [options.onWarning] Callback on each transformation\n * warning. Passes 1) warningMessage as an argument.\n * @returns {string}\n */\nfunction transformCss(cssData, options = {}) {\n const defaults = {\n preserveStatic: true,\n preserveVars : false,\n variables : {},\n onWarning() {}\n };\n const settings = Object.assign({}, defaults, options);\n\n // Convert CSS string to AST\n if (typeof cssData === 'string') {\n cssData = parseCss(cssData, settings);\n }\n\n // Resolve variables\n walkCss(cssData.stylesheet, function(declarations, node) {\n for (let i = 0; i < declarations.length; i++) {\n const decl = declarations[i];\n const type = decl.type;\n const prop = decl.property;\n const value = decl.value;\n\n // Skip comments\n if (type !== 'declaration') {\n continue;\n }\n\n // Remove custom property declarations\n if (!settings.preserveVars && prop && prop.indexOf(VAR_PROP_IDENTIFIER) === 0) {\n declarations.splice(i, 1);\n i--;\n continue;\n }\n\n // Transform custom property functions\n if (value.indexOf(VAR_FUNC_IDENTIFIER + '(') !== -1) {\n let resolvedValue = resolveValue(value, settings);\n\n if (resolvedValue !== decl.value) {\n // Fix nested calc\n resolvedValue = fixNestedCalc(resolvedValue);\n\n // Overwrite value\n if (!settings.preserveVars) {\n decl.value = resolvedValue;\n }\n // Insert new rule with resolved value\n else {\n declarations.splice(i, 0, {\n type : type,\n property: prop,\n value : resolvedValue\n });\n\n // Skip ahead of preserved declaration\n i++;\n }\n }\n }\n }\n });\n\n // Return CSS string\n return stringifyCss(cssData);\n}\n\n\n// Functions (Private)\n// =============================================================================\n/**\n * Removes nested calc keywords for legacy browser compatibility.\n * Example: calc(1 + calc(2 + calc(3 + 3))) => calc(1 + (2 + (3 + 3)))\n *\n * @param {value} string\n */\nfunction fixNestedCalc(value) {\n const reCalcVal = /calc\\(([^)]+)\\)/g;\n\n (value.match(reCalcVal) || []).forEach(match => {\n const newVal = `calc${match.split('calc').join('')}`;\n value = value.replace(match, newVal);\n });\n\n return value;\n}\n\n/**\n * Resolves CSS var() function(s) with `settings.variables` or fallback\n * value(s). Returns original `value` if unable to resolve.\n *\n * @param {string} value String containing CSS var() functions to resolve\n * @param {object} settings Settings object passed from transformCss()\n * @param {string} [__recursiveFallback] Fallback when unable to resolve CSS\n * var() function to a `settings.variables` or fallback value.\n * Allows restoring original var() function from recursive\n * resolveValue() calls.\n * @return {string} CSS value with var() function(s) resolved to\n * `settings.variables` or fallback value.\n *\n * @example\n *\n * resolveValue('10px var(--x) 30px', {'--x':'20px'}, {...settings});\n * // => '10px 20px 30px'\n *\n * resolveValue('10px', {}, {...settings});\n * // => '10px'\n */\nfunction resolveValue(value, settings = {}, __recursiveFallback) {\n if (value.indexOf('var(') === -1) {\n return value;\n }\n\n const valueData = balanced('(', ')', value);\n\n /**\n * Resolves contents of CSS custom property function\n *\n * @param {string} value String containing contents of CSS var() function\n * @returns {string}\n *\n * @example\n *\n * resolveFunc('--x, var(--y, green)')\n * // => obj['--x'] or obj['--y'] or 'green'\n *\n * resolveFunc('--fail')\n * // => 'var(--fail)' when obj['--fail'] does not exist\n */\n function resolveFunc(value) {\n const name = value.split(',')[0].replace(/[\\s\\n\\t]/g, '');\n const fallback = (value.match(/(?:\\s*,\\s*){1}(.*)?/) || [])[1];\n const match = Object.prototype.hasOwnProperty.call(settings.variables, name) ? String(settings.variables[name]) : undefined;\n const replacement = match || (fallback ? String(fallback) : undefined);\n const unresolvedFallback = __recursiveFallback || value;\n\n if (!match) {\n settings.onWarning(`variable \"${name}\" is undefined`);\n }\n\n if (replacement && replacement !== 'undefined' && replacement.length > 0) {\n return resolveValue(replacement, settings, unresolvedFallback);\n }\n else {\n return `var(${unresolvedFallback})`;\n }\n }\n\n // No balanced brace data\n if (!valueData) {\n if (value.indexOf('var(') !== -1) {\n settings.onWarning(`missing closing \")\" in the value \"${value}\"`);\n }\n\n return value;\n }\n // Balanced brace data is var() function\n else if (valueData.pre.slice(-3) === 'var') {\n const isEmptyVarFunc = valueData.body.trim().length === 0;\n\n if (isEmptyVarFunc) {\n settings.onWarning('var() must contain a non-whitespace string');\n\n return value;\n }\n else {\n return (\n valueData.pre.slice(0,-3)\n + resolveFunc(valueData.body)\n + resolveValue(valueData.post, settings)\n );\n }\n }\n // Balanced brace data is NOT var() function\n else {\n return (\n valueData.pre\n + `(${resolveValue(valueData.body, settings)})`\n + resolveValue(valueData.post, settings)\n );\n }\n}\n\n\n// Exports\n// =============================================================================\nexport default transformCss;\n","// Dependencies\n// =============================================================================\nimport getCssData from 'get-css-data';\nimport parseCss from './parse-css';\nimport parseVars from './parse-vars';\nimport stringifyCss from './stringify-css';\nimport transformCss from './transform-css';\n\n\n// Constants & Variables\n// =============================================================================\nconst isBrowser = typeof window !== 'undefined';\nconst isNativeSupport = isBrowser && window.CSS && window.CSS.supports && window.CSS.supports('(--a: 0)');\n\nconst counters = {\n group: 0,\n job : 0\n};\nconst defaults = {\n // Targets\n rootElement : isBrowser ? document : null,\n shadowDOM : false,\n // Sources\n include : 'style,link[rel=stylesheet]',\n exclude : '',\n variables : {}, // cssVars, transformCss\n // Options\n onlyLegacy : true, // cssVars\n preserveStatic: true, // parseCSS\n preserveVars : false, // transformCss\n silent : false, // cssVars\n updateDOM : true, // cssVars\n updateURLs : true, // cssVars\n watch : null, // cssVars\n // Callbacks\n onBeforeSend() {}, // cssVars\n onError() {}, // cssVars\n onWarning() {}, // transformCss\n onSuccess() {}, // cssVars\n onComplete() {}, // cssVars\n onFinally() {} // cssVars\n};\nconst regex = {\n // CSS comments\n cssComments: /\\/\\*[\\s\\S]+?\\*\\//g,\n // CSS keyframes\n // Ex: @keyframes & @-VENDOR-keyframes\n cssKeyframes: /@(?:-\\w*-)?keyframes/,\n // CSS media queries\n // Ex: @media (min-width: 640px) { ... }\n cssMediaQueries: /@media[^{]+\\{([\\s\\S]+?})\\s*}/g,\n // CSS Urls\n // Ex: url('path/to/file')\n cssUrls: /url\\((?!['\"]?(?:data|http|\\/\\/):)['\"]?([^'\")]*)['\"]?\\)/g,\n // CSS root/host rules\n // Ex: :root { ... } or :host { ... }\n cssVarDeclRules: /(?::(?:root|host)(?![.:#(])[\\s,]*[^{]*{\\s*[^}]*})/g,\n // CSS variable declarations (e.g. --color: red;)\n cssVarDecls: /(?:[\\s;]*)(-{2}\\w[\\w-]*)(?:\\s*:\\s*)([^;]*);/g,\n // CSS variable function (e.g. var(--color))\n cssVarFunc: /var\\(\\s*--[\\w-]/,\n // CSS variable root/host declarations and var() function values\n cssVars: /(?:(?::(?:root|host)(?![.:#(])[\\s,]*[^{]*{\\s*[^;]*;*\\s*)|(?:var\\(\\s*))(--[^:)]+)(?:\\s*[:)])/\n};\nconst variableStore = {\n // Parsed DOM values (from <link> and <style> nodes)\n dom : {},\n // Temporary storage for each job\n job : {},\n // Persisted options.variables values\n user: {}\n};\n\n// Flag used to prevent successive ponyfill calls from stacking\nlet cssVarsIsRunning = false;\n\n// Mutation observer reference created via options.watch\nlet cssVarsObserver = null;\n\n// Count used to detect manual removal of [data-cssvars=\"src\"] nodes\nlet cssVarsSrcNodeCount = 0;\n\n// Debounce timer used with options.watch\nlet debounceTimer = null;\n\n// Flag used to indicate if document-level custom property values have been\n// parsed, stored, and ready for use with options.shadowDOM\nlet isShadowDOMReady = false;\n\n\n// Functions\n// =============================================================================\n/**\n * Fetches, parses, and transforms CSS custom properties from specified\n * <style> and <link> elements into static values, then appends a new <style>\n * element with static values to the DOM to provide CSS custom property\n * compatibility for legacy browsers. Also provides a single interface for\n * live updates of runtime values in both modern and legacy browsers.\n *\n * @preserve\n * @param {object} [options] Options object\n * @param {object} [options.rootElement=document] Root element to traverse for\n * <link> and <style> nodes\n * @param {boolean} [options.shadowDOM=false] Determines if shadow DOM <link>\n * and <style> nodes will be processed.\n * @param {string} [options.include=\"style,link[rel=stylesheet]\"] CSS selector\n * matching <link re=\"stylesheet\"> and <style> nodes to\n * process\n * @param {string} [options.exclude] CSS selector matching <link\n * rel=\"stylehseet\"> and <style> nodes to exclude from those\n * matches by options.include\n * @param {object} [options.variables] A map of custom property name/value\n * pairs. Property names can omit or include the leading\n * double-hyphen (—), and values specified will override\n * previous values\n * @param {boolean} [options.onlyLegacy=true] Determines if the ponyfill will\n * only generate legacy-compatible CSS in browsers that lack\n * native support (i.e., legacy browsers)\n * @param {boolean} [options.preserveStatic=true] Determines if CSS\n * declarations that do not reference a custom property will\n * be preserved in the transformed CSS\n * @param {boolean} [options.preserveVars=false] Determines if CSS custom\n * property declarations will be preserved in the transformed\n * CSS\n * @param {boolean} [options.silent=false] Determines if warning and error\n * messages will be displayed on the console\n * @param {boolean} [options.updateDOM=true] Determines if the ponyfill will\n * update the DOM after processing CSS custom properties\n * @param {boolean} [options.updateURLs=true] Determines if relative url()\n * paths will be converted to absolute urls in external CSS\n * @param {boolean} [options.watch=false] Determines if a MutationObserver will\n * be created that will execute the ponyfill when a <link> or\n * <style> DOM mutation is observed\n * @param {function} [options.onBeforeSend] Callback before XHR is sent. Passes\n * 1) the XHR object, 2) source node reference, and 3) the\n * source URL as arguments\n * @param {function} [options.onError] Callback after a CSS parsing error has\n * occurred or an XHR request has failed. Passes 1) an error\n * message, and 2) source node reference, 3) xhr, and 4 url as\n * arguments.\n * @param {function} [options.onWarning] Callback after each CSS parsing warning\n * has occurred. Passes 1) a warning message as an argument.\n * @param {function} [options.onSuccess] Callback after CSS data has been\n * collected from each node and before CSS custom properties\n * have been transformed. Allows modifying the CSS data before\n * it is transformed by returning any string value (or false\n * to skip). Passes 1) CSS text, 2) source node reference, and\n * 3) the source URL as arguments.\n * @param {function} [options.onComplete] Callback after all CSS has been\n * processed, legacy-compatible CSS has been generated, and\n * (optionally) the DOM has been updated. Passes 1) a CSS\n * string with CSS variable values resolved, 2) an array of\n * output <style> node references that have been appended to\n * the DOM, 3) an object containing all custom properies names\n * and values, and 4) the ponyfill execution time in\n * milliseconds.\n * @param {function} [options.onFinally] Callback in modern and legacy browsers\n * after the ponyfill has finished all tasks. Passes 1) a\n * boolean indicating if the last ponyfill call resulted in a\n * style change, 2) a boolean indicating if the current\n * browser provides native support for CSS custom properties,\n * and 3) the ponyfill execution time in milliseconds.\n * @example\n *\n * cssVars({\n * rootElement : document,\n * shadowDOM : false,\n * include : 'style,link[rel=\"stylesheet\"]',\n * exclude : '',\n * variables : {},\n * onlyLegacy : true,\n * preserveStatic: true,\n * preserveVars : false,\n * silent : false,\n * updateDOM : true,\n * updateURLs : true,\n * watch : false,\n * onBeforeSend(xhr, node, url) {},\n * onError(message, node, xhr, url) {},\n * onWarning(message) {},\n * onSuccess(cssText, node, url) {},\n * onComplete(cssText, styleNode, cssVariables, benchmark) {},\n * onFinally(hasChanged, hasNativeSupport, benchmark)\n * });\n */\nfunction cssVars(options = {}) {\n const msgPrefix = 'cssVars(): ';\n const settings = Object.assign({}, defaults, options);\n\n function handleError(message, sourceNode, xhr, url) {\n /* istanbul ignore next */\n if (!settings.silent && window.console) {\n // eslint-disable-next-line\n console.error(`${msgPrefix}${message}\\n`, sourceNode);\n }\n\n settings.onError(message, sourceNode, xhr, url);\n }\n\n function handleWarning(message) {\n /* istanbul ignore next */\n if (!settings.silent && window.console) {\n // eslint-disable-next-line\n console.warn(`${msgPrefix}${message}`);\n }\n\n settings.onWarning(message);\n }\n\n function handleFinally(hasChanged) {\n settings.onFinally(\n Boolean(hasChanged),\n isNativeSupport,\n getTimeStamp() - settings.__benchmark\n );\n }\n\n // Exit if non-browser environment (e.g. Node)\n if (!isBrowser) {\n return;\n }\n\n // Add / recreate MutationObserver\n if (settings.watch) {\n settings.watch = defaults.watch;\n addMutationObserver(settings);\n cssVars(settings);\n return;\n }\n // Disconnect existing MutationObserver\n else if (settings.watch === false && cssVarsObserver) {\n cssVarsObserver.disconnect();\n cssVarsObserver = null;\n }\n\n // If benchmark key is not availalbe, this is a non-recursive call\n if (!settings.__benchmark) {\n // Check flag and debounce to prevent successive call from stacking\n if (cssVarsIsRunning === settings.rootElement) {\n cssVarsDebounced(options);\n return;\n }\n\n const srcNodes = [].slice.call(settings.rootElement.querySelectorAll('[data-cssvars]:not([data-cssvars=\"out\"])'));\n\n // Store benchmark start time\n settings.__benchmark = getTimeStamp();\n\n // Exclude previously processed elements\n settings.exclude = [\n // 1. When the ponyfill is called by the MutationObserver, all\n // previously processed nodes are exluded except those that have\n // had their out/skip/src values cleared by the MutationObserver.\n // 2. When the ponyfill is called directly, only output nodes are\n // excluded. This allows the ponyfill to update skip/src nodes\n // after a previously processed link/style node has been removed.\n cssVarsObserver ? '[data-cssvars]:not([data-cssvars=\"\"])' : '[data-cssvars=\"out\"]',\n 'link[disabled]:not([data-cssvars])',\n settings.exclude\n ].filter(selector => selector).join(',');\n\n // Fix malformed custom property names (e.g. \"color\" or \"-color\")\n settings.variables = fixVarNames(settings.variables);\n\n // Reset previously processed <style> nodes if textContent has changed\n srcNodes.forEach(srcNode => {\n const hasStyleCache = srcNode.nodeName.toLowerCase() === 'style' && srcNode.__cssVars.text;\n const hasStyleChanged = hasStyleCache && srcNode.textContent !== srcNode.__cssVars.text;\n\n if (hasStyleCache && hasStyleChanged) {\n srcNode.sheet && (srcNode.sheet.disabled = false);\n srcNode.setAttribute('data-cssvars', '');\n }\n });\n\n // Direct call preparation (i.e. non-MutationObserver call)\n if (!cssVarsObserver) {\n const outNodes = [].slice.call(settings.rootElement.querySelectorAll('[data-cssvars=\"out\"]'));\n\n // Remove orphaned output nodes\n outNodes.forEach(outNode => {\n const dataGroup = outNode.getAttribute('data-cssvars-group');\n const srcNode = dataGroup ? settings.rootElement.querySelector(`[data-cssvars=\"src\"][data-cssvars-group=\"${dataGroup}\"]`) : null;\n\n if (!srcNode) {\n outNode.parentNode.removeChild(outNode);\n }\n });\n\n // Handle removed source nodes\n if (cssVarsSrcNodeCount && (srcNodes.length < cssVarsSrcNodeCount)) {\n // Update source node count\n cssVarsSrcNodeCount = srcNodes.length;\n\n // Reset variableStore\n variableStore.dom = {};\n }\n }\n }\n\n // Verify readyState to ensure all <link> and <style> nodes are available\n if (document.readyState !== 'loading') {\n // Native support\n if (isNativeSupport && settings.onlyLegacy) {\n let hasVarChange = false;\n\n // Apply settings.variables\n if (settings.updateDOM) {\n const targetElm = settings.rootElement.host || (settings.rootElement === document ? document.documentElement : settings.rootElement);\n\n // Set variables using native methods\n Object.keys(settings.variables).forEach(key => {\n const varValue = settings.variables[key];\n\n hasVarChange = hasVarChange || varValue !== getComputedStyle(targetElm).getPropertyValue(key);\n targetElm.style.setProperty(key, varValue);\n });\n }\n\n handleFinally(hasVarChange);\n }\n // Ponyfill: Handle rootElement set to a shadow host or root\n else if (!isShadowDOMReady && (settings.shadowDOM || settings.rootElement.shadowRoot || settings.rootElement.host)) {\n // Get all document-level CSS\n getCssData({\n rootElement : defaults.rootElement,\n include : defaults.include,\n exclude : settings.exclude,\n skipDisabled: false,\n onSuccess(cssText, node, url) {\n const isUserDisabled = (node.sheet || {}).disabled && !node.__cssVars;\n\n if (isUserDisabled) {\n return false;\n }\n\n cssText = cssText\n .replace(regex.cssComments, '')\n .replace(regex.cssMediaQueries, '');\n\n cssText = (cssText.match(regex.cssVarDeclRules) || []).join('');\n\n // Return only matching :root {...} blocks\n return cssText || false;\n },\n onComplete(cssText, cssArray, nodeArray) {\n // Parse variables and store in variableStore. This step\n // ensures that variableStore contains all document-level\n // custom property values for subsequent ponyfill calls.\n parseVars(cssText, {\n store : variableStore.dom,\n onWarning: handleWarning\n });\n\n isShadowDOMReady = true;\n\n // Call the ponyfill again to process the rootElement\n // initially specified. Values stored in variableStore will\n // be used to transform values in shadow host/root elements.\n cssVars(settings);\n }\n });\n }\n // Ponyfill: Process CSS\n else {\n // Set flag to prevent successive call from stacking. Using the\n // rootElement insead of `true` allows simultaneous ponyfill calls\n // using different rootElement values (e.g. document and one-or-more\n // shadowDOM nodes).\n cssVarsIsRunning = settings.rootElement;\n\n getCssData({\n rootElement : settings.rootElement,\n include : settings.include,\n exclude : settings.exclude,\n skipDisabled: false,\n onBeforeSend: settings.onBeforeSend,\n onError(xhr, node, url) {\n const responseUrl = xhr.responseURL || getFullUrl(url, location.href);\n const statusText = xhr.statusText ? `(${xhr.statusText})` : 'Unspecified Error' + (xhr.status === 0 ? ' (possibly CORS related)' : '');\n const errorMsg = `CSS XHR Error: ${responseUrl} ${xhr.status} ${statusText}`;\n\n handleError(errorMsg, node, xhr, responseUrl);\n },\n onSuccess(cssText, node, url) {\n const isUserDisabled = (node.sheet || {}).disabled && !node.__cssVars;\n\n if (isUserDisabled) {\n return false;\n }\n\n const isLink = node.nodeName.toLowerCase() === 'link';\n const isStyleImport = node.nodeName.toLowerCase() === 'style' && cssText !== node.textContent;\n const returnVal = settings.onSuccess(cssText, node, url);\n\n // Use callback return value if provided (skip CSS if false)\n cssText = returnVal !== undefined && Boolean(returnVal) === false ? '' : returnVal || cssText;\n\n // Convert relative url(...) values to absolute\n if (settings.updateURLs && (isLink || isStyleImport)) {\n cssText = fixRelativeCssUrls(cssText, url);\n }\n\n return cssText;\n },\n onComplete(cssText, cssArray, nodeArray = []) {\n const currentVars = Object.assign({}, variableStore.dom, variableStore.user);\n\n let hasVarChange = false;\n\n // Reset temporary variable store\n variableStore.job = {};\n\n // Parse CSS and variables\n nodeArray.forEach((node, i) => {\n const nodeCSS = cssArray[i];\n\n // Node data cache\n node.__cssVars = node.__cssVars || {};\n node.__cssVars.text = nodeCSS;\n\n // Only process CSS contains a custom property\n // declarations or function\n if (regex.cssVars.test(nodeCSS)) {\n try {\n const cssTree = parseCss(nodeCSS, {\n preserveStatic: settings.preserveStatic,\n removeComments: true\n });\n\n // Parse variables\n parseVars(cssTree, {\n parseHost: Boolean(settings.rootElement.host),\n store : variableStore.dom,\n onWarning: handleWarning\n });\n\n // Cache data\n node.__cssVars.tree = cssTree;\n }\n catch(err) {\n handleError(err.message, node);\n }\n }\n });\n\n // Merge DOM values with job values\n Object.assign(variableStore.job, variableStore.dom);\n\n if (settings.updateDOM) {\n // Persist user values\n Object.assign(variableStore.user, settings.variables);\n\n // Merge persisted user values with job values\n Object.assign(variableStore.job, variableStore.user);\n }\n else {\n // Merge persisted and non-persisted user values with job values\n Object.assign(variableStore.job, variableStore.user, settings.variables);\n\n // Update currentVars with non-persisted user values\n Object.assign(currentVars, settings.variables);\n }\n\n // Detect new variable declaration or changed value\n hasVarChange =\n // Ponyfill has been called before with updateDOM\n counters.job > 0 &&\n // New/Change\n Boolean(\n // New declaration\n (Object.keys(variableStore.job).length > Object.keys(currentVars).length) ||\n // Changed declaration value\n Boolean(\n // Previous declarations exist\n Object.keys(currentVars).length &&\n // At least one job value does has changed\n Object.keys(variableStore.job).some(key => variableStore.job[key] !== currentVars[key])\n )\n );\n\n // New variable declaration or modified value detected\n if (hasVarChange) {\n resetCssNodes(settings.rootElement);\n cssVars(settings);\n }\n // No variable changes detected\n else {\n const outCssArray = [];\n const outNodeArray = [];\n\n let hasKeyframesWithVars = false;\n\n // Increment job\n if (settings.updateDOM) {\n counters.job++;\n }\n\n nodeArray.forEach((node, i) => {\n let isSkip = !node.__cssVars.tree;\n\n if (node.__cssVars.tree) {\n try {\n transformCss(node.__cssVars.tree, Object.assign({}, settings, {\n variables: variableStore.job,\n onWarning: handleWarning\n }));\n\n const outCss = stringifyCss(node.__cssVars.tree);\n\n if (settings.updateDOM) {\n const nodeCSS = cssArray[i];\n const hasCSSVarFunc = regex.cssVarFunc.test(nodeCSS);\n\n if (!node.getAttribute('data-cssvars')) {\n node.setAttribute('data-cssvars', 'src');\n }\n\n if (outCss.length && hasCSSVarFunc) {\n const dataGroup = node.getAttribute('data-cssvars-group') || ++counters.group;\n const outCssNoSpaces = outCss.replace(/\\s/g,'');\n const outNode = settings.rootElement.querySelector(`[data-cssvars=\"out\"][data-cssvars-group=\"${dataGroup}\"]`) || document.createElement('style');\n\n hasKeyframesWithVars = hasKeyframesWithVars || regex.cssKeyframes.test(outCss);\n\n // Disable source stylesheet\n if (settings.preserveStatic) {\n node.sheet && (node.sheet.disabled = true);\n }\n\n if (!outNode.hasAttribute('data-cssvars')) {\n outNode.setAttribute('data-cssvars', 'out');\n }\n\n // Non-transformed CSS\n if (outCssNoSpaces === node.textContent.replace(/\\s/g,'')) {\n isSkip = true;\n\n if (outNode && outNode.parentNode) {\n node.removeAttribute('data-cssvars-group');\n outNode.parentNode.removeChild(outNode);\n }\n }\n // Transformed CSS\n else if (outCssNoSpaces !== outNode.textContent.replace(/\\s/g,'')) {\n [node, outNode].forEach(n => {\n n.setAttribute('data-cssvars-job', counters.job);\n n.setAttribute('data-cssvars-group', dataGroup);\n });\n outNode.textContent = outCss;\n outCssArray.push(outCss);\n outNodeArray.push(outNode);\n\n if (!outNode.parentNode) {\n node.parentNode.insertBefore(outNode, node.nextSibling);\n }\n }\n }\n }\n else {\n if (node.textContent.replace(/\\s/g,'') !== outCss) {\n outCssArray.push(outCss);\n }\n }\n }\n catch(err) {\n handleError(err.message, node);\n }\n }\n\n if (isSkip) {\n node.setAttribute('data-cssvars', 'skip');\n }\n\n if (!node.hasAttribute('data-cssvars-job')) {\n node.setAttribute('data-cssvars-job', counters.job);\n }\n });\n\n // Update source node count\n cssVarsSrcNodeCount = settings.rootElement.querySelectorAll('[data-cssvars]:not([data-cssvars=\"out\"])').length;\n\n // Process shadow DOM\n if (settings.shadowDOM) {\n const elms = []\n .concat(settings.rootElement)\n .concat([].slice.call(settings.rootElement.querySelectorAll('*')));\n\n // Iterates over all elements in rootElement and calls\n // cssVars on each shadowRoot, passing document-level\n // custom properties as options.variables.\n for (let i = 0, elm; (elm = elms[i]); ++i) {\n if (elm.shadowRoot && elm.shadowRoot.querySelector('style')) {\n const shadowSettings = Object.assign({}, settings, {\n rootElement: elm.shadowRoot\n });\n\n cssVars(shadowSettings);\n }\n }\n }\n\n // Fix keyframes\n if (settings.updateDOM && hasKeyframesWithVars) {\n fixKeyframes(settings.rootElement);\n }\n\n // Reset running flag. Must be done before onComplete\n // callback to avoid a callback error preventing the\n // flag from being reset after the callback.\n cssVarsIsRunning = false;\n\n // Callbacks\n settings.onComplete(\n outCssArray.join(''),\n outNodeArray,\n JSON.parse(JSON.stringify(variableStore.job)),\n getTimeStamp() - settings.__benchmark\n );\n\n handleFinally(outNodeArray.length);\n }\n }\n });\n }\n }\n // Delay function until DOMContentLoaded event is fired\n /* istanbul ignore next */\n else {\n document.addEventListener('DOMContentLoaded', function init(evt) {\n cssVars(options);\n\n document.removeEventListener('DOMContentLoaded', init);\n });\n }\n}\n\n// Ponyfill reset\ncssVars.reset = function() {\n // Reset counters\n counters.job = 0;\n counters.group = 0;\n\n // Reset running flag\n cssVarsIsRunning = false;\n\n // Disconnect MutationObserver\n if (cssVarsObserver) {\n cssVarsObserver.disconnect();\n cssVarsObserver = null;\n }\n\n // Reset source node count\n cssVarsSrcNodeCount = 0;\n\n // Reset debounce timer\n debounceTimer = null;\n\n // Reset shadowDOM ready flag\n isShadowDOMReady = false;\n\n // Reset variable storage\n for (const prop in variableStore) {\n variableStore[prop] = {};\n }\n};\n\n\n// Functions (Private)\n// =============================================================================\n/**\n * Creates mutation observer that executes the ponyfill when a <link> or <style>\n * DOM mutation is observed.\n *\n * @param {object} settings\n */\nfunction addMutationObserver(settings) {\n function isDisabled(node) {\n const isDisabledAttr = isLink(node) && node.hasAttribute('disabled');\n const isDisabledSheet = (node.sheet || {}).disabled;\n\n return isDisabledAttr || isDisabledSheet;\n }\n function isLink(node) {\n const isStylesheet = node.nodeName.toLowerCase() === 'link' && (node.getAttribute('rel') || '').indexOf('stylesheet') !== -1;\n\n return isStylesheet;\n }\n function isStyle(node) {\n return node.nodeName.toLowerCase() === 'style';\n }\n function isValidAttributeMutation(mutation) {\n let isValid = false;\n\n if (mutation.type === 'attributes' && isLink(mutation.target) && !isDisabled(mutation.target)) {\n const isEnabledMutation = mutation.attributeName === 'disabled';\n const isHrefMutation = mutation.attributeName === 'href';\n const isSkipNode = mutation.target.getAttribute('data-cssvars') === 'skip';\n const isSrcNode = mutation.target.getAttribute('data-cssvars') === 'src';\n\n // Enabled\n if (isEnabledMutation) {\n isValid = !isSkipNode && !isSrcNode;\n }\n // Href\n else if (isHrefMutation) {\n if (isSkipNode) {\n mutation.target.setAttribute('data-cssvars', '');\n }\n else if (isSrcNode) {\n resetCssNodes(settings.rootElement, true);\n }\n\n isValid = true;\n }\n }\n\n return isValid;\n }\n function isValidStyleTextMutation(mutation) {\n let isValid = false;\n\n if (mutation.type === 'childList') {\n const isStyleElm = isStyle(mutation.target);\n const isOutNode = mutation.target.getAttribute('data-cssvars') === 'out';\n\n isValid = isStyleElm && !isOutNode;\n }\n\n return isValid;\n }\n function isValidAddMutation(mutation) {\n let isValid = false;\n\n if (mutation.type === 'childList') {\n isValid = [].slice.call(mutation.addedNodes).some(node => {\n const isElm = node.nodeType === 1;\n const hasAttr = isElm && node.hasAttribute('data-cssvars');\n const isStyleWithVars = isStyle(node) && regex.cssVars.test(node.textContent);\n const isValid = !hasAttr && (isLink(node) || isStyleWithVars);\n\n return isValid && !isDisabled(node);\n });\n }\n\n return isValid;\n }\n function isValidRemoveMutation(mutation) {\n let isValid = false;\n\n if (mutation.type === 'childList') {\n isValid = [].slice.call(mutation.removedNodes).some(node => {\n const isElm = node.nodeType === 1;\n const isOutNode = isElm && node.getAttribute('data-cssvars') === 'out';\n const isSrcNode = isElm && node.getAttribute('data-cssvars') === 'src';\n const isValid = isSrcNode;\n\n if (isSrcNode || isOutNode) {\n const dataGroup = node.getAttribute('data-cssvars-group');\n const orphanNode = settings.rootElement.querySelector(`[data-cssvars-group=\"${dataGroup}\"]`);\n\n if (isSrcNode) {\n resetCssNodes(settings.rootElement, true);\n }\n\n if (orphanNode) {\n orphanNode.parentNode.removeChild(orphanNode);\n }\n }\n\n return isValid;\n });\n }\n\n return isValid;\n }\n\n if (!window.MutationObserver) {\n return;\n }\n\n if (cssVarsObserver) {\n cssVarsObserver.disconnect();\n cssVarsObserver = null;\n }\n\n cssVarsObserver = new MutationObserver(function(mutations) {\n const hasValidMutation = mutations.some((mutation) => {\n return (\n isValidAttributeMutation(mutation) ||\n isValidStyleTextMutation(mutation) ||\n isValidAddMutation(mutation) ||\n isValidRemoveMutation(mutation)\n );\n });\n\n if (hasValidMutation) {\n cssVars(settings);\n }\n });\n\n cssVarsObserver.observe(document.documentElement, {\n attributes : true,\n attributeFilter: ['disabled', 'href'],\n childList : true,\n subtree : true\n });\n}\n\n/**\n * Debounces cssVars() calls\n *\n * @param {object} settings\n */\nfunction cssVarsDebounced(settings, delay = 100) {\n clearTimeout(debounceTimer);\n debounceTimer = setTimeout(function() {\n settings.__benchmark = null;\n cssVars(settings);\n }, delay);\n}\n\n/**\n * Fixes issue with keyframe properties set using CSS custom property not being\n * applied properly in some legacy (IE) and modern (Safari) browsers.\n *\n * @param {object} rootElement\n */\nfunction fixKeyframes(rootElement) {\n const animationNameProp = [\n 'animation-name',\n '-moz-animation-name',\n '-webkit-animation-name'\n ].filter(prop => getComputedStyle(document.body)[prop])[0];\n\n if (animationNameProp) {\n const allNodes = [].slice.call(rootElement.querySelectorAll('*'));\n const keyframeNodes = [];\n const nameMarker = '__CSSVARSPONYFILL-KEYFRAMES__';\n\n // Modify animation name\n for (let i = 0, len = allNodes.length; i < len; i++) {\n const node = allNodes[i];\n const animationName = getComputedStyle(node)[animationNameProp];\n\n if (animationName !== 'none') {\n node.style[animationNameProp] += nameMarker;\n keyframeNodes.push(node);\n }\n }\n\n // Force reflow\n void document.body.offsetHeight;\n\n // Restore animation name\n for (let i = 0, len = keyframeNodes.length; i < len; i++) {\n const nodeStyle = keyframeNodes[i].style;\n\n nodeStyle[animationNameProp] = nodeStyle[animationNameProp].replace(nameMarker, '');\n }\n }\n}\n\n/**\n * Convert relative CSS url(...) values to absolute based on baseUrl\n *\n * @param {string} cssText\n * @param {string} baseUrl\n * @returns {string}\n */\nfunction fixRelativeCssUrls(cssText, baseUrl) {\n const cssUrls = cssText\n // Remove comments\n .replace(regex.cssComments, '')\n // Match url(...) values\n .match(regex.cssUrls) || [];\n\n cssUrls.forEach(cssUrl => {\n const oldUrl = cssUrl.replace(regex.cssUrls, '$1');\n const newUrl = getFullUrl(oldUrl, baseUrl);\n\n cssText = cssText.replace(cssUrl, cssUrl.replace(oldUrl, newUrl));\n });\n\n return cssText;\n}\n\n/**\n * Converts all object property names to leading '--' style\n *\n * @param {object} varObj Object containing CSS custom property name:value pairs\n * @returns {object}\n */\nfunction fixVarNames(varObj = {}) {\n const reLeadingHyphens = /^-{2}/;\n\n return Object.keys(varObj).reduce((obj, value) => {\n const key = reLeadingHyphens.test(value) ? value : `--${value.replace(/^-+/, '')}`;\n\n obj[key] = varObj[value];\n\n return obj;\n }, {});\n}\n\n/**\n * Returns fully qualified URL from relative URL and (optional) base URL\n *\n * @param {string} url\n * @param {string} [base=location.href]\n * @returns {string}\n */\nfunction getFullUrl(url, base = location.href) {\n const d = document.implementation.createHTMLDocument('');\n const b = d.createElement('base');\n const a = d.createElement('a');\n\n d.head.appendChild(b);\n d.body.appendChild(a);\n b.href = base;\n a.href = url;\n\n return a.href;\n}\n\n/**\n * Returns a time stamp in milliseconds\n *\n * @returns {number}\n */\nfunction getTimeStamp() {\n return isBrowser && (window.performance || {}).now ? window.performance.now() : new Date().getTime();\n}\n\nfunction resetCssNodes(rootElement, resetDOMVariableStore = false) {\n const resetNodes = [].slice.call(rootElement.querySelectorAll('[data-cssvars=\"skip\"],[data-cssvars=\"src\"]'));\n\n resetNodes.forEach(node => node.setAttribute('data-cssvars', ''));\n\n if (resetDOMVariableStore) {\n variableStore.dom = {};\n }\n}\n\n\n// Export\n// =============================================================================\nexport default cssVars;\n"],"names":["getUrls","urls","options","settings","mimeType","onBeforeSend","Function","prototype","onSuccess","onError","onComplete","urlArray","Array","isArray","urlQueue","apply","length","map","x","isValidCss","text","isString","isHTML","trim","charAt","xhr","urlIndex","responseText","returnVal","indexOf","parser","document","createElement","forEach","url","i","setAttribute","href","String","isIElte9","Boolean","all","window","atob","isIElte9CORS","host","split","location","isSameProtocol","protocol","xdr","XDomainRequest","open","timeout","onprogress","ontimeout","onload","onerror","err","setTimeout","send","console","warn","XMLHttpRequest","overrideMimeType","onreadystatechange","readyState","status","balancedMatch","balanced","a","b","str","RegExp","maybeMatch","r","range","start","end","pre","slice","body","post","reg","m","match","begs","beg","left","right","result","ai","bi","push","pop","parseCss","css","defaults","preserveStatic","removeComments","_extends","errors","error","msg","Error","re","exec","close","whitespace","comment","type","comments","cmnts","c","selector","selectorItems","hasComment","test","replace","hasCommaInQuotes","hasMultipleSelectors","s","declaration","at_rule","comment_regexp","prop","val","ret","property","value","declarations","d","decls","concat","keyframe","vals","values","at_keyframes","vendor","name","frame","frames","keyframes","at_page","sel","selectors","at_page_margin_box","at_fontface","at_supports","supports","rules","at_host","at_media","media","at_custom_m","at_document","at_x","hasVarFunc","some","decl","arr","obj","rule","hasVarDecl","filter","core","node","stylesheet","parseVars","cssData","parseHost","store","onWarning","reVarDeclSelectors","stringifyCss","tree","delim","cb","arguments","undefined","renderMethods","charset","customMedia","visit","fontFace","import","_import","join","namespace","page","pageMarginBox","nodes","buf","n","txt","walkCss","fn","VAR_PROP_IDENTIFIER","VAR_FUNC_IDENTIFIER","transformCss","preserveVars","variables","splice","resolvedValue","resolveValue","fixNestedCalc","reCalcVal","newVal","__recursiveFallback","valueData","resolveFunc","fallback","Object","hasOwnProperty","call","replacement","unresolvedFallback","isEmptyVarFunc","isBrowser","isNativeSupport","CSS","counters","group","job","rootElement","shadowDOM","include","exclude","onlyLegacy","silent","updateDOM","updateURLs","watch","onFinally","regex","cssComments","cssKeyframes","cssMediaQueries","cssUrls","cssVarDeclRules","cssVarDecls","cssVarFunc","cssVars","variableStore","dom","user","cssVarsIsRunning","cssVarsObserver","cssVarsSrcNodeCount","debounceTimer","isShadowDOMReady","msgPrefix","handleError","message","sourceNode","handleWarning","handleFinally","hasChanged","getTimeStamp","__benchmark","addMutationObserver","disconnect","cssVarsDebounced","srcNodes","querySelectorAll","fixVarNames","srcNode","hasStyleCache","nodeName","toLowerCase","__cssVars","hasStyleChanged","textContent","sheet","disabled","outNodes","outNode","dataGroup","getAttribute","querySelector","parentNode","removeChild","hasVarChange","targetElm","documentElement","keys","key","varValue","getComputedStyle","getPropertyValue","style","setProperty","shadowRoot","getCssData","skipDisabled","cssText","isUserDisabled","cssArray","nodeArray","responseUrl","responseURL","getFullUrl","statusText","errorMsg","isLink","isStyleImport","fixRelativeCssUrls","currentVars","nodeCSS","cssTree","resetCssNodes","outCssArray","outNodeArray","hasKeyframesWithVars","isSkip","outCss","hasCSSVarFunc","outCssNoSpaces","hasAttribute","removeAttribute","insertBefore","nextSibling","elms","elm","shadowSettings","fixKeyframes","JSON","parse","stringify","addEventListener","init","evt","removeEventListener","reset","isDisabled","isDisabledAttr","isDisabledSheet","isStylesheet","isStyle","isValidAttributeMutation","mutation","isValid","target","isEnabledMutation","attributeName","isHrefMutation","isSkipNode","isSrcNode","isValidStyleTextMutation","isStyleElm","isOutNode","isValidAddMutation","addedNodes","isElm","nodeType","hasAttr","isStyleWithVars","isValidRemoveMutation","removedNodes","orphanNode","MutationObserver","mutations","hasValidMutation","observe","attributes","attributeFilter","childList","subtree","delay","clearTimeout","animationNameProp","allNodes","keyframeNodes","nameMarker","len","animationName","offsetHeight","nodeStyle","baseUrl","cssUrl","oldUrl","newUrl","varObj","reLeadingHyphens","reduce","base","implementation","createHTMLDocument","head","appendChild","performance","now","Date","getTime","resetDOMVariableStore","resetNodes"],"mappings":"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"}