summaryrefslogtreecommitdiff
path: root/node_modules/postcss-selector-parser/dist/selectors/node.js
diff options
context:
space:
mode:
authorPhilipp Tanlak <philipp.tanlak@gmail.com>2025-11-24 20:54:57 +0100
committerPhilipp Tanlak <philipp.tanlak@gmail.com>2025-11-24 20:57:48 +0100
commitb1e2c8fd5cb5dfa46bc440a12eafaf56cd844b1c (patch)
tree49d360fd6cbc6a2754efe93524ac47ff0fbe0f7d /node_modules/postcss-selector-parser/dist/selectors/node.js
Docs
Diffstat (limited to 'node_modules/postcss-selector-parser/dist/selectors/node.js')
-rw-r--r--node_modules/postcss-selector-parser/dist/selectors/node.js192
1 files changed, 192 insertions, 0 deletions
diff --git a/node_modules/postcss-selector-parser/dist/selectors/node.js b/node_modules/postcss-selector-parser/dist/selectors/node.js
new file mode 100644
index 0000000..9a82951
--- /dev/null
+++ b/node_modules/postcss-selector-parser/dist/selectors/node.js
@@ -0,0 +1,192 @@
+"use strict";
+
+exports.__esModule = true;
+exports["default"] = void 0;
+var _util = require("../util");
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
+var cloneNode = function cloneNode(obj, parent) {
+ if (typeof obj !== 'object' || obj === null) {
+ return obj;
+ }
+ var cloned = new obj.constructor();
+ for (var i in obj) {
+ if (!obj.hasOwnProperty(i)) {
+ continue;
+ }
+ var value = obj[i];
+ var type = typeof value;
+ if (i === 'parent' && type === 'object') {
+ if (parent) {
+ cloned[i] = parent;
+ }
+ } else if (value instanceof Array) {
+ cloned[i] = value.map(function (j) {
+ return cloneNode(j, cloned);
+ });
+ } else {
+ cloned[i] = cloneNode(value, cloned);
+ }
+ }
+ return cloned;
+};
+var Node = /*#__PURE__*/function () {
+ function Node(opts) {
+ if (opts === void 0) {
+ opts = {};
+ }
+ Object.assign(this, opts);
+ this.spaces = this.spaces || {};
+ this.spaces.before = this.spaces.before || '';
+ this.spaces.after = this.spaces.after || '';
+ }
+ var _proto = Node.prototype;
+ _proto.remove = function remove() {
+ if (this.parent) {
+ this.parent.removeChild(this);
+ }
+ this.parent = undefined;
+ return this;
+ };
+ _proto.replaceWith = function replaceWith() {
+ if (this.parent) {
+ for (var index in arguments) {
+ this.parent.insertBefore(this, arguments[index]);
+ }
+ this.remove();
+ }
+ return this;
+ };
+ _proto.next = function next() {
+ return this.parent.at(this.parent.index(this) + 1);
+ };
+ _proto.prev = function prev() {
+ return this.parent.at(this.parent.index(this) - 1);
+ };
+ _proto.clone = function clone(overrides) {
+ if (overrides === void 0) {
+ overrides = {};
+ }
+ var cloned = cloneNode(this);
+ for (var name in overrides) {
+ cloned[name] = overrides[name];
+ }
+ return cloned;
+ }
+
+ /**
+ * Some non-standard syntax doesn't follow normal escaping rules for css.
+ * This allows non standard syntax to be appended to an existing property
+ * by specifying the escaped value. By specifying the escaped value,
+ * illegal characters are allowed to be directly inserted into css output.
+ * @param {string} name the property to set
+ * @param {any} value the unescaped value of the property
+ * @param {string} valueEscaped optional. the escaped value of the property.
+ */;
+ _proto.appendToPropertyAndEscape = function appendToPropertyAndEscape(name, value, valueEscaped) {
+ if (!this.raws) {
+ this.raws = {};
+ }
+ var originalValue = this[name];
+ var originalEscaped = this.raws[name];
+ this[name] = originalValue + value; // this may trigger a setter that updates raws, so it has to be set first.
+ if (originalEscaped || valueEscaped !== value) {
+ this.raws[name] = (originalEscaped || originalValue) + valueEscaped;
+ } else {
+ delete this.raws[name]; // delete any escaped value that was created by the setter.
+ }
+ }
+
+ /**
+ * Some non-standard syntax doesn't follow normal escaping rules for css.
+ * This allows the escaped value to be specified directly, allowing illegal
+ * characters to be directly inserted into css output.
+ * @param {string} name the property to set
+ * @param {any} value the unescaped value of the property
+ * @param {string} valueEscaped the escaped value of the property.
+ */;
+ _proto.setPropertyAndEscape = function setPropertyAndEscape(name, value, valueEscaped) {
+ if (!this.raws) {
+ this.raws = {};
+ }
+ this[name] = value; // this may trigger a setter that updates raws, so it has to be set first.
+ this.raws[name] = valueEscaped;
+ }
+
+ /**
+ * When you want a value to passed through to CSS directly. This method
+ * deletes the corresponding raw value causing the stringifier to fallback
+ * to the unescaped value.
+ * @param {string} name the property to set.
+ * @param {any} value The value that is both escaped and unescaped.
+ */;
+ _proto.setPropertyWithoutEscape = function setPropertyWithoutEscape(name, value) {
+ this[name] = value; // this may trigger a setter that updates raws, so it has to be set first.
+ if (this.raws) {
+ delete this.raws[name];
+ }
+ }
+
+ /**
+ *
+ * @param {number} line The number (starting with 1)
+ * @param {number} column The column number (starting with 1)
+ */;
+ _proto.isAtPosition = function isAtPosition(line, column) {
+ if (this.source && this.source.start && this.source.end) {
+ if (this.source.start.line > line) {
+ return false;
+ }
+ if (this.source.end.line < line) {
+ return false;
+ }
+ if (this.source.start.line === line && this.source.start.column > column) {
+ return false;
+ }
+ if (this.source.end.line === line && this.source.end.column < column) {
+ return false;
+ }
+ return true;
+ }
+ return undefined;
+ };
+ _proto.stringifyProperty = function stringifyProperty(name) {
+ return this.raws && this.raws[name] || this[name];
+ };
+ _proto.valueToString = function valueToString() {
+ return String(this.stringifyProperty("value"));
+ };
+ _proto.toString = function toString() {
+ return [this.rawSpaceBefore, this.valueToString(), this.rawSpaceAfter].join('');
+ };
+ _createClass(Node, [{
+ key: "rawSpaceBefore",
+ get: function get() {
+ var rawSpace = this.raws && this.raws.spaces && this.raws.spaces.before;
+ if (rawSpace === undefined) {
+ rawSpace = this.spaces && this.spaces.before;
+ }
+ return rawSpace || "";
+ },
+ set: function set(raw) {
+ (0, _util.ensureObject)(this, "raws", "spaces");
+ this.raws.spaces.before = raw;
+ }
+ }, {
+ key: "rawSpaceAfter",
+ get: function get() {
+ var rawSpace = this.raws && this.raws.spaces && this.raws.spaces.after;
+ if (rawSpace === undefined) {
+ rawSpace = this.spaces.after;
+ }
+ return rawSpace || "";
+ },
+ set: function set(raw) {
+ (0, _util.ensureObject)(this, "raws", "spaces");
+ this.raws.spaces.after = raw;
+ }
+ }]);
+ return Node;
+}();
+exports["default"] = Node;
+module.exports = exports.default; \ No newline at end of file