HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/vhost/disk-apps/pwa.sports-crowd.com/node_modules/less/lib/less/tree/ruleset.js.map
{"version":3,"file":"ruleset.js","sourceRoot":"","sources":["../../../src/less/tree/ruleset.js"],"names":[],"mappings":"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","sourcesContent":["import Node from './node';\nimport Declaration from './declaration';\nimport Keyword from './keyword';\nimport Comment from './comment';\nimport Paren from './paren';\nimport Selector from './selector';\nimport Element from './element';\nimport Anonymous from './anonymous';\nimport contexts from '../contexts';\nimport globalFunctionRegistry from '../functions/function-registry';\nimport defaultFunc from '../functions/default';\nimport getDebugInfo from './debug-info';\nimport * as utils from '../utils';\n\nconst Ruleset = function(selectors, rules, strictImports, visibilityInfo) {\n    this.selectors = selectors;\n    this.rules = rules;\n    this._lookups = {};\n    this._variables = null;\n    this._properties = null;\n    this.strictImports = strictImports;\n    this.copyVisibilityInfo(visibilityInfo);\n    this.allowRoot = true;\n\n    this.setParent(this.selectors, this);\n    this.setParent(this.rules, this);\n}\n\nRuleset.prototype = Object.assign(new Node(), {\n    type: 'Ruleset',\n    isRuleset: true,\n\n    isRulesetLike() { return true; },\n\n    accept(visitor) {\n        if (this.paths) {\n            this.paths = visitor.visitArray(this.paths, true);\n        } else if (this.selectors) {\n            this.selectors = visitor.visitArray(this.selectors);\n        }\n        if (this.rules && this.rules.length) {\n            this.rules = visitor.visitArray(this.rules);\n        }\n    },\n\n    eval(context) {\n        const that = this;\n        let selectors;\n        let selCnt;\n        let selector;\n        let i;\n        let hasVariable;\n        let hasOnePassingSelector = false;\n\n        if (this.selectors && (selCnt = this.selectors.length)) {\n            selectors = new Array(selCnt);\n            defaultFunc.error({\n                type: 'Syntax',\n                message: 'it is currently only allowed in parametric mixin guards,'\n            });\n\n            for (i = 0; i < selCnt; i++) {\n                selector = this.selectors[i].eval(context);\n                for (var j = 0; j < selector.elements.length; j++) {\n                    if (selector.elements[j].isVariable) {\n                        hasVariable = true;\n                        break;\n                    }\n                }\n                selectors[i] = selector;\n                if (selector.evaldCondition) {\n                    hasOnePassingSelector = true;\n                }\n            }\n\n            if (hasVariable) {\n                const toParseSelectors = new Array(selCnt);\n                for (i = 0; i < selCnt; i++) {\n                    selector = selectors[i];\n                    toParseSelectors[i] = selector.toCSS(context);\n                }\n                this.parse.parseNode(\n                    toParseSelectors.join(','),\n                    [\"selectors\"], \n                    selectors[0].getIndex(), \n                    selectors[0].fileInfo(), \n                    function(err, result) {\n                        if (result) {\n                            selectors = utils.flattenArray(result);\n                        }\n                    });\n            }\n\n            defaultFunc.reset();\n        } else {\n            hasOnePassingSelector = true;\n        }\n\n        let rules = this.rules ? utils.copyArray(this.rules) : null;\n        const ruleset = new Ruleset(selectors, rules, this.strictImports, this.visibilityInfo());\n        let rule;\n        let subRule;\n\n        ruleset.originalRuleset = this;\n        ruleset.root = this.root;\n        ruleset.firstRoot = this.firstRoot;\n        ruleset.allowImports = this.allowImports;\n\n        if (this.debugInfo) {\n            ruleset.debugInfo = this.debugInfo;\n        }\n\n        if (!hasOnePassingSelector) {\n            rules.length = 0;\n        }\n\n        // inherit a function registry from the frames stack when possible;\n        // otherwise from the global registry\n        ruleset.functionRegistry = (function (frames) {\n            let i = 0;\n            const n = frames.length;\n            let found;\n            for ( ; i !== n ; ++i ) {\n                found = frames[ i ].functionRegistry;\n                if ( found ) { return found; }\n            }\n            return globalFunctionRegistry;\n        }(context.frames)).inherit();\n\n        // push the current ruleset to the frames stack\n        const ctxFrames = context.frames;\n        ctxFrames.unshift(ruleset);\n\n        // currrent selectors\n        let ctxSelectors = context.selectors;\n        if (!ctxSelectors) {\n            context.selectors = ctxSelectors = [];\n        }\n        ctxSelectors.unshift(this.selectors);\n\n        // Evaluate imports\n        if (ruleset.root || ruleset.allowImports || !ruleset.strictImports) {\n            ruleset.evalImports(context);\n        }\n\n        // Store the frames around mixin definitions,\n        // so they can be evaluated like closures when the time comes.\n        const rsRules = ruleset.rules;\n        for (i = 0; (rule = rsRules[i]); i++) {\n            if (rule.evalFirst) {\n                rsRules[i] = rule.eval(context);\n            }\n        }\n\n        const mediaBlockCount = (context.mediaBlocks && context.mediaBlocks.length) || 0;\n\n        // Evaluate mixin calls.\n        for (i = 0; (rule = rsRules[i]); i++) {\n            if (rule.type === 'MixinCall') {\n                /* jshint loopfunc:true */\n                rules = rule.eval(context).filter(function(r) {\n                    if ((r instanceof Declaration) && r.variable) {\n                        // do not pollute the scope if the variable is\n                        // already there. consider returning false here\n                        // but we need a way to \"return\" variable from mixins\n                        return !(ruleset.variable(r.name));\n                    }\n                    return true;\n                });\n                rsRules.splice.apply(rsRules, [i, 1].concat(rules));\n                i += rules.length - 1;\n                ruleset.resetCache();\n            } else if (rule.type ===  'VariableCall') {\n                /* jshint loopfunc:true */\n                rules = rule.eval(context).rules.filter(function(r) {\n                    if ((r instanceof Declaration) && r.variable) {\n                        // do not pollute the scope at all\n                        return false;\n                    }\n                    return true;\n                });\n                rsRules.splice.apply(rsRules, [i, 1].concat(rules));\n                i += rules.length - 1;\n                ruleset.resetCache();\n            }\n        }\n\n        // Evaluate everything else\n        for (i = 0; (rule = rsRules[i]); i++) {\n            if (!rule.evalFirst) {\n                rsRules[i] = rule = rule.eval ? rule.eval(context) : rule;\n            }\n        }\n\n        // Evaluate everything else\n        for (i = 0; (rule = rsRules[i]); i++) {\n            // for rulesets, check if it is a css guard and can be removed\n            if (rule instanceof Ruleset && rule.selectors && rule.selectors.length === 1) {\n                // check if it can be folded in (e.g. & where)\n                if (rule.selectors[0] && rule.selectors[0].isJustParentSelector()) {\n                    rsRules.splice(i--, 1);\n\n                    for (var j = 0; (subRule = rule.rules[j]); j++) {\n                        if (subRule instanceof Node) {\n                            subRule.copyVisibilityInfo(rule.visibilityInfo());\n                            if (!(subRule instanceof Declaration) || !subRule.variable) {\n                                rsRules.splice(++i, 0, subRule);\n                            }\n                        }\n                    }\n                }\n            }\n        }\n\n        // Pop the stack\n        ctxFrames.shift();\n        ctxSelectors.shift();\n\n        if (context.mediaBlocks) {\n            for (i = mediaBlockCount; i < context.mediaBlocks.length; i++) {\n                context.mediaBlocks[i].bubbleSelectors(selectors);\n            }\n        }\n\n        return ruleset;\n    },\n\n    evalImports(context) {\n        const rules = this.rules;\n        let i;\n        let importRules;\n        if (!rules) { return; }\n\n        for (i = 0; i < rules.length; i++) {\n            if (rules[i].type === 'Import') {\n                importRules = rules[i].eval(context);\n                if (importRules && (importRules.length || importRules.length === 0)) {\n                    rules.splice.apply(rules, [i, 1].concat(importRules));\n                    i += importRules.length - 1;\n                } else {\n                    rules.splice(i, 1, importRules);\n                }\n                this.resetCache();\n            }\n        }\n    },\n\n    makeImportant() {\n        const result = new Ruleset(this.selectors, this.rules.map(function (r) {\n            if (r.makeImportant) {\n                return r.makeImportant();\n            } else {\n                return r;\n            }\n        }), this.strictImports, this.visibilityInfo());\n\n        return result;\n    },\n\n    matchArgs(args) {\n        return !args || args.length === 0;\n    },\n\n    // lets you call a css selector with a guard\n    matchCondition(args, context) {\n        const lastSelector = this.selectors[this.selectors.length - 1];\n        if (!lastSelector.evaldCondition) {\n            return false;\n        }\n        if (lastSelector.condition &&\n            !lastSelector.condition.eval(\n                new contexts.Eval(context,\n                    context.frames))) {\n            return false;\n        }\n        return true;\n    },\n\n    resetCache() {\n        this._rulesets = null;\n        this._variables = null;\n        this._properties = null;\n        this._lookups = {};\n    },\n\n    variables() {\n        if (!this._variables) {\n            this._variables = !this.rules ? {} : this.rules.reduce(function (hash, r) {\n                if (r instanceof Declaration && r.variable === true) {\n                    hash[r.name] = r;\n                }\n                // when evaluating variables in an import statement, imports have not been eval'd\n                // so we need to go inside import statements.\n                // guard against root being a string (in the case of inlined less)\n                if (r.type === 'Import' && r.root && r.root.variables) {\n                    const vars = r.root.variables();\n                    for (const name in vars) {\n                        if (vars.hasOwnProperty(name)) {\n                            hash[name] = r.root.variable(name);\n                        }\n                    }\n                }\n                return hash;\n            }, {});\n        }\n        return this._variables;\n    },\n\n    properties() {\n        if (!this._properties) {\n            this._properties = !this.rules ? {} : this.rules.reduce(function (hash, r) {\n                if (r instanceof Declaration && r.variable !== true) {\n                    const name = (r.name.length === 1) && (r.name[0] instanceof Keyword) ?\n                        r.name[0].value : r.name;\n                    // Properties don't overwrite as they can merge\n                    if (!hash[`$${name}`]) {\n                        hash[`$${name}`] = [ r ];\n                    }\n                    else {\n                        hash[`$${name}`].push(r);\n                    }\n                }\n                return hash;\n            }, {});\n        }\n        return this._properties;\n    },\n\n    variable(name) {\n        const decl = this.variables()[name];\n        if (decl) {\n            return this.parseValue(decl);\n        }\n    },\n\n    property(name) {\n        const decl = this.properties()[name];\n        if (decl) {\n            return this.parseValue(decl);\n        }\n    },\n\n    lastDeclaration() {\n        for (let i = this.rules.length; i > 0; i--) {\n            const decl = this.rules[i - 1];\n            if (decl instanceof Declaration) {\n                return this.parseValue(decl);\n            }\n        }\n    },\n\n    parseValue(toParse) {\n        const self = this;\n        function transformDeclaration(decl) {\n            if (decl.value instanceof Anonymous && !decl.parsed) {\n                if (typeof decl.value.value === 'string') {\n                    this.parse.parseNode(\n                        decl.value.value,\n                        ['value', 'important'], \n                        decl.value.getIndex(), \n                        decl.fileInfo(), \n                        function(err, result) {\n                            if (err) {\n                                decl.parsed = true;\n                            }\n                            if (result) {\n                                decl.value = result[0];\n                                decl.important = result[1] || '';\n                                decl.parsed = true;\n                            }\n                        });\n                } else {\n                    decl.parsed = true;\n                }\n\n                return decl;\n            }\n            else {\n                return decl;\n            }\n        }\n        if (!Array.isArray(toParse)) {\n            return transformDeclaration.call(self, toParse);\n        }\n        else {\n            const nodes = [];\n            toParse.forEach(function(n) {\n                nodes.push(transformDeclaration.call(self, n));\n            });\n            return nodes;\n        }\n    },\n\n    rulesets() {\n        if (!this.rules) { return []; }\n\n        const filtRules = [];\n        const rules = this.rules;\n        let i;\n        let rule;\n\n        for (i = 0; (rule = rules[i]); i++) {\n            if (rule.isRuleset) {\n                filtRules.push(rule);\n            }\n        }\n\n        return filtRules;\n    },\n\n    prependRule(rule) {\n        const rules = this.rules;\n        if (rules) {\n            rules.unshift(rule);\n        } else {\n            this.rules = [ rule ];\n        }\n        this.setParent(rule, this);\n    },\n\n    find(selector, self, filter) {\n        self = self || this;\n        const rules = [];\n        let match;\n        let foundMixins;\n        const key = selector.toCSS();\n\n        if (key in this._lookups) { return this._lookups[key]; }\n\n        this.rulesets().forEach(function (rule) {\n            if (rule !== self) {\n                for (let j = 0; j < rule.selectors.length; j++) {\n                    match = selector.match(rule.selectors[j]);\n                    if (match) {\n                        if (selector.elements.length > match) {\n                            if (!filter || filter(rule)) {\n                                foundMixins = rule.find(new Selector(selector.elements.slice(match)), self, filter);\n                                for (let i = 0; i < foundMixins.length; ++i) {\n                                    foundMixins[i].path.push(rule);\n                                }\n                                Array.prototype.push.apply(rules, foundMixins);\n                            }\n                        } else {\n                            rules.push({ rule, path: []});\n                        }\n                        break;\n                    }\n                }\n            }\n        });\n        this._lookups[key] = rules;\n        return rules;\n    },\n\n    genCSS(context, output) {\n        let i;\n        let j;\n        const charsetRuleNodes = [];\n        let ruleNodes = [];\n\n        let // Line number debugging\n            debugInfo;\n\n        let rule;\n        let path;\n\n        context.tabLevel = (context.tabLevel || 0);\n\n        if (!this.root) {\n            context.tabLevel++;\n        }\n\n        const tabRuleStr = context.compress ? '' : Array(context.tabLevel + 1).join('  ');\n        const tabSetStr = context.compress ? '' : Array(context.tabLevel).join('  ');\n        let sep;\n\n        let charsetNodeIndex = 0;\n        let importNodeIndex = 0;\n        for (i = 0; (rule = this.rules[i]); i++) {\n            if (rule instanceof Comment) {\n                if (importNodeIndex === i) {\n                    importNodeIndex++;\n                }\n                ruleNodes.push(rule);\n            } else if (rule.isCharset && rule.isCharset()) {\n                ruleNodes.splice(charsetNodeIndex, 0, rule);\n                charsetNodeIndex++;\n                importNodeIndex++;\n            } else if (rule.type === 'Import') {\n                ruleNodes.splice(importNodeIndex, 0, rule);\n                importNodeIndex++;\n            } else {\n                ruleNodes.push(rule);\n            }\n        }\n        ruleNodes = charsetRuleNodes.concat(ruleNodes);\n\n        // If this is the root node, we don't render\n        // a selector, or {}.\n        if (!this.root) {\n            debugInfo = getDebugInfo(context, this, tabSetStr);\n\n            if (debugInfo) {\n                output.add(debugInfo);\n                output.add(tabSetStr);\n            }\n\n            const paths = this.paths;\n            const pathCnt = paths.length;\n            let pathSubCnt;\n\n            sep = context.compress ? ',' : (`,\\n${tabSetStr}`);\n\n            for (i = 0; i < pathCnt; i++) {\n                path = paths[i];\n                if (!(pathSubCnt = path.length)) { continue; }\n                if (i > 0) { output.add(sep); }\n\n                context.firstSelector = true;\n                path[0].genCSS(context, output);\n\n                context.firstSelector = false;\n                for (j = 1; j < pathSubCnt; j++) {\n                    path[j].genCSS(context, output);\n                }\n            }\n\n            output.add((context.compress ? '{' : ' {\\n') + tabRuleStr);\n        }\n\n        // Compile rules and rulesets\n        for (i = 0; (rule = ruleNodes[i]); i++) {\n\n            if (i + 1 === ruleNodes.length) {\n                context.lastRule = true;\n            }\n\n            const currentLastRule = context.lastRule;\n            if (rule.isRulesetLike(rule)) {\n                context.lastRule = false;\n            }\n\n            if (rule.genCSS) {\n                rule.genCSS(context, output);\n            } else if (rule.value) {\n                output.add(rule.value.toString());\n            }\n\n            context.lastRule = currentLastRule;\n\n            if (!context.lastRule && rule.isVisible()) {\n                output.add(context.compress ? '' : (`\\n${tabRuleStr}`));\n            } else {\n                context.lastRule = false;\n            }\n        }\n\n        if (!this.root) {\n            output.add((context.compress ? '}' : `\\n${tabSetStr}}`));\n            context.tabLevel--;\n        }\n\n        if (!output.isEmpty() && !context.compress && this.firstRoot) {\n            output.add('\\n');\n        }\n    },\n\n    joinSelectors(paths, context, selectors) {\n        for (let s = 0; s < selectors.length; s++) {\n            this.joinSelector(paths, context, selectors[s]);\n        }\n    },\n\n    joinSelector(paths, context, selector) {\n\n        function createParenthesis(elementsToPak, originalElement) {\n            let replacementParen, j;\n            if (elementsToPak.length === 0) {\n                replacementParen = new Paren(elementsToPak[0]);\n            } else {\n                const insideParent = new Array(elementsToPak.length);\n                for (j = 0; j < elementsToPak.length; j++) {\n                    insideParent[j] = new Element(\n                        null,\n                        elementsToPak[j],\n                        originalElement.isVariable,\n                        originalElement._index,\n                        originalElement._fileInfo\n                    );\n                }\n                replacementParen = new Paren(new Selector(insideParent));\n            }\n            return replacementParen;\n        }\n\n        function createSelector(containedElement, originalElement) {\n            let element, selector;\n            element = new Element(null, containedElement, originalElement.isVariable, originalElement._index, originalElement._fileInfo);\n            selector = new Selector([element]);\n            return selector;\n        }\n\n        // joins selector path from `beginningPath` with selector path in `addPath`\n        // `replacedElement` contains element that is being replaced by `addPath`\n        // returns concatenated path\n        function addReplacementIntoPath(beginningPath, addPath, replacedElement, originalSelector) {\n            let newSelectorPath, lastSelector, newJoinedSelector;\n            // our new selector path\n            newSelectorPath = [];\n\n            // construct the joined selector - if & is the first thing this will be empty,\n            // if not newJoinedSelector will be the last set of elements in the selector\n            if (beginningPath.length > 0) {\n                newSelectorPath = utils.copyArray(beginningPath);\n                lastSelector = newSelectorPath.pop();\n                newJoinedSelector = originalSelector.createDerived(utils.copyArray(lastSelector.elements));\n            }\n            else {\n                newJoinedSelector = originalSelector.createDerived([]);\n            }\n\n            if (addPath.length > 0) {\n                // /deep/ is a CSS4 selector - (removed, so should deprecate)\n                // that is valid without anything in front of it\n                // so if the & does not have a combinator that is \"\" or \" \" then\n                // and there is a combinator on the parent, then grab that.\n                // this also allows + a { & .b { .a & { ... though not sure why you would want to do that\n                let combinator = replacedElement.combinator;\n\n                const parentEl = addPath[0].elements[0];\n                if (combinator.emptyOrWhitespace && !parentEl.combinator.emptyOrWhitespace) {\n                    combinator = parentEl.combinator;\n                }\n                // join the elements so far with the first part of the parent\n                newJoinedSelector.elements.push(new Element(\n                    combinator,\n                    parentEl.value,\n                    replacedElement.isVariable,\n                    replacedElement._index,\n                    replacedElement._fileInfo\n                ));\n                newJoinedSelector.elements = newJoinedSelector.elements.concat(addPath[0].elements.slice(1));\n            }\n\n            // now add the joined selector - but only if it is not empty\n            if (newJoinedSelector.elements.length !== 0) {\n                newSelectorPath.push(newJoinedSelector);\n            }\n\n            // put together the parent selectors after the join (e.g. the rest of the parent)\n            if (addPath.length > 1) {\n                let restOfPath = addPath.slice(1);\n                restOfPath = restOfPath.map(function (selector) {\n                    return selector.createDerived(selector.elements, []);\n                });\n                newSelectorPath = newSelectorPath.concat(restOfPath);\n            }\n            return newSelectorPath;\n        }\n\n        // joins selector path from `beginningPath` with every selector path in `addPaths` array\n        // `replacedElement` contains element that is being replaced by `addPath`\n        // returns array with all concatenated paths\n        function addAllReplacementsIntoPath( beginningPath, addPaths, replacedElement, originalSelector, result) {\n            let j;\n            for (j = 0; j < beginningPath.length; j++) {\n                const newSelectorPath = addReplacementIntoPath(beginningPath[j], addPaths, replacedElement, originalSelector);\n                result.push(newSelectorPath);\n            }\n            return result;\n        }\n\n        function mergeElementsOnToSelectors(elements, selectors) {\n            let i, sel;\n\n            if (elements.length === 0) {\n                return ;\n            }\n            if (selectors.length === 0) {\n                selectors.push([ new Selector(elements) ]);\n                return;\n            }\n\n            for (i = 0; (sel = selectors[i]); i++) {\n                // if the previous thing in sel is a parent this needs to join on to it\n                if (sel.length > 0) {\n                    sel[sel.length - 1] = sel[sel.length - 1].createDerived(sel[sel.length - 1].elements.concat(elements));\n                }\n                else {\n                    sel.push(new Selector(elements));\n                }\n            }\n        }\n\n        // replace all parent selectors inside `inSelector` by content of `context` array\n        // resulting selectors are returned inside `paths` array\n        // returns true if `inSelector` contained at least one parent selector\n        function replaceParentSelector(paths, context, inSelector) {\n            // The paths are [[Selector]]\n            // The first list is a list of comma separated selectors\n            // The inner list is a list of inheritance separated selectors\n            // e.g.\n            // .a, .b {\n            //   .c {\n            //   }\n            // }\n            // == [[.a] [.c]] [[.b] [.c]]\n            //\n            let i, j, k, currentElements, newSelectors, selectorsMultiplied, sel, el, hadParentSelector = false, length, lastSelector;\n            function findNestedSelector(element) {\n                let maybeSelector;\n                if (!(element.value instanceof Paren)) {\n                    return null;\n                }\n\n                maybeSelector = element.value.value;\n                if (!(maybeSelector instanceof Selector)) {\n                    return null;\n                }\n\n                return maybeSelector;\n            }\n\n            // the elements from the current selector so far\n            currentElements = [];\n            // the current list of new selectors to add to the path.\n            // We will build it up. We initiate it with one empty selector as we \"multiply\" the new selectors\n            // by the parents\n            newSelectors = [\n                []\n            ];\n\n            for (i = 0; (el = inSelector.elements[i]); i++) {\n                // non parent reference elements just get added\n                if (el.value !== '&') {\n                    const nestedSelector = findNestedSelector(el);\n                    if (nestedSelector != null) {\n                        // merge the current list of non parent selector elements\n                        // on to the current list of selectors to add\n                        mergeElementsOnToSelectors(currentElements, newSelectors);\n\n                        const nestedPaths = [];\n                        let replaced;\n                        const replacedNewSelectors = [];\n                        replaced = replaceParentSelector(nestedPaths, context, nestedSelector);\n                        hadParentSelector = hadParentSelector || replaced;\n                        // the nestedPaths array should have only one member - replaceParentSelector does not multiply selectors\n                        for (k = 0; k < nestedPaths.length; k++) {\n                            const replacementSelector = createSelector(createParenthesis(nestedPaths[k], el), el);\n                            addAllReplacementsIntoPath(newSelectors, [replacementSelector], el, inSelector, replacedNewSelectors);\n                        }\n                        newSelectors = replacedNewSelectors;\n                        currentElements = [];\n                    } else {\n                        currentElements.push(el);\n                    }\n\n                } else {\n                    hadParentSelector = true;\n                    // the new list of selectors to add\n                    selectorsMultiplied = [];\n\n                    // merge the current list of non parent selector elements\n                    // on to the current list of selectors to add\n                    mergeElementsOnToSelectors(currentElements, newSelectors);\n\n                    // loop through our current selectors\n                    for (j = 0; j < newSelectors.length; j++) {\n                        sel = newSelectors[j];\n                        // if we don't have any parent paths, the & might be in a mixin so that it can be used\n                        // whether there are parents or not\n                        if (context.length === 0) {\n                            // the combinator used on el should now be applied to the next element instead so that\n                            // it is not lost\n                            if (sel.length > 0) {\n                                sel[0].elements.push(new Element(el.combinator, '', el.isVariable, el._index, el._fileInfo));\n                            }\n                            selectorsMultiplied.push(sel);\n                        }\n                        else {\n                            // and the parent selectors\n                            for (k = 0; k < context.length; k++) {\n                                // We need to put the current selectors\n                                // then join the last selector's elements on to the parents selectors\n                                const newSelectorPath = addReplacementIntoPath(sel, context[k], el, inSelector);\n                                // add that to our new set of selectors\n                                selectorsMultiplied.push(newSelectorPath);\n                            }\n                        }\n                    }\n\n                    // our new selectors has been multiplied, so reset the state\n                    newSelectors = selectorsMultiplied;\n                    currentElements = [];\n                }\n            }\n\n            // if we have any elements left over (e.g. .a& .b == .b)\n            // add them on to all the current selectors\n            mergeElementsOnToSelectors(currentElements, newSelectors);\n\n            for (i = 0; i < newSelectors.length; i++) {\n                length = newSelectors[i].length;\n                if (length > 0) {\n                    paths.push(newSelectors[i]);\n                    lastSelector = newSelectors[i][length - 1];\n                    newSelectors[i][length - 1] = lastSelector.createDerived(lastSelector.elements, inSelector.extendList);\n                }\n            }\n\n            return hadParentSelector;\n        }\n\n        function deriveSelector(visibilityInfo, deriveFrom) {\n            const newSelector = deriveFrom.createDerived(deriveFrom.elements, deriveFrom.extendList, deriveFrom.evaldCondition);\n            newSelector.copyVisibilityInfo(visibilityInfo);\n            return newSelector;\n        }\n\n        // joinSelector code follows\n        let i, newPaths, hadParentSelector;\n\n        newPaths = [];\n        hadParentSelector = replaceParentSelector(newPaths, context, selector);\n\n        if (!hadParentSelector) {\n            if (context.length > 0) {\n                newPaths = [];\n                for (i = 0; i < context.length; i++) {\n\n                    const concatenated = context[i].map(deriveSelector.bind(this, selector.visibilityInfo()));\n\n                    concatenated.push(selector);\n                    newPaths.push(concatenated);\n                }\n            }\n            else {\n                newPaths = [[selector]];\n            }\n        }\n\n        for (i = 0; i < newPaths.length; i++) {\n            paths.push(newPaths[i]);\n        }\n\n    }\n});\n\nexport default Ruleset;\n"]}