summaryrefslogtreecommitdiff
path: root/includes/external/addressbook/node_modules/css-what/lib/commonjs/stringify.js
diff options
context:
space:
mode:
Diffstat (limited to 'includes/external/addressbook/node_modules/css-what/lib/commonjs/stringify.js')
-rw-r--r--includes/external/addressbook/node_modules/css-what/lib/commonjs/stringify.js138
1 files changed, 138 insertions, 0 deletions
diff --git a/includes/external/addressbook/node_modules/css-what/lib/commonjs/stringify.js b/includes/external/addressbook/node_modules/css-what/lib/commonjs/stringify.js
new file mode 100644
index 0000000..158b180
--- /dev/null
+++ b/includes/external/addressbook/node_modules/css-what/lib/commonjs/stringify.js
@@ -0,0 +1,138 @@
+"use strict";
+var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
+ if (ar || !(i in from)) {
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
+ ar[i] = from[i];
+ }
+ }
+ return to.concat(ar || Array.prototype.slice.call(from));
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.stringify = void 0;
+var types_1 = require("./types");
+var attribValChars = ["\\", '"'];
+var pseudoValChars = __spreadArray(__spreadArray([], attribValChars, true), ["(", ")"], false);
+var charsToEscapeInAttributeValue = new Set(attribValChars.map(function (c) { return c.charCodeAt(0); }));
+var charsToEscapeInPseudoValue = new Set(pseudoValChars.map(function (c) { return c.charCodeAt(0); }));
+var charsToEscapeInName = new Set(__spreadArray(__spreadArray([], pseudoValChars, true), [
+ "~",
+ "^",
+ "$",
+ "*",
+ "+",
+ "!",
+ "|",
+ ":",
+ "[",
+ "]",
+ " ",
+ ".",
+], false).map(function (c) { return c.charCodeAt(0); }));
+/**
+ * Turns `selector` back into a string.
+ *
+ * @param selector Selector to stringify.
+ */
+function stringify(selector) {
+ return selector
+ .map(function (token) { return token.map(stringifyToken).join(""); })
+ .join(", ");
+}
+exports.stringify = stringify;
+function stringifyToken(token, index, arr) {
+ switch (token.type) {
+ // Simple types
+ case types_1.SelectorType.Child:
+ return index === 0 ? "> " : " > ";
+ case types_1.SelectorType.Parent:
+ return index === 0 ? "< " : " < ";
+ case types_1.SelectorType.Sibling:
+ return index === 0 ? "~ " : " ~ ";
+ case types_1.SelectorType.Adjacent:
+ return index === 0 ? "+ " : " + ";
+ case types_1.SelectorType.Descendant:
+ return " ";
+ case types_1.SelectorType.ColumnCombinator:
+ return index === 0 ? "|| " : " || ";
+ case types_1.SelectorType.Universal:
+ // Return an empty string if the selector isn't needed.
+ return token.namespace === "*" &&
+ index + 1 < arr.length &&
+ "name" in arr[index + 1]
+ ? ""
+ : "".concat(getNamespace(token.namespace), "*");
+ case types_1.SelectorType.Tag:
+ return getNamespacedName(token);
+ case types_1.SelectorType.PseudoElement:
+ return "::".concat(escapeName(token.name, charsToEscapeInName)).concat(token.data === null
+ ? ""
+ : "(".concat(escapeName(token.data, charsToEscapeInPseudoValue), ")"));
+ case types_1.SelectorType.Pseudo:
+ return ":".concat(escapeName(token.name, charsToEscapeInName)).concat(token.data === null
+ ? ""
+ : "(".concat(typeof token.data === "string"
+ ? escapeName(token.data, charsToEscapeInPseudoValue)
+ : stringify(token.data), ")"));
+ case types_1.SelectorType.Attribute: {
+ if (token.name === "id" &&
+ token.action === types_1.AttributeAction.Equals &&
+ token.ignoreCase === "quirks" &&
+ !token.namespace) {
+ return "#".concat(escapeName(token.value, charsToEscapeInName));
+ }
+ if (token.name === "class" &&
+ token.action === types_1.AttributeAction.Element &&
+ token.ignoreCase === "quirks" &&
+ !token.namespace) {
+ return ".".concat(escapeName(token.value, charsToEscapeInName));
+ }
+ var name_1 = getNamespacedName(token);
+ if (token.action === types_1.AttributeAction.Exists) {
+ return "[".concat(name_1, "]");
+ }
+ return "[".concat(name_1).concat(getActionValue(token.action), "=\"").concat(escapeName(token.value, charsToEscapeInAttributeValue), "\"").concat(token.ignoreCase === null ? "" : token.ignoreCase ? " i" : " s", "]");
+ }
+ }
+}
+function getActionValue(action) {
+ switch (action) {
+ case types_1.AttributeAction.Equals:
+ return "";
+ case types_1.AttributeAction.Element:
+ return "~";
+ case types_1.AttributeAction.Start:
+ return "^";
+ case types_1.AttributeAction.End:
+ return "$";
+ case types_1.AttributeAction.Any:
+ return "*";
+ case types_1.AttributeAction.Not:
+ return "!";
+ case types_1.AttributeAction.Hyphen:
+ return "|";
+ case types_1.AttributeAction.Exists:
+ throw new Error("Shouldn't be here");
+ }
+}
+function getNamespacedName(token) {
+ return "".concat(getNamespace(token.namespace)).concat(escapeName(token.name, charsToEscapeInName));
+}
+function getNamespace(namespace) {
+ return namespace !== null
+ ? "".concat(namespace === "*"
+ ? "*"
+ : escapeName(namespace, charsToEscapeInName), "|")
+ : "";
+}
+function escapeName(str, charsToEscape) {
+ var lastIdx = 0;
+ var ret = "";
+ for (var i = 0; i < str.length; i++) {
+ if (charsToEscape.has(str.charCodeAt(i))) {
+ ret += "".concat(str.slice(lastIdx, i), "\\").concat(str.charAt(i));
+ lastIdx = i + 1;
+ }
+ }
+ return ret.length > 0 ? ret + str.slice(lastIdx) : str;
+}