Skip to content

Commit eec198f

Browse files
committed
fix: 去掉样式继承逻辑
1 parent e48ac5a commit eec198f

File tree

2 files changed

+2
-119
lines changed

2 files changed

+2
-119
lines changed

src/style_parser.rs

Lines changed: 2 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ use lightningcss::{
55
declaration::DeclarationBlock,
66
properties::Property,
77
rules::CssRule,
8-
stylesheet::{ParserOptions, PrinterOptions, StyleSheet},
8+
stylesheet::{ParserOptions, StyleSheet},
99
visit_types,
1010
visitor::{Visit, VisitTypes, Visitor},
1111
};
1212

13-
use crate::{document::JSXDocument, scraper::Selector, utils::is_style_inheritable};
13+
use crate::{document::JSXDocument, scraper::Selector};
1414

1515
#[derive(Debug, Clone)]
1616
pub struct StyleDeclaration<'i> {
@@ -135,49 +135,6 @@ impl<'i> StyleParser<'i> {
135135
},
136136
);
137137
}
138-
let parent_style_declarations: HashMap<_, _> = final_style_record
139-
.iter()
140-
.map(|(id, _)| {
141-
let mut parents = Vec::new();
142-
let mut node = self.document.tree.get(*id).unwrap();
143-
// 找到所有父节点
144-
while let Some(parent) = node.parent() {
145-
parents.push(parent);
146-
node = parent;
147-
}
148-
let parent_declarations: Vec<_> = parents
149-
.iter()
150-
.rev()
151-
.filter_map(|parent| final_style_record.get(&parent.id()))
152-
.flat_map(|parent_declarations| &parent_declarations.declaration.declarations)
153-
.cloned()
154-
.collect();
155-
(*id, parent_declarations)
156-
})
157-
.collect();
158-
159-
for (id, style_declaration) in final_style_record.iter_mut() {
160-
let final_properties = &mut style_declaration.declaration.declarations;
161-
if let Some(parent_declarations) = parent_style_declarations.get(id) {
162-
for parent_declaration in parent_declarations.iter() {
163-
let has_property_index = final_properties
164-
.iter()
165-
.position(|property| property.property_id() == parent_declaration.property_id());
166-
let is_style_inheritable = is_style_inheritable(parent_declaration.property_id());
167-
if let Some(index) = has_property_index {
168-
let value = final_properties[index].value_to_css_string(PrinterOptions::default());
169-
if let Ok(value) = value {
170-
// Todo "initial" "unset"
171-
if value.as_str() == "inherit" {
172-
final_properties[index] = parent_declaration.clone();
173-
}
174-
}
175-
} else if is_style_inheritable {
176-
final_properties.push(parent_declaration.clone());
177-
}
178-
}
179-
}
180-
}
181138
final_style_record
182139
}
183140
}

src/utils.rs

Lines changed: 0 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -1,76 +1,6 @@
1-
use std::collections::HashSet;
2-
31
use html5ever::{namespace_url, ns, LocalName, QualName};
4-
use lightningcss::properties::PropertyId;
5-
use once_cell::sync::Lazy;
62
use swc_ecma_ast::{JSXMemberExpr, JSXObject};
73

8-
static INHERITABLE_STYLES: Lazy<HashSet<PropertyId<'static>>> = Lazy::new(|| {
9-
let mut styles = HashSet::new();
10-
styles.insert(PropertyId::from("color"));
11-
styles.insert(PropertyId::from("font-size"));
12-
styles.insert(PropertyId::from("font-family"));
13-
styles.insert(PropertyId::from("font-weight"));
14-
15-
styles.insert(PropertyId::from("font-style"));
16-
styles.insert(PropertyId::from("font-variant"));
17-
styles.insert(PropertyId::from("font"));
18-
styles.insert(PropertyId::from("font-size-adjust"));
19-
styles.insert(PropertyId::from("font-stretch"));
20-
styles.insert(PropertyId::from("font-smoothing"));
21-
styles.insert(PropertyId::from("font-synthesis"));
22-
styles.insert(PropertyId::from("font-feature-settings"));
23-
styles.insert(PropertyId::from("font-kerning"));
24-
styles.insert(PropertyId::from("font-variant-caps"));
25-
styles.insert(PropertyId::from("font-variant-numeric"));
26-
styles.insert(PropertyId::from("font-variant-east-asian"));
27-
styles.insert(PropertyId::from("font-variant-ligatures"));
28-
styles.insert(PropertyId::from("font-variant-position"));
29-
styles.insert(PropertyId::from("line-height"));
30-
styles.insert(PropertyId::from("visibility"));
31-
styles.insert(PropertyId::from("white-space"));
32-
styles.insert(PropertyId::from("word-spacing"));
33-
styles.insert(PropertyId::from("letter-spacing"));
34-
styles.insert(PropertyId::from("text-align"));
35-
styles.insert(PropertyId::from("text-emphasize"));
36-
styles.insert(PropertyId::from("text-rendering"));
37-
styles.insert(PropertyId::from("text-indent"));
38-
styles.insert(PropertyId::from("text-transform"));
39-
styles.insert(PropertyId::from("text-decoration-thickness"));
40-
styles.insert(PropertyId::from("text-decoration-offset"));
41-
styles.insert(PropertyId::from("cursor"));
42-
styles.insert(PropertyId::from("direction"));
43-
styles.insert(PropertyId::from("quotes"));
44-
styles.insert(PropertyId::from("caption-side"));
45-
styles.insert(PropertyId::from("border-collapse"));
46-
styles.insert(PropertyId::from("border-spacing"));
47-
styles.insert(PropertyId::from("empty-cells"));
48-
styles.insert(PropertyId::from("table-layout"));
49-
styles.insert(PropertyId::from("list-style-type"));
50-
styles.insert(PropertyId::from("list-style-image"));
51-
styles.insert(PropertyId::from("list-style-position"));
52-
styles.insert(PropertyId::from("list-style"));
53-
styles.insert(PropertyId::from("page-break-inside"));
54-
styles.insert(PropertyId::from("page"));
55-
styles.insert(PropertyId::from("orphans"));
56-
styles.insert(PropertyId::from("windows"));
57-
styles.insert(PropertyId::from("speak"));
58-
styles.insert(PropertyId::from("speak-punctuation"));
59-
styles.insert(PropertyId::from("speak-numeral"));
60-
styles.insert(PropertyId::from("speak-header"));
61-
styles.insert(PropertyId::from("speech-rate"));
62-
styles.insert(PropertyId::from("volume"));
63-
styles.insert(PropertyId::from("voice-family"));
64-
styles.insert(PropertyId::from("pitch"));
65-
styles.insert(PropertyId::from("pitch-range"));
66-
styles.insert(PropertyId::from("stress"));
67-
styles.insert(PropertyId::from("richness"));
68-
styles.insert(PropertyId::from("azimuth"));
69-
styles.insert(PropertyId::from("elevation"));
70-
71-
styles
72-
});
73-
744
pub fn recursion_jsx_member(expr: &JSXMemberExpr) -> String {
755
match &expr.obj {
766
JSXObject::JSXMemberExpr(expr) => {
@@ -90,10 +20,6 @@ pub fn create_qualname(str: &str) -> QualName {
9020
QualName::new(None, ns!(), LocalName::from(str))
9121
}
9222

93-
pub fn is_style_inheritable(style: PropertyId<'_>) -> bool {
94-
INHERITABLE_STYLES.contains(&style)
95-
}
96-
9723
pub fn is_starts_with_uppercase(str: &str) -> bool {
9824
str.chars().next().unwrap().is_uppercase()
9925
}

0 commit comments

Comments
 (0)