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

1558 lines
70 KiB
JavaScript
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*!
* css-vars-ponyfill
* v2.4.9
* https://jhildenbiddle.github.io/css-vars-ponyfill/
* (c) 2018-2024 John Hildenbiddle <http://hildenbiddle.com>
* MIT license
*/
(function(global, factory) {
typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory() : typeof define === "function" && define.amd ? define(factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self,
global.cssVars = factory());
})(this, (function() {
"use strict";
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 = {};
}
}
return cssVars;
}));
//# sourceMappingURL=css-vars-ponyfill.js.map