From 28c57b7a789e73dbb41abbb117cda0f534887563 Mon Sep 17 00:00:00 2001 From: owjs3901 Date: Tue, 18 Feb 2025 14:36:48 +0900 Subject: [PATCH] Fix dark selector issue --- .changeset/neat-kiwis-teach.md | 5 ++ Cargo.lock | 57 ++++++++++--------- libs/extractor/Cargo.toml | 12 ++-- libs/extractor/src/lib.rs | 21 +++++++ .../extractor__tests__theme_selector-3.snap | 48 ++++++++++++++++ libs/extractor/src/style_extractor.rs | 14 ++++- 6 files changed, 122 insertions(+), 35 deletions(-) create mode 100644 .changeset/neat-kiwis-teach.md create mode 100644 libs/extractor/src/snapshots/extractor__tests__theme_selector-3.snap diff --git a/.changeset/neat-kiwis-teach.md b/.changeset/neat-kiwis-teach.md new file mode 100644 index 00000000..3e0143fa --- /dev/null +++ b/.changeset/neat-kiwis-teach.md @@ -0,0 +1,5 @@ +--- +"@devup-ui/wasm": patch +--- + +Fix dark selector issue diff --git a/Cargo.lock b/Cargo.lock index 3b5981c1..82111ccf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -624,9 +624,9 @@ dependencies = [ [[package]] name = "oxc_allocator" -version = "0.50.0" +version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "417522e84d8fdc87cab7bfc95b6419757c3d2f2013b78491c0295135d3516945" +checksum = "5a6d450673da14c60c6946deb0c06d68377d2d6f2ee41ad5b462fa9894001560" dependencies = [ "allocator-api2", "bumpalo", @@ -637,9 +637,9 @@ dependencies = [ [[package]] name = "oxc_ast" -version = "0.50.0" +version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2e0b6014198425ee79e1e0c71c79fc874f3a7c7007043d9ce1b353f740de488" +checksum = "692c74b135e66d3fa13312d886f4a307131a5bd2fd76e5a4137825c6161b56a5" dependencies = [ "bitflags", "cow-utils", @@ -654,9 +654,9 @@ dependencies = [ [[package]] name = "oxc_ast_macros" -version = "0.50.0" +version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a58764050b69c30bdf45a6f803bff212306ba9ac50277f21a231ff6e110da682" +checksum = "d4759d0523a72576036df640954ac9c4ce995f39f290cfc723221cc45ac7b11a" dependencies = [ "proc-macro2", "quote", @@ -665,9 +665,9 @@ dependencies = [ [[package]] name = "oxc_cfg" -version = "0.50.0" +version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "621ea878d0e487215822fe61c98afaa337e79f8290352a95bd8d37c45eab0484" +checksum = "c58e5838966f971c24e8be8c34fb901e6e8a48211ea1db6d66c76fbb77b58d6c" dependencies = [ "bitflags", "itertools 0.14.0", @@ -680,9 +680,9 @@ dependencies = [ [[package]] name = "oxc_codegen" -version = "0.50.0" +version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f68faeabfca1a9ad49b26939766185e87f4d03d08d917b465b1956db7d2ac466" +checksum = "b6e298be4a113f57749ed51a38dc253671eaed418a5de6dbd2bf29ff34c4f595" dependencies = [ "assert-unchecked", "bitflags", @@ -702,9 +702,9 @@ dependencies = [ [[package]] name = "oxc_data_structures" -version = "0.50.0" +version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f3c3ebb1b248fa1a5ea965b7398eb0533f45545c6cbe28cd581f57211413096" +checksum = "8e87ee74753f20549e9d6bcc00e956f5ab67fde4a23e383fd4f7d8ad752d71d3" dependencies = [ "assert-unchecked", "ropey", @@ -712,9 +712,9 @@ dependencies = [ [[package]] name = "oxc_diagnostics" -version = "0.50.0" +version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae69c956abfbadf5c31f08dc2b901bcefadb87a472106e13ae2b6a01135c66c2" +checksum = "e27133a883a4f5d9796259a3ca6ab28ba8c097ee32cd58fc794688e205f66727" dependencies = [ "cow-utils", "oxc-miette", @@ -722,10 +722,11 @@ dependencies = [ [[package]] name = "oxc_ecmascript" -version = "0.50.0" +version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2f773d18674b21240b42a7c8bcb3522de09b8841993620286e87812d7e7866a" +checksum = "16a7535550ce59cc7373d60d13e5fb32eee1817ba9dcfa3df7a1ae96bdb0945e" dependencies = [ + "cow-utils", "num-bigint", "num-traits", "oxc_ast", @@ -735,9 +736,9 @@ dependencies = [ [[package]] name = "oxc_estree" -version = "0.50.0" +version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "244fd8ba7157c8f12910024373d4e3665b6a35fb5947edae1d4a6c084ac8e0c3" +checksum = "a817a58818b63a5b26a15527e9c7f09c93ba1a95f570ae75e5e84bd3dee047de" [[package]] name = "oxc_index" @@ -747,9 +748,9 @@ checksum = "5eca5d9726cd0a6e433debe003b7bc88b2ecad0bb6109f0cef7c55e692139a34" [[package]] name = "oxc_parser" -version = "0.50.0" +version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9d2ce3556a0ec6ee45da6936c5f04d97e6f00ef7ddca08dcc473094a21cfed" +checksum = "6410afa5ad3cde657f26803f828726b8d3b475131299faf5c7948299892a560c" dependencies = [ "assert-unchecked", "bitflags", @@ -770,9 +771,9 @@ dependencies = [ [[package]] name = "oxc_regular_expression" -version = "0.50.0" +version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0e6d43914ff6758f62cf150f12d068a737fd464735d6b83ecefc7136f65e685" +checksum = "9711b8c74f28de9a295bc03baf7d61abf47af35556156e49f3a44fa572194325" dependencies = [ "oxc_allocator", "oxc_ast_macros", @@ -786,9 +787,9 @@ dependencies = [ [[package]] name = "oxc_semantic" -version = "0.50.0" +version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e08d8bb5afc64dfc05e9f3b573c9af8b23a9a24aceb2bb1634d1f131717b736" +checksum = "18e0eac139ab28789789f993fa4955c386454d7c34c1adfe44448c1cb7769cf0" dependencies = [ "assert-unchecked", "itertools 0.14.0", @@ -822,9 +823,9 @@ dependencies = [ [[package]] name = "oxc_span" -version = "0.50.0" +version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ae8953d32ade84e814d154ee046f0f08b2b236e12f550545a690454ab2a102c" +checksum = "f8c7d6b92b30eea1fdc8907c6dfe8525b75a815024d6567628697789076fb7e1" dependencies = [ "compact_str", "oxc-miette", @@ -835,9 +836,9 @@ dependencies = [ [[package]] name = "oxc_syntax" -version = "0.50.0" +version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f375deb505b7fad6ed2125fdb92ffa8d550d866ca2ab0dfd24e681b125883c1" +checksum = "9540bf5b53cb0cd81dbdf07b25834a5064b762e6a330ca35d0d424a581a442b8" dependencies = [ "assert-unchecked", "bitflags", diff --git a/libs/extractor/Cargo.toml b/libs/extractor/Cargo.toml index 02767f8b..abb46ea7 100644 --- a/libs/extractor/Cargo.toml +++ b/libs/extractor/Cargo.toml @@ -4,12 +4,12 @@ version = "0.1.0" edition = "2021" [dependencies] -oxc_parser = "0.50.0" -oxc_syntax = "0.50.0" -oxc_span = "0.50.0" -oxc_allocator = "0.50.0" -oxc_ast = "0.50.0" -oxc_codegen = "0.50.0" +oxc_parser = "0.51.0" +oxc_syntax = "0.51.0" +oxc_span = "0.51.0" +oxc_allocator = "0.51.0" +oxc_ast = "0.51.0" +oxc_codegen = "0.51.0" css = { path = "../css" } once_cell = "1.20.3" diff --git a/libs/extractor/src/lib.rs b/libs/extractor/src/lib.rs index 17b19595..f9bf3e57 100644 --- a/libs/extractor/src/lib.rs +++ b/libs/extractor/src/lib.rs @@ -2168,6 +2168,27 @@ import {Button} from '@devup/ui' } ) .unwrap()); + println!("================="); + + reset_class_map(); + assert_debug_snapshot!(extract( + "test.js", + r#"import {Box} from '@devup-ui/core' + + "#, + ExtractOption { + package: "@devup-ui/core".to_string(), + css_file: None + } + ) + .unwrap()); } #[test] diff --git a/libs/extractor/src/snapshots/extractor__tests__theme_selector-3.snap b/libs/extractor/src/snapshots/extractor__tests__theme_selector-3.snap new file mode 100644 index 00000000..461c37ca --- /dev/null +++ b/libs/extractor/src/snapshots/extractor__tests__theme_selector-3.snap @@ -0,0 +1,48 @@ +--- +source: libs/extractor/src/lib.rs +expression: "extract(\"test.js\",\nr#\"import {Box} from '@devup-ui/core'\n \n \"#,\nExtractOption\n{ package: \"@devup-ui/core\".to_string(), css_file: None }).unwrap()" +--- +ExtractOutput { + styles: [ + Static( + ExtractStaticStyle { + property: "background", + value: "white", + level: 0, + selector: Some( + Selector( + "&:hover", + ), + ), + style_order: None, + }, + ), + Static( + ExtractStaticStyle { + property: "boxSize", + value: "100%", + level: 0, + selector: Some( + Selector( + ":root[data-theme=dark] & :is(svg,img)", + ), + ), + style_order: None, + }, + ), + Static( + ExtractStaticStyle { + property: "filter", + value: "brightness(0) invert(1)", + level: 0, + selector: Some( + Selector( + ":root[data-theme=dark] & :is(svg,img)", + ), + ), + style_order: None, + }, + ), + ], + code: "import \"@devup-ui/core/devup-ui.css\";\n
;\n", +} diff --git a/libs/extractor/src/style_extractor.rs b/libs/extractor/src/style_extractor.rs index f69f0a6a..8ff36cc8 100644 --- a/libs/extractor/src/style_extractor.rs +++ b/libs/extractor/src/style_extractor.rs @@ -269,7 +269,19 @@ pub fn extract_style_from_expression<'a>( None, &mut o.value, level, - Some(&name.as_str().into()), + Some( + &if let Some(selector) = selector { + format!( + "{}{}", + selector.to_string().split("&").collect::>()[0], + name.as_str() + ) + } else { + name + } + .as_str() + .into(), + ), ) { props.append(&mut styles); }