| "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), [ | 
|     ":", | 
|     "[", | 
|     "]", | 
|     " ", | 
|     "\\", | 
| ])); | 
| function stringify(token) { | 
|     return token.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 "*"; | 
|         case "tag": | 
|             return escapeName(token.name); | 
|         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) + "(" + token.data + ")"; | 
|             } | 
|             return ":" + escapeName(token.name) + "(" + stringify(token.data) + ")"; | 
|         case "attribute": | 
|             if (token.action === "exists") { | 
|                 return "[" + escapeName(token.name) + "]"; | 
|             } | 
|             if (token.name === "id" && | 
|                 token.action === "equals" && | 
|                 !token.ignoreCase) { | 
|                 return "#" + escapeName(token.value); | 
|             } | 
|             if (token.name === "class" && | 
|                 token.action === "element" && | 
|                 !token.ignoreCase) { | 
|                 return "." + escapeName(token.value); | 
|             } | 
|             return "[" + escapeName(token.name) + actionTypes[token.action] + "='" + escapeName(token.value) + "'" + (token.ignoreCase ? "i" : "") + "]"; | 
|     } | 
| } | 
| function escapeName(str) { | 
|     return str | 
|         .split("") | 
|         .map(function (c) { return (charsToEscape.has(c) ? "\\" + c : c); }) | 
|         .join(""); | 
| } |