| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 | 
							- "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;
 
 
  |