summaryrefslogtreecommitdiff
path: root/node_modules/postcss/lib/root.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/postcss/lib/root.js')
-rw-r--r--node_modules/postcss/lib/root.js61
1 files changed, 61 insertions, 0 deletions
diff --git a/node_modules/postcss/lib/root.js b/node_modules/postcss/lib/root.js
new file mode 100644
index 0000000..ea574ed
--- /dev/null
+++ b/node_modules/postcss/lib/root.js
@@ -0,0 +1,61 @@
+'use strict'
+
+let Container = require('./container')
+
+let LazyResult, Processor
+
+class Root extends Container {
+ constructor(defaults) {
+ super(defaults)
+ this.type = 'root'
+ if (!this.nodes) this.nodes = []
+ }
+
+ normalize(child, sample, type) {
+ let nodes = super.normalize(child)
+
+ if (sample) {
+ if (type === 'prepend') {
+ if (this.nodes.length > 1) {
+ sample.raws.before = this.nodes[1].raws.before
+ } else {
+ delete sample.raws.before
+ }
+ } else if (this.first !== sample) {
+ for (let node of nodes) {
+ node.raws.before = sample.raws.before
+ }
+ }
+ }
+
+ return nodes
+ }
+
+ removeChild(child, ignore) {
+ let index = this.index(child)
+
+ if (!ignore && index === 0 && this.nodes.length > 1) {
+ this.nodes[1].raws.before = this.nodes[index].raws.before
+ }
+
+ return super.removeChild(child)
+ }
+
+ toResult(opts = {}) {
+ let lazy = new LazyResult(new Processor(), this, opts)
+ return lazy.stringify()
+ }
+}
+
+Root.registerLazyResult = dependant => {
+ LazyResult = dependant
+}
+
+Root.registerProcessor = dependant => {
+ Processor = dependant
+}
+
+module.exports = Root
+Root.default = Root
+
+Container.registerRoot(Root)