From dbee1fd9f487fb2a8fbd351a33603d5b2e0510c2 Mon Sep 17 00:00:00 2001 From: lishaobos <46661044+lishaobos@users.noreply.github.com> Date: Wed, 9 Nov 2022 15:46:56 +0800 Subject: [PATCH] fix(vscode): selection style with media (#1863) Co-authored-by: cuiluc Co-authored-by: Anthony Fu --- packages/vscode/src/selectionStyle.ts | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/packages/vscode/src/selectionStyle.ts b/packages/vscode/src/selectionStyle.ts index cda9af0f5d..5be746ed41 100644 --- a/packages/vscode/src/selectionStyle.ts +++ b/packages/vscode/src/selectionStyle.ts @@ -35,7 +35,7 @@ export async function registerSelectionStyle(cwd: string, contextLoader: Context code = `${code} >` const ctx = await contextLoader.resolveContext(code, id) || (await contextLoader.resolveClosestContext(code, id)) const result = await getMatchedPositionsFromCode(ctx.uno, code) - if (!result.length) + if (result.length <= 1) return reset() const uniqMap = new Map() @@ -47,13 +47,15 @@ export async function registerSelectionStyle(cwd: string, contextLoader: Context await Promise.all(Array.from(uniqMap.values()) .map(async (name) => { const tokens = await ctx.uno.parseToken(name, classNamePlaceholder) || [] - tokens.forEach((token) => { - if (token[1] && token[2]) { - const key = token[1] + tokens.forEach(([, className, cssText, media]) => { + if (className && cssText) { + let key = className .replace(`.${classNamePlaceholder}`, '&') .replace(regexScopePlaceholder, ' ') .trim() - sheetMap.set(key, (sheetMap.get(key) || '') + token[2]) + if (media) + key = `${media}{${key}` + sheetMap.set(key, (sheetMap.get(key) || '') + cssText) } }) }), @@ -61,7 +63,7 @@ export async function registerSelectionStyle(cwd: string, contextLoader: Context const css = Array.from(sheetMap.keys()) .sort() - .map(key => `${key}{${sheetMap.get(key)}}`) + .map(key => `${key}{${sheetMap.get(key)}}${key.includes('{') ? '}' : ''}`) .join('\n') const prettified = prettier.format(css, {