Add packages to optimize svgs dynamically
These packages will be used to dynamically optimize SVG images
during the build.
R=jacktfranklin@chromium.org
Bug: 1216402
Change-Id: I04e95aa7d79c9d67beaf8a7861182c52b16b7d0f
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/2939992
Reviewed-by: Jack Franklin <jacktfranklin@chromium.org>
Commit-Queue: Tim van der Lippe <tvanderlippe@chromium.org>
diff --git a/node_modules/css-what/lib/stringify.js b/node_modules/css-what/lib/stringify.js
new file mode 100644
index 0000000..664b69e
--- /dev/null
+++ b/node_modules/css-what/lib/stringify.js
@@ -0,0 +1,102 @@
+"use strict";
+var __spreadArrays = (this && this.__spreadArrays) || function () {
+ for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
+ for (var r = Array(s), k = 0, i = 0; i < il; i++)
+ for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
+ r[k] = a[j];
+ return r;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+var actionTypes = {
+ equals: "",
+ element: "~",
+ start: "^",
+ end: "$",
+ any: "*",
+ not: "!",
+ hyphen: "|",
+};
+var charsToEscape = new Set(__spreadArrays(Object.keys(actionTypes)
+ .map(function (typeKey) { return actionTypes[typeKey]; })
+ .filter(Boolean), [
+ ":",
+ "[",
+ "]",
+ " ",
+ "\\",
+ "(",
+ ")",
+]));
+/**
+ * Turns `selector` back into a string.
+ *
+ * @param selector Selector to stringify.
+ */
+function stringify(selector) {
+ return selector.map(stringifySubselector).join(", ");
+}
+exports.default = stringify;
+function stringifySubselector(token) {
+ return token.map(stringifyToken).join("");
+}
+function stringifyToken(token) {
+ switch (token.type) {
+ // Simple types
+ case "child":
+ return " > ";
+ case "parent":
+ return " < ";
+ case "sibling":
+ return " ~ ";
+ case "adjacent":
+ return " + ";
+ case "descendant":
+ return " ";
+ case "universal":
+ return getNamespace(token.namespace) + "*";
+ case "tag":
+ return getNamespacedName(token);
+ case "pseudo-element":
+ return "::" + escapeName(token.name);
+ case "pseudo":
+ if (token.data === null)
+ return ":" + escapeName(token.name);
+ if (typeof token.data === "string") {
+ return ":" + escapeName(token.name) + "(" + escapeName(token.data) + ")";
+ }
+ return ":" + escapeName(token.name) + "(" + stringify(token.data) + ")";
+ case "attribute": {
+ if (token.name === "id" &&
+ token.action === "equals" &&
+ !token.ignoreCase &&
+ !token.namespace) {
+ return "#" + escapeName(token.value);
+ }
+ if (token.name === "class" &&
+ token.action === "element" &&
+ !token.ignoreCase &&
+ !token.namespace) {
+ return "." + escapeName(token.value);
+ }
+ var name_1 = getNamespacedName(token);
+ if (token.action === "exists") {
+ return "[" + name_1 + "]";
+ }
+ return "[" + name_1 + actionTypes[token.action] + "='" + escapeName(token.value) + "'" + (token.ignoreCase ? "i" : "") + "]";
+ }
+ }
+}
+function getNamespacedName(token) {
+ return "" + getNamespace(token.namespace) + escapeName(token.name);
+}
+function getNamespace(namespace) {
+ return namespace
+ ? (namespace === "*" ? "*" : escapeName(namespace)) + "|"
+ : "";
+}
+function escapeName(str) {
+ return str
+ .split("")
+ .map(function (c) { return (charsToEscape.has(c) ? "\\" + c : c); })
+ .join("");
+}