Skip to content

Commit

Permalink
Properly support selector lists for selector.extend() (#1378)
Browse files Browse the repository at this point in the history
Closes #1301
  • Loading branch information
nex3 committed Jun 24, 2021
1 parent 83343d7 commit 655fcfc
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 16 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.md
Expand Up @@ -13,6 +13,9 @@
URLs (those that begin with `/`) in `@import` rules would be passed to
both Dart and JS importers as `file:` URLs.

* Properly support selector lists for the `$extendee` argument to
`selector.extend()` and `selector.replace()`.

* Fix an edge case where `@extend` wouldn't affect a selector within a
pseudo-selector such as `:is()` that itself extended other selectors.

Expand Down
29 changes: 13 additions & 16 deletions lib/src/extend/extension_store.dart
Expand Up @@ -95,28 +95,25 @@ class ExtensionStore {
SelectorList targets,
ExtendMode mode,
FileSpan span) {
var compoundTargets = [
for (var complex in targets.components)
if (complex.components.length != 1)
throw SassScriptException("Can't extend complex selector $complex.")
else
complex.components.first as CompoundSelector
];

var extensions = {
for (var compound in compoundTargets)
var extender = ExtensionStore._mode(mode);
if (!selector.isInvisible) {
extender._originals.addAll(selector.components);
}

for (var complex in targets.components) {
if (complex.components.length != 1) {
throw SassScriptException("Can't extend complex selector $complex.");
}
var compound = complex.components.first as CompoundSelector;

selector = extender._extendList(selector, span, {
for (var simple in compound.components)
simple: {
for (var complex in source.components)
complex: Extension(complex, span, simple, span, optional: true)
}
};

var extender = ExtensionStore._mode(mode);
if (!selector.isInvisible) {
extender._originals.addAll(selector.components);
});
}
selector = extender._extendList(selector, span, extensions);

return selector;
}
Expand Down

0 comments on commit 655fcfc

Please sign in to comment.