@arbor-css/classes 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_test.d.ts +278 -0
- package/dist/_test.d.ts.map +1 -0
- package/dist/_test.js +30 -0
- package/dist/_test.js.map +1 -0
- package/dist/_util.d.ts +2 -0
- package/dist/_util.d.ts.map +1 -0
- package/dist/_util.js +2 -0
- package/dist/_util.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +49 -0
- package/dist/index.js.map +1 -0
- package/dist/props.d.ts +2 -0
- package/dist/props.d.ts.map +1 -0
- package/dist/props.js +2 -0
- package/dist/props.js.map +1 -0
- package/dist/rules/_test.d.ts +4 -0
- package/dist/rules/_test.d.ts.map +1 -0
- package/dist/rules/_test.js +60 -0
- package/dist/rules/_test.js.map +1 -0
- package/dist/rules/_util.d.ts +29 -0
- package/dist/rules/_util.d.ts.map +1 -0
- package/dist/rules/_util.js +79 -0
- package/dist/rules/_util.js.map +1 -0
- package/dist/rules/align.d.ts +5 -0
- package/dist/rules/align.d.ts.map +1 -0
- package/dist/rules/align.js +38 -0
- package/dist/rules/align.js.map +1 -0
- package/dist/rules/animations.d.ts +4 -0
- package/dist/rules/animations.d.ts.map +1 -0
- package/dist/rules/animations.js +135 -0
- package/dist/rules/animations.js.map +1 -0
- package/dist/rules/background.d.ts +2 -0
- package/dist/rules/background.d.ts.map +1 -0
- package/dist/rules/background.js +2 -0
- package/dist/rules/background.js.map +1 -0
- package/dist/rules/border.d.ts +4 -0
- package/dist/rules/border.d.ts.map +1 -0
- package/dist/rules/border.js +125 -0
- package/dist/rules/border.js.map +1 -0
- package/dist/rules/border.test.d.ts +2 -0
- package/dist/rules/border.test.d.ts.map +1 -0
- package/dist/rules/border.test.js +104 -0
- package/dist/rules/border.test.js.map +1 -0
- package/dist/rules/color.d.ts +4 -0
- package/dist/rules/color.d.ts.map +1 -0
- package/dist/rules/color.js +156 -0
- package/dist/rules/color.js.map +1 -0
- package/dist/rules/color.test.d.ts +2 -0
- package/dist/rules/color.test.d.ts.map +1 -0
- package/dist/rules/color.test.js +104 -0
- package/dist/rules/color.test.js.map +1 -0
- package/dist/rules/colors.d.ts +1 -0
- package/dist/rules/colors.d.ts.map +1 -0
- package/dist/rules/colors.js +2 -0
- package/dist/rules/colors.js.map +1 -0
- package/dist/rules/index.d.ts +4 -0
- package/dist/rules/index.d.ts.map +1 -0
- package/dist/rules/index.js +15 -0
- package/dist/rules/index.js.map +1 -0
- package/dist/rules/shadow.d.ts +4 -0
- package/dist/rules/shadow.d.ts.map +1 -0
- package/dist/rules/shadow.js +51 -0
- package/dist/rules/shadow.js.map +1 -0
- package/dist/rules/spacing.d.ts +4 -0
- package/dist/rules/spacing.d.ts.map +1 -0
- package/dist/rules/spacing.js +27 -0
- package/dist/rules/spacing.js.map +1 -0
- package/dist/rules/spacing.test.d.ts +2 -0
- package/dist/rules/spacing.test.d.ts.map +1 -0
- package/dist/rules/spacing.test.js +44 -0
- package/dist/rules/spacing.test.js.map +1 -0
- package/dist/rules/typography.d.ts +4 -0
- package/dist/rules/typography.d.ts.map +1 -0
- package/dist/rules/typography.js +129 -0
- package/dist/rules/typography.js.map +1 -0
- package/dist/rules/util.d.ts +2 -0
- package/dist/rules/util.d.ts.map +1 -0
- package/dist/rules/util.js +2 -0
- package/dist/rules/util.js.map +1 -0
- package/dist/theme/index.d.ts +10 -0
- package/dist/theme/index.d.ts.map +1 -0
- package/dist/theme/index.js +79 -0
- package/dist/theme/index.js.map +1 -0
- package/dist/theme/types.d.ts +11 -0
- package/dist/theme/types.d.ts.map +1 -0
- package/dist/theme/types.js +2 -0
- package/dist/theme/types.js.map +1 -0
- package/dist/util/alters.d.ts +7 -0
- package/dist/util/alters.d.ts.map +1 -0
- package/dist/util/alters.js +58 -0
- package/dist/util/alters.js.map +1 -0
- package/dist/util/color.d.ts +11 -0
- package/dist/util/color.d.ts.map +1 -0
- package/dist/util/color.js +25 -0
- package/dist/util/color.js.map +1 -0
- package/dist/util/concat.d.ts +3 -0
- package/dist/util/concat.d.ts.map +1 -0
- package/dist/util/concat.js +7 -0
- package/dist/util/concat.js.map +1 -0
- package/dist/util/control.d.ts +2 -0
- package/dist/util/control.d.ts.map +1 -0
- package/dist/util/control.js +2 -0
- package/dist/util/control.js.map +1 -0
- package/dist/util/h.d.ts +4 -0
- package/dist/util/h.d.ts.map +1 -0
- package/dist/util/h.js +6 -0
- package/dist/util/h.js.map +1 -0
- package/dist/util/handlers.d.ts +18 -0
- package/dist/util/handlers.d.ts.map +1 -0
- package/dist/util/handlers.js +253 -0
- package/dist/util/handlers.js.map +1 -0
- package/dist/util/mappings.d.ts +24 -0
- package/dist/util/mappings.d.ts.map +1 -0
- package/dist/util/mappings.js +37 -0
- package/dist/util/mappings.js.map +1 -0
- package/dist/util/matchers.d.ts +2 -0
- package/dist/util/matchers.d.ts.map +1 -0
- package/dist/util/matchers.js +6 -0
- package/dist/util/matchers.js.map +1 -0
- package/dist/util/regex.d.ts +7 -0
- package/dist/util/regex.d.ts.map +1 -0
- package/dist/util/regex.js +17 -0
- package/dist/util/regex.js.map +1 -0
- package/dist/util/tests.d.ts +11 -0
- package/dist/util/tests.d.ts.map +1 -0
- package/dist/util/tests.js +19 -0
- package/dist/util/tests.js.map +1 -0
- package/dist/util/themeOrLiteral.d.ts +15 -0
- package/dist/util/themeOrLiteral.d.ts.map +1 -0
- package/dist/util/themeOrLiteral.js +28 -0
- package/dist/util/themeOrLiteral.js.map +1 -0
- package/dist/variants/_test.d.ts +3 -0
- package/dist/variants/_test.d.ts.map +1 -0
- package/dist/variants/_test.js +52 -0
- package/dist/variants/_test.js.map +1 -0
- package/dist/variants/_utils.d.ts +7 -0
- package/dist/variants/_utils.d.ts.map +1 -0
- package/dist/variants/_utils.js +16 -0
- package/dist/variants/_utils.js.map +1 -0
- package/dist/variants/aria.d.ts +5 -0
- package/dist/variants/aria.d.ts.map +1 -0
- package/dist/variants/aria.js +58 -0
- package/dist/variants/aria.js.map +1 -0
- package/dist/variants/aria.test.d.ts +2 -0
- package/dist/variants/aria.test.d.ts.map +1 -0
- package/dist/variants/aria.test.js +70 -0
- package/dist/variants/aria.test.js.map +1 -0
- package/dist/variants/breakpoints.d.ts +4 -0
- package/dist/variants/breakpoints.d.ts.map +1 -0
- package/dist/variants/breakpoints.js +77 -0
- package/dist/variants/breakpoints.js.map +1 -0
- package/dist/variants/breakpoints.test.d.ts +2 -0
- package/dist/variants/breakpoints.test.d.ts.map +1 -0
- package/dist/variants/breakpoints.test.js +10 -0
- package/dist/variants/breakpoints.test.js.map +1 -0
- package/dist/variants/children.d.ts +4 -0
- package/dist/variants/children.d.ts.map +1 -0
- package/dist/variants/children.js +10 -0
- package/dist/variants/children.js.map +1 -0
- package/dist/variants/children.test.d.ts +2 -0
- package/dist/variants/children.test.d.ts.map +1 -0
- package/dist/variants/children.test.js +9 -0
- package/dist/variants/children.test.js.map +1 -0
- package/dist/variants/combinators.d.ts +5 -0
- package/dist/variants/combinators.d.ts.map +1 -0
- package/dist/variants/combinators.js +42 -0
- package/dist/variants/combinators.js.map +1 -0
- package/dist/variants/combinators.test.d.ts +2 -0
- package/dist/variants/combinators.test.d.ts.map +1 -0
- package/dist/variants/combinators.test.js +33 -0
- package/dist/variants/combinators.test.js.map +1 -0
- package/dist/variants/container.d.ts +4 -0
- package/dist/variants/container.d.ts.map +1 -0
- package/dist/variants/container.js +32 -0
- package/dist/variants/container.js.map +1 -0
- package/dist/variants/container.test.d.ts +2 -0
- package/dist/variants/container.test.d.ts.map +1 -0
- package/dist/variants/container.test.js +10 -0
- package/dist/variants/container.test.js.map +1 -0
- package/dist/variants/data.d.ts +5 -0
- package/dist/variants/data.d.ts.map +1 -0
- package/dist/variants/data.js +58 -0
- package/dist/variants/data.js.map +1 -0
- package/dist/variants/data.test.d.ts +2 -0
- package/dist/variants/data.test.d.ts.map +1 -0
- package/dist/variants/data.test.js +70 -0
- package/dist/variants/data.test.js.map +1 -0
- package/dist/variants/directions.d.ts +4 -0
- package/dist/variants/directions.d.ts.map +1 -0
- package/dist/variants/directions.js +10 -0
- package/dist/variants/directions.js.map +1 -0
- package/dist/variants/directions.test.d.ts +2 -0
- package/dist/variants/directions.test.d.ts.map +1 -0
- package/dist/variants/directions.test.js +9 -0
- package/dist/variants/directions.test.js.map +1 -0
- package/dist/variants/important.d.ts +4 -0
- package/dist/variants/important.d.ts.map +1 -0
- package/dist/variants/important.js +29 -0
- package/dist/variants/important.js.map +1 -0
- package/dist/variants/important.test.d.ts +2 -0
- package/dist/variants/important.test.d.ts.map +1 -0
- package/dist/variants/important.test.js +23 -0
- package/dist/variants/important.test.js.map +1 -0
- package/dist/variants/index.d.ts +2 -0
- package/dist/variants/index.d.ts.map +1 -0
- package/dist/variants/index.js +15 -0
- package/dist/variants/index.js.map +1 -0
- package/dist/variants/inert.d.ts +3 -0
- package/dist/variants/inert.d.ts.map +1 -0
- package/dist/variants/inert.js +6 -0
- package/dist/variants/inert.js.map +1 -0
- package/dist/variants/inert.test.d.ts +2 -0
- package/dist/variants/inert.test.d.ts.map +1 -0
- package/dist/variants/inert.test.js +31 -0
- package/dist/variants/inert.test.js.map +1 -0
- package/dist/variants/layer.d.ts +4 -0
- package/dist/variants/layer.d.ts.map +1 -0
- package/dist/variants/layer.js +22 -0
- package/dist/variants/layer.js.map +1 -0
- package/dist/variants/layer.test.d.ts +2 -0
- package/dist/variants/layer.test.d.ts.map +1 -0
- package/dist/variants/layer.test.js +9 -0
- package/dist/variants/layer.test.js.map +1 -0
- package/dist/variants/media.d.ts +11 -0
- package/dist/variants/media.d.ts.map +1 -0
- package/dist/variants/media.js +62 -0
- package/dist/variants/media.js.map +1 -0
- package/dist/variants/media.test.d.ts +2 -0
- package/dist/variants/media.test.d.ts.map +1 -0
- package/dist/variants/media.test.js +46 -0
- package/dist/variants/media.test.js.map +1 -0
- package/dist/variants/mode.d.ts +4 -0
- package/dist/variants/mode.d.ts.map +1 -0
- package/dist/variants/mode.js +21 -0
- package/dist/variants/mode.js.map +1 -0
- package/dist/variants/mode.test.d.ts +2 -0
- package/dist/variants/mode.test.d.ts.map +1 -0
- package/dist/variants/mode.test.js +9 -0
- package/dist/variants/mode.test.js.map +1 -0
- package/dist/variants/negative.d.ts +4 -0
- package/dist/variants/negative.d.ts.map +1 -0
- package/dist/variants/negative.js +81 -0
- package/dist/variants/negative.js.map +1 -0
- package/dist/variants/negative.test.d.ts +2 -0
- package/dist/variants/negative.test.d.ts.map +1 -0
- package/dist/variants/negative.test.js +13 -0
- package/dist/variants/negative.test.js.map +1 -0
- package/dist/variants/placeholder.d.ts +4 -0
- package/dist/variants/placeholder.d.ts.map +1 -0
- package/dist/variants/placeholder.js +23 -0
- package/dist/variants/placeholder.js.map +1 -0
- package/dist/variants/placeholder.test.d.ts +2 -0
- package/dist/variants/placeholder.test.d.ts.map +1 -0
- package/dist/variants/placeholder.test.js +11 -0
- package/dist/variants/placeholder.test.js.map +1 -0
- package/dist/variants/pseudo.d.ts +8 -0
- package/dist/variants/pseudo.d.ts.map +1 -0
- package/dist/variants/pseudo.js +28 -0
- package/dist/variants/pseudo.js.map +1 -0
- package/dist/variants/pseudo.test.d.ts +2 -0
- package/dist/variants/pseudo.test.d.ts.map +1 -0
- package/dist/variants/pseudo.test.js +52 -0
- package/dist/variants/pseudo.test.js.map +1 -0
- package/dist/variants/startingStyle.d.ts +4 -0
- package/dist/variants/startingStyle.d.ts.map +1 -0
- package/dist/variants/startingStyle.js +15 -0
- package/dist/variants/startingStyle.js.map +1 -0
- package/dist/variants/startingStyle.test.d.ts +2 -0
- package/dist/variants/startingStyle.test.d.ts.map +1 -0
- package/dist/variants/startingStyle.test.js +9 -0
- package/dist/variants/startingStyle.test.js.map +1 -0
- package/dist/variants/stuck.d.ts +4 -0
- package/dist/variants/stuck.d.ts.map +1 -0
- package/dist/variants/stuck.js +25 -0
- package/dist/variants/stuck.js.map +1 -0
- package/dist/variants/stuck.test.d.ts +2 -0
- package/dist/variants/stuck.test.d.ts.map +1 -0
- package/dist/variants/stuck.test.js +9 -0
- package/dist/variants/stuck.test.js.map +1 -0
- package/dist/variants/variantSupports.d.ts +4 -0
- package/dist/variants/variantSupports.d.ts.map +1 -0
- package/dist/variants/variantSupports.js +26 -0
- package/dist/variants/variantSupports.js.map +1 -0
- package/dist/variants/variantSupports.test.d.ts +2 -0
- package/dist/variants/variantSupports.test.d.ts.map +1 -0
- package/dist/variants/variantSupports.test.js +9 -0
- package/dist/variants/variantSupports.test.js.map +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"themeOrLiteral.d.ts","sourceRoot":"","sources":["../../src/util/themeOrLiteral.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAI1C,wBAAgB,YAAY,CAC3B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,KAAK,EACZ,EACC,SAAS,EACT,WAAW,GACX,EAAE;IACF,SAAS,CAAC,EAAE,MAAM,KAAK,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IACxC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,OASD;AAED,wBAAgB,cAAc,CAC7B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,KAAK,EACZ,EACC,SAAS,EACT,WAAW,GACX,EAAE;IACF,SAAS,CAAC,EAAE,MAAM,KAAK,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IACxC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,GACC;IACF,MAAM,GAAG,SAAS;IAClB;QAAE,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAA;KAAE;CACxD,CAcA"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { getByConcatKey } from '@arbor-css/util';
|
|
2
|
+
import { globalKeywords } from '@unocss/preset-mini/utils';
|
|
3
|
+
import { dashConcat } from './concat.js';
|
|
4
|
+
import { h } from './h.js';
|
|
5
|
+
export function getFromTheme(value, theme, { startFrom, trySuffixes, }) {
|
|
6
|
+
for (const suffix of ['', ...(trySuffixes || [])]) {
|
|
7
|
+
const lookFor = dashConcat(startFrom, value, suffix);
|
|
8
|
+
const themeValue = getByConcatKey(theme, lookFor, '-');
|
|
9
|
+
if (themeValue) {
|
|
10
|
+
return themeValue;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export function themeOrLiteral(value, theme, { startFrom, trySuffixes, }) {
|
|
15
|
+
const bracketedValue = h.bracket.bracketOfColor(value);
|
|
16
|
+
if (bracketedValue) {
|
|
17
|
+
return [bracketedValue, { source: 'bracket' }];
|
|
18
|
+
}
|
|
19
|
+
if (globalKeywords.includes(value) || value === 'transparent') {
|
|
20
|
+
return [value, { source: 'global' }];
|
|
21
|
+
}
|
|
22
|
+
const fromTheme = getFromTheme(value, theme, { startFrom, trySuffixes });
|
|
23
|
+
if (fromTheme) {
|
|
24
|
+
return [fromTheme, { source: 'theme' }];
|
|
25
|
+
}
|
|
26
|
+
return [undefined, { source: 'unmatched' }];
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=themeOrLiteral.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"themeOrLiteral.js","sourceRoot":"","sources":["../../src/util/themeOrLiteral.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,MAAM,UAAU,YAAY,CAC3B,KAAa,EACb,KAAY,EACZ,EACC,SAAS,EACT,WAAW,GAIX;IAED,KAAK,MAAM,MAAM,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QACnD,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QACrD,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QACvD,IAAI,UAAU,EAAE,CAAC;YAChB,OAAO,UAAU,CAAC;QACnB,CAAC;IACF,CAAC;AACF,CAAC;AAED,MAAM,UAAU,cAAc,CAC7B,KAAa,EACb,KAAY,EACZ,EACC,SAAS,EACT,WAAW,GAIX;IAKD,MAAM,cAAc,GAAG,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACvD,IAAI,cAAc,EAAE,CAAC;QACpB,OAAO,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,aAAa,EAAE,CAAC;QAC/D,OAAO,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IACtC,CAAC;IACD,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC;IACzE,IAAI,SAAS,EAAE,CAAC;QACf,OAAO,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;AAC7C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_test.d.ts","sourceRoot":"","sources":["../../src/variants/_test.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,OAAO,EAGP,qBAAqB,EACrB,MAAM,QAAQ,CAAC;AAIhB,wBAAsB,YAAY,CACjC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,EACxB,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,MAAM,EACvB,qBAAqB,EAAE,OAAO,CAAC,qBAAqB,CAAC,iBAqDrD"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { expect } from 'vitest';
|
|
2
|
+
import { testTheme } from '../_test.js';
|
|
3
|
+
export async function testVariants(variants, input, remainingString, expectedModifications) {
|
|
4
|
+
let match = null;
|
|
5
|
+
for (const variant of variants.toReversed()) {
|
|
6
|
+
const startingContext = {
|
|
7
|
+
generator: {
|
|
8
|
+
config: {
|
|
9
|
+
separators: [':'],
|
|
10
|
+
},
|
|
11
|
+
},
|
|
12
|
+
rawSelector: '',
|
|
13
|
+
theme: testTheme,
|
|
14
|
+
};
|
|
15
|
+
if (typeof variant === 'object') {
|
|
16
|
+
const result = await variant.match(input, startingContext);
|
|
17
|
+
if (result) {
|
|
18
|
+
match = { variant, handler: result };
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
expect(match, 'No variants matched').not.toBeNull();
|
|
23
|
+
if (match) {
|
|
24
|
+
const initialCtx = {
|
|
25
|
+
entries: [],
|
|
26
|
+
prefix: '',
|
|
27
|
+
pseudo: '',
|
|
28
|
+
selector: '',
|
|
29
|
+
};
|
|
30
|
+
let inputCtx = {
|
|
31
|
+
...initialCtx,
|
|
32
|
+
};
|
|
33
|
+
const { handler } = match;
|
|
34
|
+
if (typeof handler === 'string') {
|
|
35
|
+
expect(handler).toBe(remainingString);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
const handlers = Array.isArray(handler) ? handler : [handler];
|
|
39
|
+
for (const h of handlers) {
|
|
40
|
+
await h.handle?.(inputCtx, (next) => {
|
|
41
|
+
Object.assign(inputCtx, next);
|
|
42
|
+
return inputCtx;
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
expect(inputCtx).toEqual({
|
|
46
|
+
...initialCtx,
|
|
47
|
+
...expectedModifications,
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=_test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_test.js","sourceRoot":"","sources":["../../src/variants/_test.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,CAAC,KAAK,UAAU,YAAY,CACjC,QAAwB,EACxB,KAAa,EACb,eAAuB,EACvB,qBAAqD;IAErD,IAAI,KAAK,GAGE,IAAI,CAAC;IAChB,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC;QAC7C,MAAM,eAAe,GAAmB;YACvC,SAAS,EAAE;gBACV,MAAM,EAAE;oBACP,UAAU,EAAE,CAAC,GAAG,CAAC;iBACjB;aACM;YACR,WAAW,EAAE,EAAE;YACf,KAAK,EAAE,SAAS;SAChB,CAAC;QACF,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;YAC3D,IAAI,MAAM,EAAE,CAAC;gBACZ,KAAK,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;YACtC,CAAC;QACF,CAAC;IACF,CAAC;IAED,MAAM,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;IAEpD,IAAI,KAAK,EAAE,CAAC;QACX,MAAM,UAAU,GAA0B;YACzC,OAAO,EAAE,EAAE;YACX,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,EAAE;SACZ,CAAC;QACF,IAAI,QAAQ,GAA0B;YACrC,GAAG,UAAU;SACb,CAAC;QACF,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;QAC1B,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YACjC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACP,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC9D,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBAC1B,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE;oBACnC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;oBAC9B,OAAO,QAAQ,CAAC;gBACjB,CAAC,CAAC,CAAC;YACJ,CAAC;YACD,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;gBACxB,GAAG,UAAU;gBACb,GAAG,qBAAqB;aACxB,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { VariantContext } from 'unocss';
|
|
2
|
+
import { Theme } from '../theme/types.js';
|
|
3
|
+
export declare function resolveBreakpoints({ theme, generator }: Readonly<VariantContext<Theme>>, key?: 'breakpoint' | 'verticalBreakpoint'): {
|
|
4
|
+
point: string;
|
|
5
|
+
size: string;
|
|
6
|
+
}[] | undefined;
|
|
7
|
+
//# sourceMappingURL=_utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_utils.d.ts","sourceRoot":"","sources":["../../src/variants/_utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAQ1C,wBAAgB,kBAAkB,CACjC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EACrD,GAAG,GAAE,YAAY,GAAG,oBAAmC;WAL9C,MAAM;UAAQ,MAAM;gBAwB7B"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
const reLetters = /[a-z]+/gi;
|
|
2
|
+
const resolvedBreakpoints = new WeakMap();
|
|
3
|
+
export function resolveBreakpoints({ theme, generator }, key = 'breakpoint') {
|
|
4
|
+
const breakpoints = generator?.userConfig?.theme?.[key] || theme[key];
|
|
5
|
+
if (!breakpoints)
|
|
6
|
+
return undefined;
|
|
7
|
+
if (resolvedBreakpoints.has(theme))
|
|
8
|
+
return resolvedBreakpoints.get(theme);
|
|
9
|
+
const resolved = Object.entries(breakpoints)
|
|
10
|
+
.sort((a, b) => Number.parseInt(a[1].replace(reLetters, '')) -
|
|
11
|
+
Number.parseInt(b[1].replace(reLetters, '')))
|
|
12
|
+
.map(([point, size]) => ({ point, size }));
|
|
13
|
+
resolvedBreakpoints.set(theme, resolved);
|
|
14
|
+
return resolved;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=_utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_utils.js","sourceRoot":"","sources":["../../src/variants/_utils.ts"],"names":[],"mappings":"AAGA,MAAM,SAAS,GAAG,UAAU,CAAC;AAC7B,MAAM,mBAAmB,GAAG,IAAI,OAAO,EAGpC,CAAC;AAEJ,MAAM,UAAU,kBAAkB,CACjC,EAAE,KAAK,EAAE,SAAS,EAAmC,EACrD,MAA2C,YAAY;IAEvD,MAAM,WAAW,GACf,SAAS,EAAE,UAAU,EAAE,KAAa,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IAE5D,IAAI,CAAC,WAAW;QAAE,OAAO,SAAS,CAAC;IAEnC,IAAI,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,OAAO,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAE1E,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;SAC1C,IAAI,CACJ,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACR,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAC5C,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAC7C;SACA,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAE5C,mBAAmB,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACzC,OAAO,QAAQ,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aria.d.ts","sourceRoot":"","sources":["../../src/variants/aria.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE3D,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,eAAO,MAAM,WAAW,EAAE,aAAa,CAAC,KAAK,CAoB5C,CAAC;AAwCF,eAAO,MAAM,2BAA2B,EAAE,OAAO,CAAC,KAAK,CAAC,EAOvD,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { variantGetParameter } from '@unocss/rule-utils';
|
|
2
|
+
export const variantAria = {
|
|
3
|
+
name: 'aria',
|
|
4
|
+
match(matcher, ctx) {
|
|
5
|
+
const variant = variantGetParameter('aria-', matcher, ctx.generator.config.separators);
|
|
6
|
+
if (variant) {
|
|
7
|
+
const [match, rest] = variant;
|
|
8
|
+
if (match) {
|
|
9
|
+
return {
|
|
10
|
+
matcher: rest,
|
|
11
|
+
selector: (s) => `${s}[aria-${match}]`,
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
multiPass: true,
|
|
17
|
+
autocomplete: 'aria-{name}',
|
|
18
|
+
};
|
|
19
|
+
function taggedAria(tagName) {
|
|
20
|
+
return {
|
|
21
|
+
name: `${tagName}-aria`,
|
|
22
|
+
match(matcher, ctx) {
|
|
23
|
+
const variant = variantGetParameter(`${tagName}-aria-`, matcher, ctx.generator.config.separators);
|
|
24
|
+
if (variant) {
|
|
25
|
+
const [match, rest, label] = variant;
|
|
26
|
+
const ariaAttribute = match;
|
|
27
|
+
if (ariaAttribute) {
|
|
28
|
+
const tagSelectorMap = {
|
|
29
|
+
group: `&:is(:where(.group${label ? `\\/${label}` : ''})[aria-${ariaAttribute}] *)`,
|
|
30
|
+
peer: `&:is(:where(.peer${label ? `\\/${label}` : ''})[aria-${ariaAttribute}] ~ *)`,
|
|
31
|
+
previous: `:where(*[aria-${ariaAttribute}] + &)`,
|
|
32
|
+
parent: `:where(*[aria-${ariaAttribute}] > &)`,
|
|
33
|
+
has: `&:has(*[aria-${ariaAttribute}])`,
|
|
34
|
+
in: `:where(*[aria-${ariaAttribute}]) &`,
|
|
35
|
+
};
|
|
36
|
+
return {
|
|
37
|
+
matcher: rest,
|
|
38
|
+
handle: (input, next) => next({
|
|
39
|
+
...input,
|
|
40
|
+
parent: `${input.parent ? `${input.parent} $$ ` : ''}${input.selector}`,
|
|
41
|
+
selector: tagSelectorMap[tagName],
|
|
42
|
+
}),
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
multiPass: true,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
export const variantTaggedAriaAttributes = [
|
|
51
|
+
taggedAria('group'),
|
|
52
|
+
taggedAria('peer'),
|
|
53
|
+
taggedAria('parent'),
|
|
54
|
+
taggedAria('previous'),
|
|
55
|
+
taggedAria('has'),
|
|
56
|
+
taggedAria('in'),
|
|
57
|
+
];
|
|
58
|
+
//# sourceMappingURL=aria.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aria.js","sourceRoot":"","sources":["../../src/variants/aria.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAGzD,MAAM,CAAC,MAAM,WAAW,GAAyB;IAChD,IAAI,EAAE,MAAM;IACZ,KAAK,CAAC,OAAO,EAAE,GAAG;QACjB,MAAM,OAAO,GAAG,mBAAmB,CAClC,OAAO,EACP,OAAO,EACP,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAC/B,CAAC;QACF,IAAI,OAAO,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC;YAC9B,IAAI,KAAK,EAAE,CAAC;gBACX,OAAO;oBACN,OAAO,EAAE,IAAI;oBACb,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,KAAK,GAAG;iBACtC,CAAC;YACH,CAAC;QACF,CAAC;IACF,CAAC;IACD,SAAS,EAAE,IAAI;IACf,YAAY,EAAE,aAAa;CAC3B,CAAC;AAEF,SAAS,UAAU,CAAC,OAAe;IAClC,OAAO;QACN,IAAI,EAAE,GAAG,OAAO,OAAO;QACvB,KAAK,CAAC,OAAO,EAAE,GAAG;YACjB,MAAM,OAAO,GAAG,mBAAmB,CAClC,GAAG,OAAO,QAAQ,EAClB,OAAO,EACP,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAC/B,CAAC;YACF,IAAI,OAAO,EAAE,CAAC;gBACb,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC;gBACrC,MAAM,aAAa,GAAG,KAAK,CAAC;gBAC5B,IAAI,aAAa,EAAE,CAAC;oBACnB,MAAM,cAAc,GAA2B;wBAC9C,KAAK,EAAE,qBAAqB,KAAK,CAAC,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,aAAa,MAAM;wBACnF,IAAI,EAAE,oBAAoB,KAAK,CAAC,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,aAAa,QAAQ;wBACnF,QAAQ,EAAE,iBAAiB,aAAa,QAAQ;wBAChD,MAAM,EAAE,iBAAiB,aAAa,QAAQ;wBAC9C,GAAG,EAAE,gBAAgB,aAAa,IAAI;wBACtC,EAAE,EAAE,iBAAiB,aAAa,MAAM;qBACxC,CAAC;oBAEF,OAAO;wBACN,OAAO,EAAE,IAAI;wBACb,MAAM,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CACvB,IAAI,CAAC;4BACJ,GAAG,KAAK;4BACR,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE;4BACvE,QAAQ,EAAE,cAAc,CAAC,OAAO,CAAC;yBACjC,CAAC;qBACH,CAAC;gBACH,CAAC;YACF,CAAC;QACF,CAAC;QACD,SAAS,EAAE,IAAI;KACf,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,2BAA2B,GAAqB;IAC5D,UAAU,CAAC,OAAO,CAAC;IACnB,UAAU,CAAC,MAAM,CAAC;IAClB,UAAU,CAAC,QAAQ,CAAC;IACpB,UAAU,CAAC,UAAU,CAAC;IACtB,UAAU,CAAC,KAAK,CAAC;IACjB,UAAU,CAAC,IAAI,CAAC;CAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aria.test.d.ts","sourceRoot":"","sources":["../../src/variants/aria.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { testTheme } from '../_test.js';
|
|
3
|
+
import { variantAria, variantTaggedAriaAttributes } from './aria.js';
|
|
4
|
+
const ctx = {
|
|
5
|
+
generator: {
|
|
6
|
+
config: {
|
|
7
|
+
separators: [':'],
|
|
8
|
+
},
|
|
9
|
+
},
|
|
10
|
+
rawSelector: '',
|
|
11
|
+
theme: testTheme,
|
|
12
|
+
};
|
|
13
|
+
describe('variantAria', () => {
|
|
14
|
+
it('matches aria attribute selector', () => {
|
|
15
|
+
const result = variantAria.match('aria-expanded:bg-red', ctx);
|
|
16
|
+
expect(result).toBeTruthy();
|
|
17
|
+
expect(result).not.toBeTypeOf('string');
|
|
18
|
+
if (!result || typeof result === 'string')
|
|
19
|
+
return;
|
|
20
|
+
expect(result.matcher).toBe('bg-red');
|
|
21
|
+
expect(result.selector?.('.btn')).toBe('.btn[aria-expanded]');
|
|
22
|
+
});
|
|
23
|
+
it('matches tagged group aria selector', async () => {
|
|
24
|
+
const groupVariant = variantTaggedAriaAttributes.find((v) => typeof v === 'object' && v.name === 'group-aria');
|
|
25
|
+
expect(groupVariant).toBeTruthy();
|
|
26
|
+
expect(groupVariant).toBeTypeOf('object');
|
|
27
|
+
if (!groupVariant || typeof groupVariant !== 'object')
|
|
28
|
+
return;
|
|
29
|
+
const result = await groupVariant.match('group-aria-expanded:bg-red', ctx);
|
|
30
|
+
expect(result).toBeTruthy();
|
|
31
|
+
expect(result).not.toBeTypeOf('string');
|
|
32
|
+
if (!result || typeof result === 'string')
|
|
33
|
+
return;
|
|
34
|
+
const input = {
|
|
35
|
+
entries: [],
|
|
36
|
+
parent: '',
|
|
37
|
+
prefix: '',
|
|
38
|
+
pseudo: '',
|
|
39
|
+
selector: '.btn',
|
|
40
|
+
};
|
|
41
|
+
await result.handle?.(input, (next) => Object.assign(input, next));
|
|
42
|
+
expect(result.matcher).toBe('bg-red');
|
|
43
|
+
expect(input.parent).toBe('.btn');
|
|
44
|
+
expect(input.selector).toBe('&:is(:where(.group)[aria-expanded] *)');
|
|
45
|
+
});
|
|
46
|
+
it('matches tagged group aria selector with label', async () => {
|
|
47
|
+
const groupVariant = variantTaggedAriaAttributes.find((v) => typeof v === 'object' && v.name === 'group-aria');
|
|
48
|
+
expect(groupVariant).toBeTruthy();
|
|
49
|
+
expect(groupVariant).toBeTypeOf('object');
|
|
50
|
+
if (!groupVariant || typeof groupVariant !== 'object')
|
|
51
|
+
return;
|
|
52
|
+
const result = await groupVariant.match('group-aria-expanded/menu:bg-red', ctx);
|
|
53
|
+
expect(result).toBeTruthy();
|
|
54
|
+
expect(result).not.toBeTypeOf('string');
|
|
55
|
+
if (!result || typeof result === 'string')
|
|
56
|
+
return;
|
|
57
|
+
const input = {
|
|
58
|
+
entries: [],
|
|
59
|
+
parent: '',
|
|
60
|
+
prefix: '',
|
|
61
|
+
pseudo: '',
|
|
62
|
+
selector: '.btn',
|
|
63
|
+
};
|
|
64
|
+
await result.handle?.(input, (next) => Object.assign(input, next));
|
|
65
|
+
expect(result.matcher).toBe('bg-red');
|
|
66
|
+
expect(input.parent).toBe('.btn');
|
|
67
|
+
expect(input.selector).toBe('&:is(:where(.group\\/menu)[aria-expanded] *)');
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
//# sourceMappingURL=aria.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aria.test.js","sourceRoot":"","sources":["../../src/variants/aria.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,2BAA2B,EAAE,MAAM,WAAW,CAAC;AAErE,MAAM,GAAG,GAAG;IACX,SAAS,EAAE;QACV,MAAM,EAAE;YACP,UAAU,EAAE,CAAC,GAAG,CAAC;SACjB;KACD;IACD,WAAW,EAAE,EAAE;IACf,KAAK,EAAE,SAAS;CACT,CAAC;AAET,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC1C,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;QAC9D,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAExC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,OAAO;QAElD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,YAAY,GAAG,2BAA2B,CAAC,IAAI,CACpD,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,CACvD,CAAC;QAEF,MAAM,CAAC,YAAY,CAAC,CAAC,UAAU,EAAE,CAAC;QAClC,MAAM,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAE1C,IAAI,CAAC,YAAY,IAAI,OAAO,YAAY,KAAK,QAAQ;YAAE,OAAO;QAE9D,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC;QAC3E,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAExC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,OAAO;QAElD,MAAM,KAAK,GAAG;YACb,OAAO,EAAE,EAAE;YACX,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,MAAM;SAChB,CAAC;QAEF,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QAEnE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,YAAY,GAAG,2BAA2B,CAAC,IAAI,CACpD,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,CACvD,CAAC;QAEF,MAAM,CAAC,YAAY,CAAC,CAAC,UAAU,EAAE,CAAC;QAClC,MAAM,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAE1C,IAAI,CAAC,YAAY,IAAI,OAAO,YAAY,KAAK,QAAQ;YAAE,OAAO;QAE9D,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,KAAK,CACtC,iCAAiC,EACjC,GAAG,CACH,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAExC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,OAAO;QAElD,MAAM,KAAK,GAAG;YACb,OAAO,EAAE,EAAE;YACX,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,MAAM;SAChB,CAAC;QAEF,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QAEnE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"breakpoints.d.ts","sourceRoot":"","sources":["../../src/variants/breakpoints.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAK1C,wBAAgB,kBAAkB,IAAI,aAAa,CAAC,KAAK,CAAC,CAwFzD"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { calcMaxWidthBySize } from '@unocss/rule-utils';
|
|
2
|
+
import { resolveBreakpoints } from './_utils.js';
|
|
3
|
+
const sizePseudo = /(max|min)-\[([^\]]*)\]:/;
|
|
4
|
+
export function variantBreakpoints() {
|
|
5
|
+
const regexCache = {};
|
|
6
|
+
return {
|
|
7
|
+
name: 'breakpoints',
|
|
8
|
+
match(matcher, context) {
|
|
9
|
+
if (sizePseudo.test(matcher)) {
|
|
10
|
+
const match = matcher.match(sizePseudo);
|
|
11
|
+
const m = matcher.replace(match[0], '');
|
|
12
|
+
return {
|
|
13
|
+
matcher: m,
|
|
14
|
+
handle: (input, next) => next({
|
|
15
|
+
...input,
|
|
16
|
+
parent: `${input.parent ? `${input.parent} $$ ` : ''}@media (${match[1]}-width: ${match[2]})`,
|
|
17
|
+
// parentOrder: order,
|
|
18
|
+
}),
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
const variantEntries = (resolveBreakpoints(context) ?? []).map(({ point, size }, idx) => [point, size, idx]);
|
|
22
|
+
for (const [point, size, idx] of variantEntries) {
|
|
23
|
+
if (!regexCache[point])
|
|
24
|
+
regexCache[point] = new RegExp(`^((?:([al]t-|[<~]|max-))?${point}(?:${context.generator.config.separators.join('|')}))`);
|
|
25
|
+
const match = matcher.match(regexCache[point]);
|
|
26
|
+
if (!match)
|
|
27
|
+
continue;
|
|
28
|
+
const [, pre] = match;
|
|
29
|
+
const m = matcher.slice(pre.length);
|
|
30
|
+
// container rule is responsive, but also is breakpoint aware
|
|
31
|
+
// it is handled on its own module (container.ts) and so we
|
|
32
|
+
// exclude it from here
|
|
33
|
+
if (m === 'container')
|
|
34
|
+
continue;
|
|
35
|
+
const isLtPrefix = pre.startsWith('lt-') ||
|
|
36
|
+
pre.startsWith('<') ||
|
|
37
|
+
pre.startsWith('max-');
|
|
38
|
+
const isAtPrefix = pre.startsWith('at-') || pre.startsWith('~');
|
|
39
|
+
let order = 3000; // parseInt(size)
|
|
40
|
+
if (isLtPrefix) {
|
|
41
|
+
order -= idx + 1;
|
|
42
|
+
return {
|
|
43
|
+
matcher: m,
|
|
44
|
+
handle: (input, next) => next({
|
|
45
|
+
...input,
|
|
46
|
+
parent: `${input.parent ? `${input.parent} $$ ` : ''}@media (max-width: ${calcMaxWidthBySize(size)})`,
|
|
47
|
+
parentOrder: order,
|
|
48
|
+
}),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
order += idx + 1;
|
|
52
|
+
// support for windicss @<breakpoint> => last breakpoint will not have the upper bound
|
|
53
|
+
if (isAtPrefix && idx < variantEntries.length - 1) {
|
|
54
|
+
return {
|
|
55
|
+
matcher: m,
|
|
56
|
+
handle: (input, next) => next({
|
|
57
|
+
...input,
|
|
58
|
+
parent: `${input.parent ? `${input.parent} $$ ` : ''}@media (min-width: ${size}) and (max-width: ${calcMaxWidthBySize(variantEntries[idx + 1][1])})`,
|
|
59
|
+
parentOrder: order,
|
|
60
|
+
}),
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
return {
|
|
64
|
+
matcher: m,
|
|
65
|
+
handle: (input, next) => next({
|
|
66
|
+
...input,
|
|
67
|
+
parent: `${input.parent ? `${input.parent} $$ ` : ''}@media (min-width: ${size})`,
|
|
68
|
+
parentOrder: order,
|
|
69
|
+
}),
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
multiPass: true,
|
|
74
|
+
autocomplete: '(at-|lt-|max-|)$breakpoint:',
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=breakpoints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"breakpoints.js","sourceRoot":"","sources":["../../src/variants/breakpoints.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"breakpoints.test.d.ts","sourceRoot":"","sources":["../../src/variants/breakpoints.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { expect, it } from 'vitest';
|
|
2
|
+
import { testVariants } from './_test.js';
|
|
3
|
+
import { variants } from './index.js';
|
|
4
|
+
it('matches theme breakpoints', async () => {
|
|
5
|
+
await testVariants(variants, 'sm:bg-[red]', 'bg-[red]', {
|
|
6
|
+
parent: '@media (min-width: 640px)',
|
|
7
|
+
parentOrder: expect.anything(),
|
|
8
|
+
});
|
|
9
|
+
});
|
|
10
|
+
//# sourceMappingURL=breakpoints.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"breakpoints.test.js","sourceRoot":"","sources":["../../src/variants/breakpoints.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;IAC1C,MAAM,YAAY,CAAC,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE;QACvD,MAAM,EAAE,2BAA2B;QACnC,WAAW,EAAE,MAAM,CAAC,QAAQ,EAAE;KAC9B,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"children.d.ts","sourceRoot":"","sources":["../../src/variants/children.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,eAAO,MAAM,eAAe,EAAE,OAAO,CAAC,KAAK,CAAC,EAO3C,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { variantMatcher } from '@unocss/rule-utils';
|
|
2
|
+
export const variantChildren = [
|
|
3
|
+
variantMatcher('*', (input) => ({ selector: `${input.selector} > *` }), {
|
|
4
|
+
order: -1,
|
|
5
|
+
}),
|
|
6
|
+
variantMatcher('**', (input) => ({ selector: `${input.selector} *` }), {
|
|
7
|
+
order: -1,
|
|
8
|
+
}),
|
|
9
|
+
];
|
|
10
|
+
//# sourceMappingURL=children.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"children.js","sourceRoot":"","sources":["../../src/variants/children.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpD,MAAM,CAAC,MAAM,eAAe,GAAqB;IAChD,cAAc,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC,QAAQ,MAAM,EAAE,CAAC,EAAE;QACvE,KAAK,EAAE,CAAC,CAAC;KACT,CAAC;IACF,cAAc,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE;QACtE,KAAK,EAAE,CAAC,CAAC;KACT,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"children.test.d.ts","sourceRoot":"","sources":["../../src/variants/children.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { it } from 'vitest';
|
|
2
|
+
import { testVariants } from './_test.js';
|
|
3
|
+
import { variantChildren } from './children.js';
|
|
4
|
+
it('matches direct children selector variant', async () => {
|
|
5
|
+
await testVariants(variantChildren, '*:bg-red', 'bg-red', {
|
|
6
|
+
selector: ' > *',
|
|
7
|
+
});
|
|
8
|
+
});
|
|
9
|
+
//# sourceMappingURL=children.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"children.test.js","sourceRoot":"","sources":["../../src/variants/children.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;IACzD,MAAM,YAAY,CAAC,eAAe,EAAE,UAAU,EAAE,QAAQ,EAAE;QACzD,QAAQ,EAAE,MAAM;KAChB,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"combinators.d.ts","sourceRoot":"","sources":["../../src/variants/combinators.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAiB,MAAM,cAAc,CAAC;AAE3D,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAiC1C,eAAO,MAAM,kBAAkB,EAAE,OAAO,CAAC,KAAK,CAAC,EAM9C,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,OAAO,CAAC,KAAK,CAAC,EAEjD,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { variantGetBracket, variantMatcher } from '@unocss/rule-utils';
|
|
2
|
+
import { h } from '../util/h.js';
|
|
3
|
+
function scopeMatcher(name, combinator) {
|
|
4
|
+
return {
|
|
5
|
+
name: `combinator:${name}`,
|
|
6
|
+
match(matcher, ctx) {
|
|
7
|
+
if (!matcher.startsWith(name))
|
|
8
|
+
return;
|
|
9
|
+
const separators = ctx.generator.config.separators;
|
|
10
|
+
let body = variantGetBracket(`${name}-`, matcher, separators);
|
|
11
|
+
if (!body) {
|
|
12
|
+
for (const separator of separators) {
|
|
13
|
+
if (matcher.startsWith(`${name}${separator}`)) {
|
|
14
|
+
body = ['', matcher.slice(name.length + separator.length)];
|
|
15
|
+
break;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
if (!body)
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
let bracketValue = h.bracket(body[0]) ?? '';
|
|
22
|
+
if (bracketValue === '')
|
|
23
|
+
bracketValue = '*';
|
|
24
|
+
return {
|
|
25
|
+
matcher: body[1],
|
|
26
|
+
selector: (s) => `${s}${combinator}${bracketValue}`,
|
|
27
|
+
};
|
|
28
|
+
},
|
|
29
|
+
multiPass: true,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
export const variantCombinators = [
|
|
33
|
+
scopeMatcher('all', ' '),
|
|
34
|
+
scopeMatcher('children', '>'),
|
|
35
|
+
scopeMatcher('next', '+'),
|
|
36
|
+
scopeMatcher('sibling', '+'),
|
|
37
|
+
scopeMatcher('siblings', '~'),
|
|
38
|
+
];
|
|
39
|
+
export const variantSvgCombinators = [
|
|
40
|
+
variantMatcher('svg', (input) => ({ selector: `${input.selector} svg` })),
|
|
41
|
+
];
|
|
42
|
+
//# sourceMappingURL=combinators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"combinators.js","sourceRoot":"","sources":["../../src/variants/combinators.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEvE,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AAEjC,SAAS,YAAY,CAAC,IAAY,EAAE,UAAkB;IACrD,OAAO;QACN,IAAI,EAAE,cAAc,IAAI,EAAE;QAC1B,KAAK,CAAC,OAAO,EAAE,GAAG;YACjB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;gBAAE,OAAO;YAEtC,MAAM,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC;YACnD,IAAI,IAAI,GAAG,iBAAiB,CAAC,GAAG,IAAI,GAAG,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;YAC9D,IAAI,CAAC,IAAI,EAAE,CAAC;gBACX,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;oBACpC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,SAAS,EAAE,CAAC,EAAE,CAAC;wBAC/C,IAAI,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;wBAC3D,MAAM;oBACP,CAAC;gBACF,CAAC;gBACD,IAAI,CAAC,IAAI;oBAAE,OAAO;YACnB,CAAC;YAED,IAAI,YAAY,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC5C,IAAI,YAAY,KAAK,EAAE;gBAAE,YAAY,GAAG,GAAG,CAAC;YAE5C,OAAO;gBACN,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;gBAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,UAAU,GAAG,YAAY,EAAE;aACnD,CAAC;QACH,CAAC;QACD,SAAS,EAAE,IAAI;KACf,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAqB;IACnD,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC;IACxB,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC;IAC7B,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC;IACzB,YAAY,CAAC,SAAS,EAAE,GAAG,CAAC;IAC5B,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC;CAC7B,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAqB;IACtD,cAAc,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC;CACzE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"combinators.test.d.ts","sourceRoot":"","sources":["../../src/variants/combinators.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { expect, it } from 'vitest';
|
|
2
|
+
import { testTheme } from '../_test.js';
|
|
3
|
+
import { testVariants } from './_test.js';
|
|
4
|
+
import { variantCombinators, variantSvgCombinators } from './combinators.js';
|
|
5
|
+
const ctx = {
|
|
6
|
+
generator: {
|
|
7
|
+
config: {
|
|
8
|
+
separators: [':'],
|
|
9
|
+
},
|
|
10
|
+
},
|
|
11
|
+
rawSelector: '',
|
|
12
|
+
theme: testTheme,
|
|
13
|
+
};
|
|
14
|
+
it('matches explicit combinator scope selector', async () => {
|
|
15
|
+
const childrenVariant = variantCombinators.find((v) => typeof v === 'object' && v.name === 'combinator:children');
|
|
16
|
+
expect(childrenVariant).toBeTruthy();
|
|
17
|
+
expect(childrenVariant).toBeTypeOf('object');
|
|
18
|
+
if (!childrenVariant || typeof childrenVariant !== 'object')
|
|
19
|
+
return;
|
|
20
|
+
const result = await childrenVariant.match('children-[button]:bg-red', ctx);
|
|
21
|
+
expect(result).toBeTruthy();
|
|
22
|
+
expect(result).not.toBeTypeOf('string');
|
|
23
|
+
if (!result || typeof result === 'string')
|
|
24
|
+
return;
|
|
25
|
+
expect(result.matcher).toBe('bg-red');
|
|
26
|
+
expect(result.selector?.('.x')).toBe('.x>button');
|
|
27
|
+
});
|
|
28
|
+
it('matches svg descendant combinator', async () => {
|
|
29
|
+
await testVariants(variantSvgCombinators, 'svg:bg-red', 'bg-red', {
|
|
30
|
+
selector: ' svg',
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
//# sourceMappingURL=combinators.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"combinators.test.js","sourceRoot":"","sources":["../../src/variants/combinators.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAE7E,MAAM,GAAG,GAAG;IACX,SAAS,EAAE;QACV,MAAM,EAAE;YACP,UAAU,EAAE,CAAC,GAAG,CAAC;SACjB;KACD;IACD,WAAW,EAAE,EAAE;IACf,KAAK,EAAE,SAAS;CACT,CAAC;AAET,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;IAC3D,MAAM,eAAe,GAAG,kBAAkB,CAAC,IAAI,CAC9C,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,qBAAqB,CAChE,CAAC;IAEF,MAAM,CAAC,eAAe,CAAC,CAAC,UAAU,EAAE,CAAC;IACrC,MAAM,CAAC,eAAe,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAE7C,IAAI,CAAC,eAAe,IAAI,OAAO,eAAe,KAAK,QAAQ;QAAE,OAAO;IAEpE,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC;IAC5E,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;IAC5B,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAExC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO;IAElD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACnD,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;IAClD,MAAM,YAAY,CAAC,qBAAqB,EAAE,YAAY,EAAE,QAAQ,EAAE;QACjE,QAAQ,EAAE,MAAM;KAChB,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../src/variants/container.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAG1C,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAAC,KAAK,CAqCtD,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { variantGetParameter } from '@unocss/rule-utils';
|
|
2
|
+
import { themeOrLiteral } from '../util/themeOrLiteral.js';
|
|
3
|
+
export const variantContainerQuery = {
|
|
4
|
+
name: '@',
|
|
5
|
+
match(matcher, ctx) {
|
|
6
|
+
if (matcher.startsWith('@container'))
|
|
7
|
+
return;
|
|
8
|
+
const variant = variantGetParameter('@', matcher, ctx.generator.config.separators);
|
|
9
|
+
if (variant) {
|
|
10
|
+
const [match, rest, label] = variant;
|
|
11
|
+
const [container] = themeOrLiteral(match, ctx.theme, {
|
|
12
|
+
startFrom: 'container',
|
|
13
|
+
trySuffixes: ['-width'],
|
|
14
|
+
});
|
|
15
|
+
if (container) {
|
|
16
|
+
let order = 1000 + Object.keys(ctx.theme.container ?? {}).indexOf(match);
|
|
17
|
+
if (label)
|
|
18
|
+
order += 1000;
|
|
19
|
+
return {
|
|
20
|
+
matcher: rest,
|
|
21
|
+
handle: (input, next) => next({
|
|
22
|
+
...input,
|
|
23
|
+
parent: `${input.parent ? `${input.parent} $$ ` : ''}@container${label ? ` ${label} ` : ' '}(min-width: ${container})`,
|
|
24
|
+
parentOrder: order,
|
|
25
|
+
}),
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
multiPass: true,
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=container.js.map
|