|
4 | 4 |
|
5 | 5 | import 'package:source_span/source_span.dart'; |
6 | 6 |
|
| 7 | +import '../../../util/box.dart'; |
7 | 8 | import '../../../visitor/interface/modifiable_css.dart'; |
8 | 9 | import '../../selector.dart'; |
9 | 10 | import '../style_rule.dart'; |
10 | 11 | import 'node.dart'; |
11 | | -import 'value.dart'; |
12 | 12 |
|
13 | 13 | /// A modifiable version of [CssStyleRule] for use in the evaluation step. |
14 | 14 | class ModifiableCssStyleRule extends ModifiableCssParentNode |
15 | 15 | implements CssStyleRule { |
16 | | - final ModifiableCssValue<SelectorList> selector; |
| 16 | + SelectorList get selector => _selector.value; |
| 17 | + |
| 18 | + /// A reference to the modifiable selector list provided by the extension |
| 19 | + /// store, which may update it over time as new extensions are applied. |
| 20 | + final Box<SelectorList> _selector; |
| 21 | + |
17 | 22 | final SelectorList originalSelector; |
18 | 23 | final FileSpan span; |
19 | 24 |
|
20 | 25 | /// Creates a new [ModifiableCssStyleRule]. |
21 | 26 | /// |
22 | | - /// If [originalSelector] isn't passed, it defaults to [selector.value]. |
23 | | - ModifiableCssStyleRule(this.selector, this.span, |
| 27 | + /// If [originalSelector] isn't passed, it defaults to [_selector.value]. |
| 28 | + ModifiableCssStyleRule(this._selector, this.span, |
24 | 29 | {SelectorList? originalSelector}) |
25 | | - : originalSelector = originalSelector ?? selector.value; |
| 30 | + : originalSelector = originalSelector ?? _selector.value; |
26 | 31 |
|
27 | 32 | T accept<T>(ModifiableCssVisitor<T> visitor) => |
28 | 33 | visitor.visitCssStyleRule(this); |
29 | 34 |
|
30 | 35 | ModifiableCssStyleRule copyWithoutChildren() => |
31 | | - ModifiableCssStyleRule(selector, span, |
| 36 | + ModifiableCssStyleRule(_selector, span, |
32 | 37 | originalSelector: originalSelector); |
33 | 38 | } |
0 commit comments