source: frontend/node_modules/postcss-selector-parser/dist/selectors/node.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 11 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 6.5 KB
Line 
1"use strict";
2
3exports.__esModule = true;
4exports["default"] = void 0;
5var _util = require("../util");
6function _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); } }
7function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
8var cloneNode = function cloneNode(obj, parent) {
9 if (typeof obj !== 'object' || obj === null) {
10 return obj;
11 }
12 var cloned = new obj.constructor();
13 for (var i in obj) {
14 if (!obj.hasOwnProperty(i)) {
15 continue;
16 }
17 var value = obj[i];
18 var type = typeof value;
19 if (i === 'parent' && type === 'object') {
20 if (parent) {
21 cloned[i] = parent;
22 }
23 } else if (value instanceof Array) {
24 cloned[i] = value.map(function (j) {
25 return cloneNode(j, cloned);
26 });
27 } else {
28 cloned[i] = cloneNode(value, cloned);
29 }
30 }
31 return cloned;
32};
33var Node = /*#__PURE__*/function () {
34 function Node(opts) {
35 if (opts === void 0) {
36 opts = {};
37 }
38 Object.assign(this, opts);
39 this.spaces = this.spaces || {};
40 this.spaces.before = this.spaces.before || '';
41 this.spaces.after = this.spaces.after || '';
42 }
43 var _proto = Node.prototype;
44 _proto.remove = function remove() {
45 if (this.parent) {
46 this.parent.removeChild(this);
47 }
48 this.parent = undefined;
49 return this;
50 };
51 _proto.replaceWith = function replaceWith() {
52 if (this.parent) {
53 for (var index in arguments) {
54 this.parent.insertBefore(this, arguments[index]);
55 }
56 this.remove();
57 }
58 return this;
59 };
60 _proto.next = function next() {
61 return this.parent.at(this.parent.index(this) + 1);
62 };
63 _proto.prev = function prev() {
64 return this.parent.at(this.parent.index(this) - 1);
65 };
66 _proto.clone = function clone(overrides) {
67 if (overrides === void 0) {
68 overrides = {};
69 }
70 var cloned = cloneNode(this);
71 for (var name in overrides) {
72 cloned[name] = overrides[name];
73 }
74 return cloned;
75 }
76
77 /**
78 * Some non-standard syntax doesn't follow normal escaping rules for css.
79 * This allows non standard syntax to be appended to an existing property
80 * by specifying the escaped value. By specifying the escaped value,
81 * illegal characters are allowed to be directly inserted into css output.
82 * @param {string} name the property to set
83 * @param {any} value the unescaped value of the property
84 * @param {string} valueEscaped optional. the escaped value of the property.
85 */;
86 _proto.appendToPropertyAndEscape = function appendToPropertyAndEscape(name, value, valueEscaped) {
87 if (!this.raws) {
88 this.raws = {};
89 }
90 var originalValue = this[name];
91 var originalEscaped = this.raws[name];
92 this[name] = originalValue + value; // this may trigger a setter that updates raws, so it has to be set first.
93 if (originalEscaped || valueEscaped !== value) {
94 this.raws[name] = (originalEscaped || originalValue) + valueEscaped;
95 } else {
96 delete this.raws[name]; // delete any escaped value that was created by the setter.
97 }
98 }
99
100 /**
101 * Some non-standard syntax doesn't follow normal escaping rules for css.
102 * This allows the escaped value to be specified directly, allowing illegal
103 * characters to be directly inserted into css output.
104 * @param {string} name the property to set
105 * @param {any} value the unescaped value of the property
106 * @param {string} valueEscaped the escaped value of the property.
107 */;
108 _proto.setPropertyAndEscape = function setPropertyAndEscape(name, value, valueEscaped) {
109 if (!this.raws) {
110 this.raws = {};
111 }
112 this[name] = value; // this may trigger a setter that updates raws, so it has to be set first.
113 this.raws[name] = valueEscaped;
114 }
115
116 /**
117 * When you want a value to passed through to CSS directly. This method
118 * deletes the corresponding raw value causing the stringifier to fallback
119 * to the unescaped value.
120 * @param {string} name the property to set.
121 * @param {any} value The value that is both escaped and unescaped.
122 */;
123 _proto.setPropertyWithoutEscape = function setPropertyWithoutEscape(name, value) {
124 this[name] = value; // this may trigger a setter that updates raws, so it has to be set first.
125 if (this.raws) {
126 delete this.raws[name];
127 }
128 }
129
130 /**
131 *
132 * @param {number} line The number (starting with 1)
133 * @param {number} column The column number (starting with 1)
134 */;
135 _proto.isAtPosition = function isAtPosition(line, column) {
136 if (this.source && this.source.start && this.source.end) {
137 if (this.source.start.line > line) {
138 return false;
139 }
140 if (this.source.end.line < line) {
141 return false;
142 }
143 if (this.source.start.line === line && this.source.start.column > column) {
144 return false;
145 }
146 if (this.source.end.line === line && this.source.end.column < column) {
147 return false;
148 }
149 return true;
150 }
151 return undefined;
152 };
153 _proto.stringifyProperty = function stringifyProperty(name) {
154 return this.raws && this.raws[name] || this[name];
155 };
156 _proto.valueToString = function valueToString() {
157 return String(this.stringifyProperty("value"));
158 };
159 _proto.toString = function toString() {
160 return [this.rawSpaceBefore, this.valueToString(), this.rawSpaceAfter].join('');
161 };
162 _createClass(Node, [{
163 key: "rawSpaceBefore",
164 get: function get() {
165 var rawSpace = this.raws && this.raws.spaces && this.raws.spaces.before;
166 if (rawSpace === undefined) {
167 rawSpace = this.spaces && this.spaces.before;
168 }
169 return rawSpace || "";
170 },
171 set: function set(raw) {
172 (0, _util.ensureObject)(this, "raws", "spaces");
173 this.raws.spaces.before = raw;
174 }
175 }, {
176 key: "rawSpaceAfter",
177 get: function get() {
178 var rawSpace = this.raws && this.raws.spaces && this.raws.spaces.after;
179 if (rawSpace === undefined) {
180 rawSpace = this.spaces.after;
181 }
182 return rawSpace || "";
183 },
184 set: function set(raw) {
185 (0, _util.ensureObject)(this, "raws", "spaces");
186 this.raws.spaces.after = raw;
187 }
188 }]);
189 return Node;
190}();
191exports["default"] = Node;
192module.exports = exports.default;
Note: See TracBrowser for help on using the repository browser.