From 7eac937accbe61d1e29243f06588db268aaabfa4 Mon Sep 17 00:00:00 2001 From: bflatastic Date: Sat, 7 Nov 2026 08:24:02 +0700 Subject: [PATCH] Style-heavy files: a repeated name keeps its first place, and one more lookup uses the id set --- crates/format/src/penpot.rs | 2 +- crates/format/src/rest.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/format/src/penpot.rs b/crates/format/src/penpot.rs index 64174e084..7e1a563e9 100644 --- a/crates/format/src/penpot.rs +++ b/crates/format/src/penpot.rs @@ -2157,7 +2157,7 @@ fn import_themed_tokens( } // Each set's place in the order once: a position search per comparison was quadratic in // the order's length for every one of the sort's comparisons. - let place: BTreeMap<&str, usize> = order.iter().enumerate().map(|(i, o)| (*o, i)).collect(); + let place: BTreeMap<&str, usize> = order.iter().enumerate().rev().map(|(i, o)| (*o, i)).collect(); set_names.sort_by_key(|name| place.get(name).copied().unwrap_or(usize::MAX)); let set_names: Vec<&str> = set_names.into_iter().take(512).collect(); let mut tokens: BTreeMap<&str, BTreeMap> = BTreeMap::new(); diff --git a/crates/format/src/rest.rs b/crates/format/src/rest.rs index 540be361a..823082af1 100644 --- a/crates/format/src/rest.rs +++ b/crates/format/src/rest.rs @@ -922,7 +922,7 @@ impl<'a> Ctx<'a> { fn style_definitions(&mut self, v: &'a Value) { for d in list(v, "styleDefinitions").iter().take(MAX_STYLES) { let (Some(id), Some(node)) = (text(d, "id").filter(|i| !i.is_empty()).map(clip_str), d.get("node")) else { continue }; - if self.doc.styles.iter().any(|s| s.id == id) { + if self.style_ids.contains(id) { continue; } let kind = match text(d, "styleType") {