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

1592 lines
64 KiB
JavaScript
Raw Permalink Normal View History

2024-07-16 14:55:36 +00:00
/*!
* css-vars-ponyfill
* v2.4.9
* https://jhildenbiddle.github.io/css-vars-ponyfill/
* (c) 2018-2024 John Hildenbiddle <http://hildenbiddle.com>
* MIT license
*/
function _extends() {
_extends = Object.assign ? Object.assign.bind() : function(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
return _extends.apply(this, arguments);
}
/*!
* get-css-data
* v2.1.0
* https://github.com/jhildenbiddle/get-css-data
* (c) 2018-2022 John Hildenbiddle <http://hildenbiddle.com>
* MIT license
*/ function getUrls(urls) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var settings = {
mimeType: options.mimeType || null,
onBeforeSend: options.onBeforeSend || Function.prototype,
onSuccess: options.onSuccess || Function.prototype,
onError: options.onError || Function.prototype,
onComplete: options.onComplete || Function.prototype
};
var urlArray = Array.isArray(urls) ? urls : [ urls ];
var urlQueue = Array.apply(null, Array(urlArray.length)).map((function(x) {
return null;
}));
function isValidCss(text) {
var isString = typeof text === "string";
var isHTML = isString && text.trim().charAt(0) === "<";
return isString && !isHTML;
}
function onError(xhr, urlIndex) {
settings.onError(xhr, urlArray[urlIndex], urlIndex);
}
function onSuccess(responseText, urlIndex) {
var returnVal = settings.onSuccess(responseText, urlArray[urlIndex], urlIndex);
responseText = returnVal === false ? "" : returnVal || responseText;
urlQueue[urlIndex] = responseText;
if (urlQueue.indexOf(null) === -1) {
settings.onComplete(urlQueue);
}
}
var parser = document.createElement("a");
urlArray.forEach((function(url, i) {
parser.setAttribute("href", url);
parser.href = String(parser.href);
var isIElte9 = Boolean(document.all && !window.atob);
var isIElte9CORS = isIElte9 && parser.host.split(":")[0] !== location.host.split(":")[0];
if (isIElte9CORS) {
var isSameProtocol = parser.protocol === location.protocol;
if (isSameProtocol) {
var xdr = new XDomainRequest;
xdr.open("GET", url);
xdr.timeout = 0;
xdr.onprogress = Function.prototype;
xdr.ontimeout = Function.prototype;
xdr.onload = function() {
var text = xdr.responseText;
if (isValidCss(text)) {
onSuccess(text, i);
} else {
onError(xdr, i);
}
};
xdr.onerror = function(err) {
onError(xdr, i);
};
setTimeout((function() {
xdr.send();
}), 0);
} else {
console.warn("Internet Explorer 9 Cross-Origin (CORS) requests must use the same protocol (".concat(url, ")"));
onError(null, i);
}
} else {
var xhr = new XMLHttpRequest;
xhr.open("GET", url);
if (settings.mimeType && xhr.overrideMimeType) {
xhr.overrideMimeType(settings.mimeType);
}
settings.onBeforeSend(xhr, url, i);
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
var text = xhr.responseText;
if (xhr.status < 400 && isValidCss(text)) {
onSuccess(text, i);
} else if (xhr.status === 0 && isValidCss(text)) {
onSuccess(text, i);
} else {
onError(xhr, i);
}
}
};
xhr.send();
}
}));
}
/**
* Gets CSS data from <style> and <link> nodes (including @imports), then
* returns data in order processed by DOM. Allows specifying nodes to
* include/exclude and filtering CSS data using RegEx.
*
* @preserve
* @param {object} [options] The options object
* @param {object} [options.rootElement=document] Root element to traverse for
* <link> and <style> nodes.
* @param {string} [options.include] CSS selector matching <link> and <style>
* nodes to include
* @param {string} [options.exclude] CSS selector matching <link> and <style>
* nodes to exclude
* @param {object} [options.filter] Regular expression used to filter node CSS
* data. Each block of CSS data is tested against the filter,
* and only matching data is included.
* @param {boolean} [options.skipDisabled=true] Determines if disabled
* stylesheets will be skipped while collecting CSS data.
* @param {boolean} [options.useCSSOM=false] Determines if CSS data will be
* collected from a stylesheet's runtime values instead of its
* text content. This is required to get accurate CSS data
* when a stylesheet has been modified using the deleteRule()
* or insertRule() methods because these modifications will
* not be reflected in the stylesheet's text content.
* @param {function} [options.onBeforeSend] Callback before XHR is sent. Passes
* 1) the XHR object, 2) source node reference, and 3) the
* source URL as arguments.
* @param {function} [options.onSuccess] Callback on each CSS node read. Passes
* 1) CSS text, 2) source node reference, and 3) the source
* URL as arguments.
* @param {function} [options.onError] Callback on each error. Passes 1) the XHR
* object for inspection, 2) soure node reference, and 3) the
* source URL that failed (either a <link> href or an @import)
* as arguments
* @param {function} [options.onComplete] Callback after all nodes have been
* processed. Passes 1) concatenated CSS text, 2) an array of
* CSS text in DOM order, and 3) an array of nodes in DOM
* order as arguments.
*
* @example
*
* getCssData({
* rootElement : document,
* include : 'style,link[rel="stylesheet"]',
* exclude : '[href="skip.css"]',
* filter : /red/,
* skipDisabled: true,
* useCSSOM : false,
* onBeforeSend(xhr, node, url) {
* // ...
* }
* onSuccess(cssText, node, url) {
* // ...
* }
* onError(xhr, node, url) {
* // ...
* },
* onComplete(cssText, cssArray, nodeArray) {
* // ...
* }
* });
*/ function getCssData(options) {
var regex = {
cssComments: /\/\*[\s\S]+?\*\//g,
cssImports: /(?:@import\s*)(?:url\(\s*)?(?:['"])([^'"]*)(?:['"])(?:\s*\))?(?:[^;]*;)/g
};
var settings = {
rootElement: options.rootElement || document,
include: options.include || 'style,link[rel="stylesheet"]',
exclude: options.exclude || null,
filter: options.filter || null,
skipDisabled: options.skipDisabled !== false,
useCSSOM: options.useCSSOM || false,
onBeforeSend: options.onBeforeSend || Function.prototype,
onSuccess: options.onSuccess || Function.prototype,
onError: options.onError || Function.prototype,
onComplete: options.onComplete || Function.prototype
};
var sourceNodes = Array.apply(null, settings.rootElement.querySelectorAll(settings.include)).filter((function(node) {
return !matchesSelector(node, settings.exclude);
}));
var cssArray = Array.apply(null, Array(sourceNodes.length)).map((function(x) {
return null;
}));
function handleComplete() {
var isComplete = cssArray.indexOf(null) === -1;
if (isComplete) {
cssArray.reduce((function(skipIndices, value, i) {
if (value === "") {
skipIndices.push(i);
}
return skipIndices;
}), []).reverse().forEach((function(skipIndex) {
return [ sourceNodes, cssArray ].forEach((function(arr) {
return arr.splice(skipIndex, 1);
}));
}));
var cssText = cssArray.join("");
settings.onComplete(cssText, cssArray, sourceNodes);
}
}
function handleSuccess(cssText, cssIndex, node, sourceUrl) {
var returnVal = settings.onSuccess(cssText, node, sourceUrl);
cssText = returnVal !== undefined && Boolean(returnVal) === false ? "" : returnVal || cssText;
resolveImports(cssText, node, sourceUrl, (function(resolvedCssText, errorData) {
if (cssArray[cssIndex] === null) {
errorData.forEach((function(data) {
return settings.onError(data.xhr, node, data.url);
}));
if (!settings.filter || settings.filter.test(resolvedCssText)) {
cssArray[cssIndex] = resolvedCssText;
} else {
cssArray[cssIndex] = "";
}
handleComplete();
}
}));
}
function parseImportData(cssText, baseUrl) {
var ignoreRules = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
var importData = {};
importData.rules = (cssText.replace(regex.cssComments, "").match(regex.cssImports) || []).filter((function(rule) {
return ignoreRules.indexOf(rule) === -1;
}));
importData.urls = importData.rules.map((function(rule) {
return rule.replace(regex.cssImports, "$1");
}));
importData.absoluteUrls = importData.urls.map((function(url) {
return getFullUrl$1(url, baseUrl);
}));
importData.absoluteRules = importData.rules.map((function(rule, i) {
var oldUrl = importData.urls[i];
var newUrl = getFullUrl$1(importData.absoluteUrls[i], baseUrl);
return rule.replace(oldUrl, newUrl);
}));
return importData;
}
function resolveImports(cssText, node, baseUrl, callbackFn) {
var __errorData = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];
var __errorRules = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : [];
var importData = parseImportData(cssText, baseUrl, __errorRules);
if (importData.rules.length) {
getUrls(importData.absoluteUrls, {
onBeforeSend: function onBeforeSend(xhr, url, urlIndex) {
settings.onBeforeSend(xhr, node, url);
},
onSuccess: function onSuccess(cssText, url, urlIndex) {
var returnVal = settings.onSuccess(cssText, node, url);
cssText = returnVal === false ? "" : returnVal || cssText;
var responseImportData = parseImportData(cssText, url, __errorRules);
responseImportData.rules.forEach((function(rule, i) {
cssText = cssText.replace(rule, responseImportData.absoluteRules[i]);
}));
return cssText;
},
onError: function onError(xhr, url, urlIndex) {
__errorData.push({
xhr: xhr,
url: url
});
__errorRules.push(importData.rules[urlIndex]);
resolveImports(cssText, node, baseUrl, callbackFn, __errorData, __errorRules);
},
onComplete: function onComplete(responseArray) {
responseArray.forEach((function(importText, i) {
cssText = cssText.replace(importData.rules[i], importText);
}));
resolveImports(cssText, node, baseUrl, callbackFn, __errorData, __errorRules);
}
});
} else {
callbackFn(cssText, __errorData);
}
}
if (sourceNodes.length) {
sourceNodes.forEach((function(node, i) {
var linkHref = node.getAttribute("href");
var linkRel = node.getAttribute("rel");
var isLink = node.nodeName.toLowerCase() === "link" && linkHref && linkRel && linkRel.toLowerCase().indexOf("stylesheet") !== -1;
var isSkip = settings.skipDisabled === false ? false : node.disabled;
var isStyle = node.nodeName.toLowerCase() === "style";
if (isLink && !isSkip) {
var isURIScheme = linkHref.indexOf("data:text/css") !== -1;
if (isURIScheme) {
var cssText = decodeURIComponent(linkHref.substring(linkHref.indexOf(",") + 1));
if (settings.useCSSOM) {
cssText = Array.apply(null, node.sheet.cssRules).map((function(rule) {
return rule.cssText;
})).join("");
}
handleSuccess(cssText, i, node, location.href);
} else {
getUrls(linkHref, {
mimeType: "text/css",
onBeforeSend: function onBeforeSend(xhr, url, urlIndex) {
settings.onBeforeSend(xhr, node, url);
},
onSuccess: function onSuccess(cssText, url, urlIndex) {
var sourceUrl = getFullUrl$1(linkHref);
handleSuccess(cssText, i, node, sourceUrl);
},
onError: function onError(xhr, url, urlIndex) {
cssArray[i] = "";
settings.onError(xhr, node, url);
handleComplete();
}
});
}
} else if (isStyle && !isSkip) {
var _cssText = node.textContent;
if (settings.useCSSOM) {
_cssText = Array.apply(null, node.sheet.cssRules).map((function(rule) {
return rule.cssText;
})).join("");
}
handleSuccess(_cssText, i, node, location.href);
} else {
cssArray[i] = "";
handleComplete();
}
}));
} else {
settings.onComplete("", []);
}
}
function getFullUrl$1(url, base) {
var d = document.implementation.createHTMLDocument("");
var b = d.createElement("base");
var a = d.createElement("a");
d.head.appendChild(b);
d.body.appendChild(a);
b.href = base || document.baseURI || (document.querySelector("base") || {}).href || location.href;
a.href = url;
return a.href;
}
function matchesSelector(elm, selector) {
var matches = elm.matches || elm.matchesSelector || elm.webkitMatchesSelector || elm.mozMatchesSelector || elm.msMatchesSelector || elm.oMatchesSelector;
return matches.call(elm, selector);
}
var balancedMatch = balanced;
function balanced(a, b, str) {
if (a instanceof RegExp) a = maybeMatch(a, str);
if (b instanceof RegExp) b = maybeMatch(b, str);
var r = range(a, b, str);
return r && {
start: r[0],
end: r[1],
pre: str.slice(0, r[0]),
body: str.slice(r[0] + a.length, r[1]),
post: str.slice(r[1] + b.length)
};
}
function maybeMatch(reg, str) {
var m = str.match(reg);
return m ? m[0] : null;
}
balanced.range = range;
function range(a, b, str) {
var begs, beg, left, right, result;
var ai = str.indexOf(a);
var bi = str.indexOf(b, ai + 1);
var i = ai;
if (ai >= 0 && bi > 0) {
if (a === b) {
return [ ai, bi ];
}
begs = [];
left = str.length;
while (i >= 0 && !result) {
if (i == ai) {
begs.push(i);
ai = str.indexOf(a, i + 1);
} else if (begs.length == 1) {
result = [ begs.pop(), bi ];
} else {
beg = begs.pop();
if (beg < left) {
left = beg;
right = bi;
}
bi = str.indexOf(b, i + 1);
}
i = ai < bi && ai >= 0 ? ai : bi;
}
if (begs.length) {
result = [ left, right ];
}
}
return result;
}
function parseCss(css) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var defaults = {
preserveStatic: true,
removeComments: false
};
var settings = _extends({}, defaults, options);
var errors = [];
function error(msg) {
throw new Error("CSS parse error: ".concat(msg));
}
function match(re) {
var m = re.exec(css);
if (m) {
css = css.slice(m[0].length);
return m;
}
}
function open() {
return match(/^{\s*/);
}
function close() {
return match(/^}/);
}
function whitespace() {
match(/^\s*/);
}
function comment() {
whitespace();
if (css[0] !== "/" || css[1] !== "*") {
return;
}
var i = 2;
while (css[i] && (css[i] !== "*" || css[i + 1] !== "/")) {
i++;
}
if (!css[i]) {
return error("end of comment is missing");
}
var str = css.slice(2, i);
css = css.slice(i + 2);
return {
type: "comment",
comment: str
};
}
function comments() {
var cmnts = [];
var c;
while (c = comment()) {
cmnts.push(c);
}
return settings.removeComments ? [] : cmnts;
}
function selector() {
whitespace();
while (css[0] === "}") {
error("extra closing bracket");
}
var m = match(/^(("(?:\\"|[^"])*"|'(?:\\'|[^'])*'|[^{])+)/);
if (m) {
var _selector = m[0].trim();
var selectorItems;
var hasComment = /\/\*/.test(_selector);
if (hasComment) {
_selector = _selector.replace(/\/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*\/+/g, "");
}
var hasCommaInQuotes = /["']\w*,\w*["']/.test(_selector);
if (hasCommaInQuotes) {
_selector = _selector.replace(/"(?:\\"|[^"])*"|'(?:\\'|[^'])*'/g, (function(m) {
return m.replace(/,/g, "");
}));
}
var hasMultipleSelectors = /,/.test(_selector);
if (hasMultipleSelectors) {
selectorItems = _selector.split(/\s*(?![^(]*\)),\s*/);
} else {
selectorItems = [ _selector ];
}
if (hasCommaInQuotes) {
selectorItems = selectorItems.map((function(s) {
return s.replace(/\u200C/g, ",");
}));
}
return selectorItems;
}
}
function declaration() {
if (css[0] === "@") {
return at_rule();
}
match(/^([;\s]*)+/);
var comment_regexp = /\/\*[^*]*\*+([^/*][^*]*\*+)*\//g;
var prop = match(/^(\*?[-#/*\\\w.]+(\[[0-9a-z_-]+\])?)\s*/);
if (!prop) {
return;
}
prop = prop[0].trim();
if (!match(/^:\s*/)) {
return error("property missing ':'");
}
var val = match(/^((?:\/\*.*?\*\/|'(?:\\'|.)*?'|"(?:\\"|.)*?"|\((\s*'(?:\\'|.)*?'|"(?:\\"|.)*?"|[^)]*?)\s*\)|[^};])+)/);
var ret = {
type: "declaration",
property: prop.replace(comment_regexp, ""),
value: val ? val[0].replace(comment_regexp, "").trim() : ""
};
match(/^[;\s]*/);
return ret;
}
function declarations() {
if (!open()) {
return error("missing '{'");
}
var d;
var decls = comments();
while (d = declaration()) {
decls.push(d);
decls = decls.concat(comments());
}
if (!close()) {
return error("missing '}'");
}
return decls;
}
function keyframe() {
whitespace();
var vals = [];
var m;
while (m = match(/^((\d+\.\d+|\.\d+|\d+)%?|[a-z]+)\s*/)) {
vals.push(m[1]);
match(/^,\s*/);
}
if (vals.length) {
return {
type: "keyframe",
values: vals,
declarations: declarations()
};
}
}
function at_keyframes() {
var m = match(/^@([-\w]+)?keyframes\s*/);
if (!m) {
return;
}
var vendor = m[1];
m = match(/^([-\w]+)\s*/);
if (!m) {
return error("@keyframes missing name");
}
var name = m[1];
if (!open()) {
return error("@keyframes missing '{'");
}
var frame;
var frames = comments();
while (frame = keyframe()) {
frames.push(frame);
frames = frames.concat(comments());
}
if (!close()) {
return error("@keyframes missing '}'");
}
return {
type: "keyframes",
name: name,
vendor: vendor,
keyframes: frames
};
}
function at_page() {
var m = match(/^@page */);
if (m) {
var sel = selector() || [];
return {
type: "page",
selectors: sel,
declarations: declarations()
};
}
}
function at_page_margin_box() {
var m = match(/@(top|bottom|left|right)-(left|center|right|top|middle|bottom)-?(corner)?\s*/);
if (m) {
var name = "".concat(m[1], "-").concat(m[2]) + (m[3] ? "-".concat(m[3]) : "");
return {
type: "page-margin-box",
name: name,
declarations: declarations()
};
}
}
function at_fontface() {
var m = match(/^@font-face\s*/);
if (m) {
return {
type: "font-face",
declarations: declarations()
};
}
}
function at_supports() {
var m = match(/^@supports *([^{]+)/);
if (m) {
return {
type: "supports",
supports: m[1].trim(),
rules: rules()
};
}
}
function at_host() {
var m = match(/^@host\s*/);
if (m) {
return {
type: "host",
rules: rules()
};
}
}
function at_media() {
var m = match(/^@media([^{]+)*/);
if (m) {
return {
type: "media",
media: (m[1] || "").trim(),
rules: rules()
};
}
}
function at_custom_m() {
var m = match(/^@custom-media\s+(--[^\s]+)\s*([^{;]+);/);
if (m) {
return {
type: "custom-media",
name: m[1].trim(),
media: m[2].trim()
};
}
}
function at_document() {
var m = match(/^@([-\w]+)?document *([^{]+)/);
if (m) {
return {
type: "document",
document: m[2].trim(),
vendor: m[1] ? m[1].trim() : null,
rules: rules()
};
}
}
function at_x() {
var m = match(/^@(import|charset|namespace)\s*([^;]+);/);
if (m) {
return {
type: m[1],
name: m[2].trim()
};
}
}
function at_rule() {
whitespace();
if (css[0] === "@") {
var ret = at_x() || at_fontface() || at_media() || at_keyframes() || at_supports() || at_document() || at_custom_m() || at_host() || at_page() || at_page_margin_box();
if (ret && !settings.preserveStatic) {
var hasVarFunc = false;
if (ret.declarations) {
hasVarFunc = ret.declarations.some((function(decl) {
return /var\(/.test(decl.value);
}));
} else {
var arr = ret.keyframes || ret.rules || [];
hasVarFunc = arr.some((function(obj) {
return (obj.declarations || []).some((function(decl) {
return /var\(/.test(decl.value);
}));
}));
}
return hasVarFunc ? ret : {};
}
return ret;
}
}
function rule() {
if (!settings.preserveStatic) {
var balancedMatch$1 = balancedMatch("{", "}", css);
if (balancedMatch$1) {
var hasVarDecl = /:(?:root|host)(?![.:#(])/.test(balancedMatch$1.pre) && /--\S*\s*:/.test(balancedMatch$1.body);
var hasVarFunc = /var\(/.test(balancedMatch$1.body);
if (!hasVarDecl && !hasVarFunc) {
css = css.slice(balancedMatch$1.end + 1);
return {};
}
}
}
var sel = selector() || [];
var decls = settings.preserveStatic ? declarations() : declarations().filter((function(decl) {
var hasVarDecl = sel.some((function(s) {
return /:(?:root|host)(?![.:#(])/.test(s);
})) && /^--\S/.test(decl.property);
var hasVarFunc = /var\(/.test(decl.value);
return hasVarDecl || hasVarFunc;
}));
if (!sel.length) {
error("selector missing");
}
return {
type: "rule",
selectors: sel,
declarations: decls
};
}
function rules(core) {
if (!core && !open()) {
return error("missing '{'");
}
var node;
var rules = comments();
while (css.length && (core || css[0] !== "}") && (node = at_rule() || rule())) {
if (node.type) {
rules.push(node);
}
rules = rules.concat(comments());
}
if (!core && !close()) {
return error("missing '}'");
}
return rules;
}
return {
type: "stylesheet",
stylesheet: {
rules: rules(true),
errors: errors
}
};
}
function parseVars(cssData) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var defaults = {
parseHost: false,
store: {},
onWarning: function onWarning() {}
};
var settings = _extends({}, defaults, options);
var reVarDeclSelectors = new RegExp(":".concat(settings.parseHost ? "host" : "root", "$"));
if (typeof cssData === "string") {
cssData = parseCss(cssData, settings);
}
cssData.stylesheet.rules.forEach((function(rule) {
if (rule.type !== "rule" || !rule.selectors.some((function(s) {
return reVarDeclSelectors.test(s);
}))) {
return;
}
rule.declarations.forEach((function(decl, i) {
var prop = decl.property;
var value = decl.value;
if (prop && prop.indexOf("--") === 0) {
settings.store[prop] = value;
}
}));
}));
return settings.store;
}
function stringifyCss(tree) {
var delim = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
var cb = arguments.length > 2 ? arguments[2] : undefined;
var renderMethods = {
charset: function charset(node) {
return "@charset " + node.name + ";";
},
comment: function comment(node) {
return node.comment.indexOf("__CSSVARSPONYFILL") === 0 ? "/*" + node.comment + "*/" : "";
},
"custom-media": function customMedia(node) {
return "@custom-media " + node.name + " " + node.media + ";";
},
declaration: function declaration(node) {
return node.property + ":" + node.value + ";";
},
document: function document(node) {
return "@" + (node.vendor || "") + "document " + node.document + "{" + visit(node.rules) + "}";
},
"font-face": function fontFace(node) {
return "@font-face" + "{" + visit(node.declarations) + "}";
},
host: function host(node) {
return "@host" + "{" + visit(node.rules) + "}";
},
import: function _import(node) {
return "@import " + node.name + ";";
},
keyframe: function keyframe(node) {
return node.values.join(",") + "{" + visit(node.declarations) + "}";
},
keyframes: function keyframes(node) {
return "@" + (node.vendor || "") + "keyframes " + node.name + "{" + visit(node.keyframes) + "}";
},
media: function media(node) {
return "@media " + node.media + "{" + visit(node.rules) + "}";
},
namespace: function namespace(node) {
return "@namespace " + node.name + ";";
},
page: function page(node) {
return "@page " + (node.selectors.length ? node.selectors.join(", ") : "") + "{" + visit(node.declarations) + "}";
},
"page-margin-box": function pageMarginBox(node) {
return "@" + node.name + "{" + visit(node.declarations) + "}";
},
rule: function rule(node) {
var decls = node.declarations;
if (decls.length) {
return node.selectors.join(",") + "{" + visit(decls) + "}";
}
},
supports: function supports(node) {
return "@supports " + node.supports + "{" + visit(node.rules) + "}";
}
};
function visit(nodes) {
var buf = "";
for (var i = 0; i < nodes.length; i++) {
var n = nodes[i];
if (cb) {
cb(n);
}
var txt = renderMethods[n.type](n);
if (txt) {
buf += txt;
if (txt.length && n.selectors) {
buf += delim;
}
}
}
return buf;
}
return visit(tree.stylesheet.rules);
}
function walkCss(node, fn) {
node.rules.forEach((function(rule) {
if (rule.rules) {
walkCss(rule, fn);
return;
}
if (rule.keyframes) {
rule.keyframes.forEach((function(keyframe) {
if (keyframe.type === "keyframe") {
fn(keyframe.declarations, rule);
}
}));
return;
}
if (!rule.declarations) {
return;
}
fn(rule.declarations, node);
}));
}
var VAR_PROP_IDENTIFIER = "--";
var VAR_FUNC_IDENTIFIER = "var";
function transformCss(cssData) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var defaults = {
preserveStatic: true,
preserveVars: false,
variables: {},
onWarning: function onWarning() {}
};
var settings = _extends({}, defaults, options);
if (typeof cssData === "string") {
cssData = parseCss(cssData, settings);
}
walkCss(cssData.stylesheet, (function(declarations, node) {
for (var i = 0; i < declarations.length; i++) {
var decl = declarations[i];
var type = decl.type;
var prop = decl.property;
var value = decl.value;
if (type !== "declaration") {
continue;
}
if (!settings.preserveVars && prop && prop.indexOf(VAR_PROP_IDENTIFIER) === 0) {
declarations.splice(i, 1);
i--;
continue;
}
if (value.indexOf(VAR_FUNC_IDENTIFIER + "(") !== -1) {
var resolvedValue = resolveValue(value, settings);
if (resolvedValue !== decl.value) {
resolvedValue = fixNestedCalc(resolvedValue);
if (!settings.preserveVars) {
decl.value = resolvedValue;
} else {
declarations.splice(i, 0, {
type: type,
property: prop,
value: resolvedValue
});
i++;
}
}
}
}
}));
return stringifyCss(cssData);
}
function fixNestedCalc(value) {
var reCalcVal = /calc\(([^)]+)\)/g;
(value.match(reCalcVal) || []).forEach((function(match) {
var newVal = "calc".concat(match.split("calc").join(""));
value = value.replace(match, newVal);
}));
return value;
}
function resolveValue(value) {
var settings = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var __recursiveFallback = arguments.length > 2 ? arguments[2] : undefined;
if (value.indexOf("var(") === -1) {
return value;
}
var valueData = balancedMatch("(", ")", value);
function resolveFunc(value) {
var name = value.split(",")[0].replace(/[\s\n\t]/g, "");
var fallback = (value.match(/(?:\s*,\s*){1}(.*)?/) || [])[1];
var match = Object.prototype.hasOwnProperty.call(settings.variables, name) ? String(settings.variables[name]) : undefined;
var replacement = match || (fallback ? String(fallback) : undefined);
var unresolvedFallback = __recursiveFallback || value;
if (!match) {
settings.onWarning('variable "'.concat(name, '" is undefined'));
}
if (replacement && replacement !== "undefined" && replacement.length > 0) {
return resolveValue(replacement, settings, unresolvedFallback);
} else {
return "var(".concat(unresolvedFallback, ")");
}
}
if (!valueData) {
if (value.indexOf("var(") !== -1) {
settings.onWarning('missing closing ")" in the value "'.concat(value, '"'));
}
return value;
} else if (valueData.pre.slice(-3) === "var") {
var isEmptyVarFunc = valueData.body.trim().length === 0;
if (isEmptyVarFunc) {
settings.onWarning("var() must contain a non-whitespace string");
return value;
} else {
return valueData.pre.slice(0, -3) + resolveFunc(valueData.body) + resolveValue(valueData.post, settings);
}
} else {
return valueData.pre + "(".concat(resolveValue(valueData.body, settings), ")") + resolveValue(valueData.post, settings);
}
}
var isBrowser = typeof window !== "undefined";
var isNativeSupport = isBrowser && window.CSS && window.CSS.supports && window.CSS.supports("(--a: 0)");
var counters = {
group: 0,
job: 0
};
var defaults = {
rootElement: isBrowser ? document : null,
shadowDOM: false,
include: "style,link[rel=stylesheet]",
exclude: "",
variables: {},
onlyLegacy: true,
preserveStatic: true,
preserveVars: false,
silent: false,
updateDOM: true,
updateURLs: true,
watch: null,
onBeforeSend: function onBeforeSend() {},
onError: function onError() {},
onWarning: function onWarning() {},
onSuccess: function onSuccess() {},
onComplete: function onComplete() {},
onFinally: function onFinally() {}
};
var regex = {
cssComments: /\/\*[\s\S]+?\*\//g,
cssKeyframes: /@(?:-\w*-)?keyframes/,
cssMediaQueries: /@media[^{]+\{([\s\S]+?})\s*}/g,
cssUrls: /url\((?!['"]?(?:data|http|\/\/):)['"]?([^'")]*)['"]?\)/g,
cssVarDeclRules: /(?::(?:root|host)(?![.:#(])[\s,]*[^{]*{\s*[^}]*})/g,
cssVarDecls: /(?:[\s;]*)(-{2}\w[\w-]*)(?:\s*:\s*)([^;]*);/g,
cssVarFunc: /var\(\s*--[\w-]/,
cssVars: /(?:(?::(?:root|host)(?![.:#(])[\s,]*[^{]*{\s*[^;]*;*\s*)|(?:var\(\s*))(--[^:)]+)(?:\s*[:)])/
};
var variableStore = {
dom: {},
job: {},
user: {}
};
var cssVarsIsRunning = false;
var cssVarsObserver = null;
var cssVarsSrcNodeCount = 0;
var debounceTimer = null;
var isShadowDOMReady = false;
/**
* Fetches, parses, and transforms CSS custom properties from specified
* <style> and <link> elements into static values, then appends a new <style>
* element with static values to the DOM to provide CSS custom property
* compatibility for legacy browsers. Also provides a single interface for
* live updates of runtime values in both modern and legacy browsers.
*
* @preserve
* @param {object} [options] Options object
* @param {object} [options.rootElement=document] Root element to traverse for
* <link> and <style> nodes
* @param {boolean} [options.shadowDOM=false] Determines if shadow DOM <link>
* and <style> nodes will be processed.
* @param {string} [options.include="style,link[rel=stylesheet]"] CSS selector
* matching <link re="stylesheet"> and <style> nodes to
* process
* @param {string} [options.exclude] CSS selector matching <link
* rel="stylehseet"> and <style> nodes to exclude from those
* matches by options.include
* @param {object} [options.variables] A map of custom property name/value
* pairs. Property names can omit or include the leading
* double-hyphen (), and values specified will override
* previous values
* @param {boolean} [options.onlyLegacy=true] Determines if the ponyfill will
* only generate legacy-compatible CSS in browsers that lack
* native support (i.e., legacy browsers)
* @param {boolean} [options.preserveStatic=true] Determines if CSS
* declarations that do not reference a custom property will
* be preserved in the transformed CSS
* @param {boolean} [options.preserveVars=false] Determines if CSS custom
* property declarations will be preserved in the transformed
* CSS
* @param {boolean} [options.silent=false] Determines if warning and error
* messages will be displayed on the console
* @param {boolean} [options.updateDOM=true] Determines if the ponyfill will
* update the DOM after processing CSS custom properties
* @param {boolean} [options.updateURLs=true] Determines if relative url()
* paths will be converted to absolute urls in external CSS
* @param {boolean} [options.watch=false] Determines if a MutationObserver will
* be created that will execute the ponyfill when a <link> or
* <style> DOM mutation is observed
* @param {function} [options.onBeforeSend] Callback before XHR is sent. Passes
* 1) the XHR object, 2) source node reference, and 3) the
* source URL as arguments
* @param {function} [options.onError] Callback after a CSS parsing error has
* occurred or an XHR request has failed. Passes 1) an error
* message, and 2) source node reference, 3) xhr, and 4 url as
* arguments.
* @param {function} [options.onWarning] Callback after each CSS parsing warning
* has occurred. Passes 1) a warning message as an argument.
* @param {function} [options.onSuccess] Callback after CSS data has been
* collected from each node and before CSS custom properties
* have been transformed. Allows modifying the CSS data before
* it is transformed by returning any string value (or false
* to skip). Passes 1) CSS text, 2) source node reference, and
* 3) the source URL as arguments.
* @param {function} [options.onComplete] Callback after all CSS has been
* processed, legacy-compatible CSS has been generated, and
* (optionally) the DOM has been updated. Passes 1) a CSS
* string with CSS variable values resolved, 2) an array of
* output <style> node references that have been appended to
* the DOM, 3) an object containing all custom properies names
* and values, and 4) the ponyfill execution time in
* milliseconds.
* @param {function} [options.onFinally] Callback in modern and legacy browsers
* after the ponyfill has finished all tasks. Passes 1) a
* boolean indicating if the last ponyfill call resulted in a
* style change, 2) a boolean indicating if the current
* browser provides native support for CSS custom properties,
* and 3) the ponyfill execution time in milliseconds.
* @example
*
* cssVars({
* rootElement : document,
* shadowDOM : false,
* include : 'style,link[rel="stylesheet"]',
* exclude : '',
* variables : {},
* onlyLegacy : true,
* preserveStatic: true,
* preserveVars : false,
* silent : false,
* updateDOM : true,
* updateURLs : true,
* watch : false,
* onBeforeSend(xhr, node, url) {},
* onError(message, node, xhr, url) {},
* onWarning(message) {},
* onSuccess(cssText, node, url) {},
* onComplete(cssText, styleNode, cssVariables, benchmark) {},
* onFinally(hasChanged, hasNativeSupport, benchmark)
* });
*/ function cssVars() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var msgPrefix = "cssVars(): ";
var settings = _extends({}, defaults, options);
function handleError(message, sourceNode, xhr, url) {
if (!settings.silent && window.console) {
console.error("".concat(msgPrefix).concat(message, "\n"), sourceNode);
}
settings.onError(message, sourceNode, xhr, url);
}
function handleWarning(message) {
if (!settings.silent && window.console) {
console.warn("".concat(msgPrefix).concat(message));
}
settings.onWarning(message);
}
function handleFinally(hasChanged) {
settings.onFinally(Boolean(hasChanged), isNativeSupport, getTimeStamp() - settings.__benchmark);
}
if (!isBrowser) {
return;
}
if (settings.watch) {
settings.watch = defaults.watch;
addMutationObserver(settings);
cssVars(settings);
return;
} else if (settings.watch === false && cssVarsObserver) {
cssVarsObserver.disconnect();
cssVarsObserver = null;
}
if (!settings.__benchmark) {
if (cssVarsIsRunning === settings.rootElement) {
cssVarsDebounced(options);
return;
}
var srcNodes = [].slice.call(settings.rootElement.querySelectorAll('[data-cssvars]:not([data-cssvars="out"])'));
settings.__benchmark = getTimeStamp();
settings.exclude = [ cssVarsObserver ? '[data-cssvars]:not([data-cssvars=""])' : '[data-cssvars="out"]', "link[disabled]:not([data-cssvars])", settings.exclude ].filter((function(selector) {
return selector;
})).join(",");
settings.variables = fixVarNames(settings.variables);
srcNodes.forEach((function(srcNode) {
var hasStyleCache = srcNode.nodeName.toLowerCase() === "style" && srcNode.__cssVars.text;
var hasStyleChanged = hasStyleCache && srcNode.textContent !== srcNode.__cssVars.text;
if (hasStyleCache && hasStyleChanged) {
srcNode.sheet && (srcNode.sheet.disabled = false);
srcNode.setAttribute("data-cssvars", "");
}
}));
if (!cssVarsObserver) {
var outNodes = [].slice.call(settings.rootElement.querySelectorAll('[data-cssvars="out"]'));
outNodes.forEach((function(outNode) {
var dataGroup = outNode.getAttribute("data-cssvars-group");
var srcNode = dataGroup ? settings.rootElement.querySelector('[data-cssvars="src"][data-cssvars-group="'.concat(dataGroup, '"]')) : null;
if (!srcNode) {
outNode.parentNode.removeChild(outNode);
}
}));
if (cssVarsSrcNodeCount && srcNodes.length < cssVarsSrcNodeCount) {
cssVarsSrcNodeCount = srcNodes.length;
variableStore.dom = {};
}
}
}
if (document.readyState !== "loading") {
if (isNativeSupport && settings.onlyLegacy) {
var hasVarChange = false;
if (settings.updateDOM) {
var targetElm = settings.rootElement.host || (settings.rootElement === document ? document.documentElement : settings.rootElement);
Object.keys(settings.variables).forEach((function(key) {
var varValue = settings.variables[key];
hasVarChange = hasVarChange || varValue !== getComputedStyle(targetElm).getPropertyValue(key);
targetElm.style.setProperty(key, varValue);
}));
}
handleFinally(hasVarChange);
} else if (!isShadowDOMReady && (settings.shadowDOM || settings.rootElement.shadowRoot || settings.rootElement.host)) {
getCssData({
rootElement: defaults.rootElement,
include: defaults.include,
exclude: settings.exclude,
skipDisabled: false,
onSuccess: function onSuccess(cssText, node, url) {
var isUserDisabled = (node.sheet || {}).disabled && !node.__cssVars;
if (isUserDisabled) {
return false;
}
cssText = cssText.replace(regex.cssComments, "").replace(regex.cssMediaQueries, "");
cssText = (cssText.match(regex.cssVarDeclRules) || []).join("");
return cssText || false;
},
onComplete: function onComplete(cssText, cssArray, nodeArray) {
parseVars(cssText, {
store: variableStore.dom,
onWarning: handleWarning
});
isShadowDOMReady = true;
cssVars(settings);
}
});
} else {
cssVarsIsRunning = settings.rootElement;
getCssData({
rootElement: settings.rootElement,
include: settings.include,
exclude: settings.exclude,
skipDisabled: false,
onBeforeSend: settings.onBeforeSend,
onError: function onError(xhr, node, url) {
var responseUrl = xhr.responseURL || getFullUrl(url, location.href);
var statusText = xhr.statusText ? "(".concat(xhr.statusText, ")") : "Unspecified Error" + (xhr.status === 0 ? " (possibly CORS related)" : "");
var errorMsg = "CSS XHR Error: ".concat(responseUrl, " ").concat(xhr.status, " ").concat(statusText);
handleError(errorMsg, node, xhr, responseUrl);
},
onSuccess: function onSuccess(cssText, node, url) {
var isUserDisabled = (node.sheet || {}).disabled && !node.__cssVars;
if (isUserDisabled) {
return false;
}
var isLink = node.nodeName.toLowerCase() === "link";
var isStyleImport = node.nodeName.toLowerCase() === "style" && cssText !== node.textContent;
var returnVal = settings.onSuccess(cssText, node, url);
cssText = returnVal !== undefined && Boolean(returnVal) === false ? "" : returnVal || cssText;
if (settings.updateURLs && (isLink || isStyleImport)) {
cssText = fixRelativeCssUrls(cssText, url);
}
return cssText;
},
onComplete: function onComplete(cssText, cssArray) {
var nodeArray = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
var currentVars = _extends({}, variableStore.dom, variableStore.user);
var hasVarChange = false;
variableStore.job = {};
nodeArray.forEach((function(node, i) {
var nodeCSS = cssArray[i];
node.__cssVars = node.__cssVars || {};
node.__cssVars.text = nodeCSS;
if (regex.cssVars.test(nodeCSS)) {
try {
var cssTree = parseCss(nodeCSS, {
preserveStatic: settings.preserveStatic,
removeComments: true
});
parseVars(cssTree, {
parseHost: Boolean(settings.rootElement.host),
store: variableStore.dom,
onWarning: handleWarning
});
node.__cssVars.tree = cssTree;
} catch (err) {
handleError(err.message, node);
}
}
}));
_extends(variableStore.job, variableStore.dom);
if (settings.updateDOM) {
_extends(variableStore.user, settings.variables);
_extends(variableStore.job, variableStore.user);
} else {
_extends(variableStore.job, variableStore.user, settings.variables);
_extends(currentVars, settings.variables);
}
hasVarChange = counters.job > 0 && Boolean(Object.keys(variableStore.job).length > Object.keys(currentVars).length || Boolean(Object.keys(currentVars).length && Object.keys(variableStore.job).some((function(key) {
return variableStore.job[key] !== currentVars[key];
}))));
if (hasVarChange) {
resetCssNodes(settings.rootElement);
cssVars(settings);
} else {
var outCssArray = [];
var outNodeArray = [];
var hasKeyframesWithVars = false;
if (settings.updateDOM) {
counters.job++;
}
nodeArray.forEach((function(node, i) {
var isSkip = !node.__cssVars.tree;
if (node.__cssVars.tree) {
try {
transformCss(node.__cssVars.tree, _extends({}, settings, {
variables: variableStore.job,
onWarning: handleWarning
}));
var outCss = stringifyCss(node.__cssVars.tree);
if (settings.updateDOM) {
var nodeCSS = cssArray[i];
var hasCSSVarFunc = regex.cssVarFunc.test(nodeCSS);
if (!node.getAttribute("data-cssvars")) {
node.setAttribute("data-cssvars", "src");
}
if (outCss.length && hasCSSVarFunc) {
var dataGroup = node.getAttribute("data-cssvars-group") || ++counters.group;
var outCssNoSpaces = outCss.replace(/\s/g, "");
var outNode = settings.rootElement.querySelector('[data-cssvars="out"][data-cssvars-group="'.concat(dataGroup, '"]')) || document.createElement("style");
hasKeyframesWithVars = hasKeyframesWithVars || regex.cssKeyframes.test(outCss);
if (settings.preserveStatic) {
node.sheet && (node.sheet.disabled = true);
}
if (!outNode.hasAttribute("data-cssvars")) {
outNode.setAttribute("data-cssvars", "out");
}
if (outCssNoSpaces === node.textContent.replace(/\s/g, "")) {
isSkip = true;
if (outNode && outNode.parentNode) {
node.removeAttribute("data-cssvars-group");
outNode.parentNode.removeChild(outNode);
}
} else if (outCssNoSpaces !== outNode.textContent.replace(/\s/g, "")) {
[ node, outNode ].forEach((function(n) {
n.setAttribute("data-cssvars-job", counters.job);
n.setAttribute("data-cssvars-group", dataGroup);
}));
outNode.textContent = outCss;
outCssArray.push(outCss);
outNodeArray.push(outNode);
if (!outNode.parentNode) {
node.parentNode.insertBefore(outNode, node.nextSibling);
}
}
}
} else {
if (node.textContent.replace(/\s/g, "") !== outCss) {
outCssArray.push(outCss);
}
}
} catch (err) {
handleError(err.message, node);
}
}
if (isSkip) {
node.setAttribute("data-cssvars", "skip");
}
if (!node.hasAttribute("data-cssvars-job")) {
node.setAttribute("data-cssvars-job", counters.job);
}
}));
cssVarsSrcNodeCount = settings.rootElement.querySelectorAll('[data-cssvars]:not([data-cssvars="out"])').length;
if (settings.shadowDOM) {
var elms = [].concat(settings.rootElement).concat([].slice.call(settings.rootElement.querySelectorAll("*")));
for (var i = 0, elm; elm = elms[i]; ++i) {
if (elm.shadowRoot && elm.shadowRoot.querySelector("style")) {
var shadowSettings = _extends({}, settings, {
rootElement: elm.shadowRoot
});
cssVars(shadowSettings);
}
}
}
if (settings.updateDOM && hasKeyframesWithVars) {
fixKeyframes(settings.rootElement);
}
cssVarsIsRunning = false;
settings.onComplete(outCssArray.join(""), outNodeArray, JSON.parse(JSON.stringify(variableStore.job)), getTimeStamp() - settings.__benchmark);
handleFinally(outNodeArray.length);
}
}
});
}
} else {
document.addEventListener("DOMContentLoaded", (function init(evt) {
cssVars(options);
document.removeEventListener("DOMContentLoaded", init);
}));
}
}
cssVars.reset = function() {
counters.job = 0;
counters.group = 0;
cssVarsIsRunning = false;
if (cssVarsObserver) {
cssVarsObserver.disconnect();
cssVarsObserver = null;
}
cssVarsSrcNodeCount = 0;
debounceTimer = null;
isShadowDOMReady = false;
for (var prop in variableStore) {
variableStore[prop] = {};
}
};
function addMutationObserver(settings) {
function isDisabled(node) {
var isDisabledAttr = isLink(node) && node.hasAttribute("disabled");
var isDisabledSheet = (node.sheet || {}).disabled;
return isDisabledAttr || isDisabledSheet;
}
function isLink(node) {
var isStylesheet = node.nodeName.toLowerCase() === "link" && (node.getAttribute("rel") || "").indexOf("stylesheet") !== -1;
return isStylesheet;
}
function isStyle(node) {
return node.nodeName.toLowerCase() === "style";
}
function isValidAttributeMutation(mutation) {
var isValid = false;
if (mutation.type === "attributes" && isLink(mutation.target) && !isDisabled(mutation.target)) {
var isEnabledMutation = mutation.attributeName === "disabled";
var isHrefMutation = mutation.attributeName === "href";
var isSkipNode = mutation.target.getAttribute("data-cssvars") === "skip";
var isSrcNode = mutation.target.getAttribute("data-cssvars") === "src";
if (isEnabledMutation) {
isValid = !isSkipNode && !isSrcNode;
} else if (isHrefMutation) {
if (isSkipNode) {
mutation.target.setAttribute("data-cssvars", "");
} else if (isSrcNode) {
resetCssNodes(settings.rootElement, true);
}
isValid = true;
}
}
return isValid;
}
function isValidStyleTextMutation(mutation) {
var isValid = false;
if (mutation.type === "childList") {
var isStyleElm = isStyle(mutation.target);
var isOutNode = mutation.target.getAttribute("data-cssvars") === "out";
isValid = isStyleElm && !isOutNode;
}
return isValid;
}
function isValidAddMutation(mutation) {
var isValid = false;
if (mutation.type === "childList") {
isValid = [].slice.call(mutation.addedNodes).some((function(node) {
var isElm = node.nodeType === 1;
var hasAttr = isElm && node.hasAttribute("data-cssvars");
var isStyleWithVars = isStyle(node) && regex.cssVars.test(node.textContent);
var isValid = !hasAttr && (isLink(node) || isStyleWithVars);
return isValid && !isDisabled(node);
}));
}
return isValid;
}
function isValidRemoveMutation(mutation) {
var isValid = false;
if (mutation.type === "childList") {
isValid = [].slice.call(mutation.removedNodes).some((function(node) {
var isElm = node.nodeType === 1;
var isOutNode = isElm && node.getAttribute("data-cssvars") === "out";
var isSrcNode = isElm && node.getAttribute("data-cssvars") === "src";
var isValid = isSrcNode;
if (isSrcNode || isOutNode) {
var dataGroup = node.getAttribute("data-cssvars-group");
var orphanNode = settings.rootElement.querySelector('[data-cssvars-group="'.concat(dataGroup, '"]'));
if (isSrcNode) {
resetCssNodes(settings.rootElement, true);
}
if (orphanNode) {
orphanNode.parentNode.removeChild(orphanNode);
}
}
return isValid;
}));
}
return isValid;
}
if (!window.MutationObserver) {
return;
}
if (cssVarsObserver) {
cssVarsObserver.disconnect();
cssVarsObserver = null;
}
cssVarsObserver = new MutationObserver((function(mutations) {
var hasValidMutation = mutations.some((function(mutation) {
return isValidAttributeMutation(mutation) || isValidStyleTextMutation(mutation) || isValidAddMutation(mutation) || isValidRemoveMutation(mutation);
}));
if (hasValidMutation) {
cssVars(settings);
}
}));
cssVarsObserver.observe(document.documentElement, {
attributes: true,
attributeFilter: [ "disabled", "href" ],
childList: true,
subtree: true
});
}
function cssVarsDebounced(settings) {
var delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100;
clearTimeout(debounceTimer);
debounceTimer = setTimeout((function() {
settings.__benchmark = null;
cssVars(settings);
}), delay);
}
function fixKeyframes(rootElement) {
var animationNameProp = [ "animation-name", "-moz-animation-name", "-webkit-animation-name" ].filter((function(prop) {
return getComputedStyle(document.body)[prop];
}))[0];
if (animationNameProp) {
var allNodes = [].slice.call(rootElement.querySelectorAll("*"));
var keyframeNodes = [];
var nameMarker = "__CSSVARSPONYFILL-KEYFRAMES__";
for (var i = 0, len = allNodes.length; i < len; i++) {
var node = allNodes[i];
var animationName = getComputedStyle(node)[animationNameProp];
if (animationName !== "none") {
node.style[animationNameProp] += nameMarker;
keyframeNodes.push(node);
}
}
void document.body.offsetHeight;
for (var _i = 0, _len = keyframeNodes.length; _i < _len; _i++) {
var nodeStyle = keyframeNodes[_i].style;
nodeStyle[animationNameProp] = nodeStyle[animationNameProp].replace(nameMarker, "");
}
}
}
function fixRelativeCssUrls(cssText, baseUrl) {
var cssUrls = cssText.replace(regex.cssComments, "").match(regex.cssUrls) || [];
cssUrls.forEach((function(cssUrl) {
var oldUrl = cssUrl.replace(regex.cssUrls, "$1");
var newUrl = getFullUrl(oldUrl, baseUrl);
cssText = cssText.replace(cssUrl, cssUrl.replace(oldUrl, newUrl));
}));
return cssText;
}
function fixVarNames() {
var varObj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var reLeadingHyphens = /^-{2}/;
return Object.keys(varObj).reduce((function(obj, value) {
var key = reLeadingHyphens.test(value) ? value : "--".concat(value.replace(/^-+/, ""));
obj[key] = varObj[value];
return obj;
}), {});
}
function getFullUrl(url) {
var base = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : location.href;
var d = document.implementation.createHTMLDocument("");
var b = d.createElement("base");
var a = d.createElement("a");
d.head.appendChild(b);
d.body.appendChild(a);
b.href = base;
a.href = url;
return a.href;
}
function getTimeStamp() {
return isBrowser && (window.performance || {}).now ? window.performance.now() : (new Date).getTime();
}
function resetCssNodes(rootElement) {
var resetDOMVariableStore = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
var resetNodes = [].slice.call(rootElement.querySelectorAll('[data-cssvars="skip"],[data-cssvars="src"]'));
resetNodes.forEach((function(node) {
return node.setAttribute("data-cssvars", "");
}));
if (resetDOMVariableStore) {
variableStore.dom = {};
}
}
export { cssVars as default };
//# sourceMappingURL=css-vars-ponyfill.esm.js.map