From 63ded1bf8936f8ea6958b8083d2676d1506909dc Mon Sep 17 00:00:00 2001 From: Saya Date: Sun, 29 May 2022 21:51:17 +0800 Subject: [PATCH 1/2] feat(preset-mini)!: add css `@layer` support --- packages/preset-mini/src/variants/default.ts | 6 ++++-- packages/preset-mini/src/variants/misc.ts | 15 ++++++++++++++- .../__snapshots__/preset-attributify.test.ts.snap | 14 +++++++------- test/__snapshots__/preset-mini.test.ts.snap | 13 ++++++++++--- test/__snapshots__/preset-wind.test.ts.snap | 2 +- test/__snapshots__/shortcuts.test.ts.snap | 14 +++++++------- test/assets/preset-mini-targets.ts | 6 ++++-- test/assets/preset-wind-targets.ts | 2 +- test/preset-attributify.test.ts | 6 +++--- test/shortcuts.test.ts | 6 +++--- 10 files changed, 54 insertions(+), 30 deletions(-) diff --git a/packages/preset-mini/src/variants/default.ts b/packages/preset-mini/src/variants/default.ts index 81d5dfe6b9..9813560b54 100644 --- a/packages/preset-mini/src/variants/default.ts +++ b/packages/preset-mini/src/variants/default.ts @@ -5,13 +5,15 @@ import { variantBreakpoints } from './breakpoints' import { variantCombinators } from './combinators' import { variantColorsMediaOrClass } from './dark' import { variantLanguageDirections } from './directions' -import { variantImportant, variantLayer, variantNegative, variantScope, variantSelector } from './misc' +import { variantCssLayer, variantImportant, variantInternalLayer, variantNegative, variantScope, variantSelector } from './misc' import { variantCustomMedia, variantPrint } from './media' import { partClasses, variantPseudoClassFunctions, variantPseudoClassesAndElements, variantTaggedPseudoClasses } from './pseudo' export const variants = (options: PresetMiniOptions): Variant[] => [ + variantCssLayer, + variantSelector, - variantLayer, + variantInternalLayer, variantNegative, variantImportant, variantPrint, diff --git a/packages/preset-mini/src/variants/misc.ts b/packages/preset-mini/src/variants/misc.ts index 26e02630ca..b0591de95d 100644 --- a/packages/preset-mini/src/variants/misc.ts +++ b/packages/preset-mini/src/variants/misc.ts @@ -14,10 +14,23 @@ export const variantSelector: Variant = { }, } -export const variantLayer: Variant = { +export const variantCssLayer: Variant = { name: 'layer', match(matcher) { const match = matcher.match(/^layer-([_\d\w]+)[:-]/) + if (match) { + return { + matcher: matcher.slice(match[0].length), + parent: `@layer ${match[1]}`, + } + } + }, +} + +export const variantInternalLayer: Variant = { + name: 'uno-layer', + match(matcher) { + const match = matcher.match(/^uno-layer-([_\d\w]+)[:-]/) if (match) { return { matcher: matcher.slice(match[0].length), diff --git a/test/__snapshots__/preset-attributify.test.ts.snap b/test/__snapshots__/preset-attributify.test.ts.snap index 67d190187e..d8961552ba 100644 --- a/test/__snapshots__/preset-attributify.test.ts.snap +++ b/test/__snapshots__/preset-attributify.test.ts.snap @@ -3,7 +3,7 @@ exports[`attributify > autocomplete extractor 5`] = ` "