Skip to content

Commit 0b434cd

Browse files
committed
Fix ordering logic in style comparison and update class name serialization
1 parent e1d8d8b commit 0b434cd

File tree

2 files changed

+23
-21
lines changed

2 files changed

+23
-21
lines changed

.changeset/dry-readers-doubt.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@devup-ui/wasm": patch
3+
---
4+
5+
Fix order issue

libs/sheet/src/lib.rs

Lines changed: 18 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,15 @@ use crate::theme::Theme;
44
use css::{convert_property, merge_selector, PropertyType, StyleSelector};
55
use serde::de::Error;
66
use serde::{Deserialize, Deserializer, Serialize};
7-
use std::cmp::Ordering::{Greater, Less};
7+
use std::cmp::Ordering::{Equal, Greater, Less};
88
use std::collections::{BTreeMap, HashSet};
99

1010
trait ExtractStyle {
1111
fn extract(&self) -> String;
1212
}
1313

1414
#[derive(Debug, Hash, Eq, PartialEq, Deserialize, Serialize)]
15+
#[serde(rename_all = "camelCase")]
1516
pub struct StyleSheetProperty {
1617
pub class_name: String,
1718
pub property: String,
@@ -132,24 +133,20 @@ impl StyleSheet {
132133
match (a.selector.is_some(), b.selector.is_some()) {
133134
(true, false) => Greater,
134135
(false, true) => Less,
135-
(true, true) => {
136-
if a.selector == b.selector {
137-
if a.property == b.property {
138-
a.value.cmp(&b.value)
139-
} else {
140-
a.property.cmp(&b.property)
141-
}
142-
} else {
143-
a.selector.cmp(&b.selector)
144-
}
145-
}
146-
(false, false) => {
147-
if a.property == b.property {
148-
a.value.cmp(&b.value)
149-
} else {
150-
a.property.cmp(&b.property)
151-
}
152-
}
136+
(true, true) => match a.selector.cmp(&b.selector) {
137+
Equal => match a.value.cmp(&b.value) {
138+
Equal => a.class_name.cmp(&b.class_name),
139+
val => val,
140+
},
141+
val => val,
142+
},
143+
(false, false) => match a.property.cmp(&b.property) {
144+
Equal => match a.value.cmp(&b.value) {
145+
Equal => a.class_name.cmp(&b.class_name),
146+
val => val,
147+
},
148+
prop => prop,
149+
},
153150
}
154151
} else {
155152
b.basic.cmp(&a.basic)
@@ -348,7 +345,7 @@ mod tests {
348345
"properties": {
349346
"0": [
350347
{
351-
"class_name": "test",
348+
"className": "test",
352349
"property": "mx",
353350
"value": "40px",
354351
"selector": null,
@@ -382,7 +379,7 @@ mod tests {
382379
"properties": {
383380
"wrong": [
384381
{
385-
"class_name": "test",
382+
"className": "test",
386383
"property": "mx",
387384
"value": "40px",
388385
"selector": null,

0 commit comments

Comments
 (0)