@mgcrea/react-native-tailwind 0.9.0 → 0.10.0
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/README.md +356 -30
- package/dist/babel/config-loader.test.ts +152 -0
- package/dist/babel/index.cjs +575 -60
- package/dist/babel/plugin.d.ts +23 -1
- package/dist/babel/plugin.test.ts +417 -0
- package/dist/babel/plugin.ts +265 -32
- package/dist/babel/utils/colorSchemeModifierProcessing.d.ts +34 -0
- package/dist/babel/utils/colorSchemeModifierProcessing.ts +89 -0
- package/dist/babel/utils/dynamicProcessing.d.ts +33 -2
- package/dist/babel/utils/dynamicProcessing.ts +352 -33
- package/dist/babel/utils/styleInjection.d.ts +14 -1
- package/dist/babel/utils/styleInjection.ts +125 -7
- package/dist/babel/utils/styleTransforms.test.ts +56 -0
- package/dist/babel/utils/twProcessing.d.ts +2 -0
- package/dist/babel/utils/twProcessing.ts +22 -1
- package/dist/parser/aspectRatio.js +1 -1
- package/dist/parser/aspectRatio.test.js +1 -1
- package/dist/parser/index.d.ts +2 -2
- package/dist/parser/index.js +1 -1
- package/dist/parser/modifiers.d.ts +48 -2
- package/dist/parser/modifiers.js +1 -1
- package/dist/parser/modifiers.test.js +1 -1
- package/dist/parser/spacing.d.ts +1 -1
- package/dist/parser/spacing.js +1 -1
- package/dist/parser/spacing.test.js +1 -1
- package/dist/runtime.cjs +1 -1
- package/dist/runtime.cjs.map +3 -3
- package/dist/runtime.js +1 -1
- package/dist/runtime.js.map +3 -3
- package/dist/runtime.test.js +1 -1
- package/dist/types/config.d.ts +7 -0
- package/dist/types/config.js +0 -0
- package/package.json +4 -4
- package/src/babel/config-loader.test.ts +152 -0
- package/src/babel/plugin.test.ts +417 -0
- package/src/babel/plugin.ts +265 -32
- package/src/babel/utils/colorSchemeModifierProcessing.ts +89 -0
- package/src/babel/utils/dynamicProcessing.ts +352 -33
- package/src/babel/utils/styleInjection.ts +125 -7
- package/src/babel/utils/styleTransforms.test.ts +56 -0
- package/src/babel/utils/twProcessing.ts +22 -1
- package/src/parser/aspectRatio.test.ts +25 -2
- package/src/parser/aspectRatio.ts +3 -3
- package/src/parser/index.ts +12 -1
- package/src/parser/modifiers.test.ts +151 -1
- package/src/parser/modifiers.ts +139 -4
- package/src/parser/spacing.test.ts +63 -0
- package/src/parser/spacing.ts +10 -6
- package/src/runtime.test.ts +27 -0
- package/src/runtime.ts +2 -1
- package/src/types/config.ts +7 -0
- package/dist/babel/index.test.ts +0 -481
- package/dist/config/palettes.d.ts +0 -302
- package/dist/config/palettes.js +0 -1
- package/dist/parser/__snapshots__/aspectRatio.test.js.snap +0 -9
- package/dist/parser/__snapshots__/borders.test.js.snap +0 -23
- package/dist/parser/__snapshots__/colors.test.js.snap +0 -251
- package/dist/parser/__snapshots__/shadows.test.js.snap +0 -76
- package/dist/parser/__snapshots__/sizing.test.js.snap +0 -61
- package/dist/parser/__snapshots__/spacing.test.js.snap +0 -40
- package/dist/parser/__snapshots__/transforms.test.js.snap +0 -58
- package/dist/parser/__snapshots__/typography.test.js.snap +0 -30
- package/dist/parser/aspectRatio.test.d.ts +0 -1
- package/dist/parser/borders.test.d.ts +0 -1
- package/dist/parser/colors.test.d.ts +0 -1
- package/dist/parser/layout.test.d.ts +0 -1
- package/dist/parser/modifiers.test.d.ts +0 -1
- package/dist/parser/shadows.test.d.ts +0 -1
- package/dist/parser/sizing.test.d.ts +0 -1
- package/dist/parser/spacing.test.d.ts +0 -1
- package/dist/parser/typography.test.d.ts +0 -1
- package/dist/types.d.ts +0 -42
- package/dist/types.js +0 -1
|
@@ -347,3 +347,59 @@ describe("Style merging - edge cases", () => {
|
|
|
347
347
|
expect(output).not.toContain("className");
|
|
348
348
|
});
|
|
349
349
|
});
|
|
350
|
+
|
|
351
|
+
describe("Style function merging - mergeStyleFunctionAttribute", () => {
|
|
352
|
+
it("should merge modifier className with existing function style prop", () => {
|
|
353
|
+
const input = `
|
|
354
|
+
import { Pressable } from 'react-native';
|
|
355
|
+
export function Component() {
|
|
356
|
+
return (
|
|
357
|
+
<Pressable
|
|
358
|
+
className="bg-blue-500 active:bg-blue-700"
|
|
359
|
+
style={({ pressed }) => pressed && { opacity: 0.8 }}
|
|
360
|
+
/>
|
|
361
|
+
);
|
|
362
|
+
}
|
|
363
|
+
`;
|
|
364
|
+
|
|
365
|
+
const output = transform(input);
|
|
366
|
+
|
|
367
|
+
// Should create wrapper function that merges both style functions
|
|
368
|
+
expect(output).toContain("_state");
|
|
369
|
+
expect(output).toMatch(/_state\s*=>/);
|
|
370
|
+
|
|
371
|
+
// Should call both the new style function and existing style function
|
|
372
|
+
expect(output).toContain("_bg_blue_500");
|
|
373
|
+
expect(output).toContain("_active_bg_blue_700");
|
|
374
|
+
|
|
375
|
+
// Should not have className in output
|
|
376
|
+
expect(output).not.toContain("className");
|
|
377
|
+
});
|
|
378
|
+
|
|
379
|
+
it("should merge modifier className with static existing style when using Pressable", () => {
|
|
380
|
+
const input = `
|
|
381
|
+
import { Pressable } from 'react-native';
|
|
382
|
+
export function Component() {
|
|
383
|
+
return (
|
|
384
|
+
<Pressable
|
|
385
|
+
className="p-4 active:bg-gray-100"
|
|
386
|
+
style={{ borderRadius: 8 }}
|
|
387
|
+
/>
|
|
388
|
+
);
|
|
389
|
+
}
|
|
390
|
+
`;
|
|
391
|
+
|
|
392
|
+
const output = transform(input);
|
|
393
|
+
|
|
394
|
+
// Should create function that wraps className styles
|
|
395
|
+
expect(output).toContain("_state");
|
|
396
|
+
|
|
397
|
+
// Should include both the className styles and the static style
|
|
398
|
+
expect(output).toContain("_p_4");
|
|
399
|
+
expect(output).toContain("_active_bg_gray_100");
|
|
400
|
+
expect(output).toContain("borderRadius");
|
|
401
|
+
|
|
402
|
+
// Should not have className in output
|
|
403
|
+
expect(output).not.toContain("className");
|
|
404
|
+
});
|
|
405
|
+
});
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
import type { NodePath } from "@babel/core";
|
|
5
5
|
import type * as BabelTypes from "@babel/types";
|
|
6
6
|
import type { ParsedModifier } from "../../parser/index.js";
|
|
7
|
+
import type { SchemeModifierConfig } from "../../types/config.js";
|
|
7
8
|
import type { StyleObject } from "../../types/core.js";
|
|
8
9
|
/**
|
|
9
10
|
* Plugin state interface (subset needed for tw processing)
|
|
@@ -11,6 +12,7 @@ import type { StyleObject } from "../../types/core.js";
|
|
|
11
12
|
export interface TwProcessingState {
|
|
12
13
|
styleRegistry: Map<string, StyleObject>;
|
|
13
14
|
customColors: Record<string, string>;
|
|
15
|
+
schemeModifierConfig: SchemeModifierConfig;
|
|
14
16
|
stylesIdentifier: string;
|
|
15
17
|
}
|
|
16
18
|
/**
|
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
import type { NodePath } from "@babel/core";
|
|
6
6
|
import type * as BabelTypes from "@babel/types";
|
|
7
7
|
import type { ModifierType, ParsedModifier } from "../../parser/index.js";
|
|
8
|
+
import { expandSchemeModifier, isSchemeModifier } from "../../parser/index.js";
|
|
9
|
+
import type { SchemeModifierConfig } from "../../types/config.js";
|
|
8
10
|
import type { StyleObject } from "../../types/core.js";
|
|
9
11
|
|
|
10
12
|
/**
|
|
@@ -14,6 +16,7 @@ import type { StyleObject } from "../../types/core.js";
|
|
|
14
16
|
export interface TwProcessingState {
|
|
15
17
|
styleRegistry: Map<string, StyleObject>;
|
|
16
18
|
customColors: Record<string, string>;
|
|
19
|
+
schemeModifierConfig: SchemeModifierConfig;
|
|
17
20
|
stylesIdentifier: string;
|
|
18
21
|
}
|
|
19
22
|
|
|
@@ -30,7 +33,25 @@ export function processTwCall(
|
|
|
30
33
|
splitModifierClasses: (className: string) => { baseClasses: string[]; modifierClasses: ParsedModifier[] },
|
|
31
34
|
t: typeof BabelTypes,
|
|
32
35
|
): void {
|
|
33
|
-
const { baseClasses, modifierClasses } = splitModifierClasses(className);
|
|
36
|
+
const { baseClasses, modifierClasses: rawModifierClasses } = splitModifierClasses(className);
|
|
37
|
+
|
|
38
|
+
// Expand scheme: modifiers into dark: and light: modifiers
|
|
39
|
+
const modifierClasses: ParsedModifier[] = [];
|
|
40
|
+
for (const modifier of rawModifierClasses) {
|
|
41
|
+
if (isSchemeModifier(modifier.modifier)) {
|
|
42
|
+
// Expand scheme: into dark: and light:
|
|
43
|
+
const expanded = expandSchemeModifier(
|
|
44
|
+
modifier,
|
|
45
|
+
state.customColors,
|
|
46
|
+
state.schemeModifierConfig.darkSuffix ?? "-dark",
|
|
47
|
+
state.schemeModifierConfig.lightSuffix ?? "-light",
|
|
48
|
+
);
|
|
49
|
+
modifierClasses.push(...expanded);
|
|
50
|
+
} else {
|
|
51
|
+
// Keep other modifiers as-is
|
|
52
|
+
modifierClasses.push(modifier);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
34
55
|
|
|
35
56
|
// Build TwStyle object properties
|
|
36
57
|
const objectProperties: BabelTypes.ObjectProperty[] = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,"__esModule",{value:true});exports.ASPECT_RATIO_PRESETS=void 0;exports.parseAspectRatio=parseAspectRatio;var ASPECT_RATIO_PRESETS=exports.ASPECT_RATIO_PRESETS={"aspect-auto":undefined,"aspect-square":1,"aspect-video":16/9};function parseArbitraryAspectRatio(value){var match=value.match(/^\[(\d+)\/(\d+)\]$/);if(match){var numerator=Number.parseInt(match[1],10);var denominator=Number.parseInt(match[2],10);if(denominator===0){if(process.env.NODE_ENV!=="production"){console.warn(`[react-native-tailwind] Invalid aspect ratio: ${value}. Denominator cannot be zero.`);}return null;}return numerator/denominator;}return null;}function parseAspectRatio(cls){if(!cls.startsWith("aspect-")){return null;}if(cls in ASPECT_RATIO_PRESETS){var _aspectRatio=ASPECT_RATIO_PRESETS[cls];if(_aspectRatio===undefined){return{};}return{aspectRatio:_aspectRatio};}var arbitraryValue=cls.substring(7);var aspectRatio=parseArbitraryAspectRatio(arbitraryValue);if(aspectRatio!==null){return{aspectRatio:aspectRatio};}return null;}
|
|
1
|
+
Object.defineProperty(exports,"__esModule",{value:true});exports.ASPECT_RATIO_PRESETS=void 0;exports.parseAspectRatio=parseAspectRatio;var ASPECT_RATIO_PRESETS=exports.ASPECT_RATIO_PRESETS={"aspect-auto":undefined,"aspect-square":1,"aspect-video":16/9};function parseArbitraryAspectRatio(value){var match=value.match(/^\[(\d+)\/(\d+)\]$/);if(match){var numerator=Number.parseInt(match[1],10);var denominator=Number.parseInt(match[2],10);if(denominator===0){if(process.env.NODE_ENV!=="production"){console.warn(`[react-native-tailwind] Invalid aspect ratio: ${value}. Denominator cannot be zero.`);}return null;}return numerator/denominator;}return null;}function parseAspectRatio(cls){if(!cls.startsWith("aspect-")){return null;}if(cls in ASPECT_RATIO_PRESETS){var _aspectRatio=ASPECT_RATIO_PRESETS[cls];if(_aspectRatio===undefined){return{aspectRatio:undefined};}return{aspectRatio:_aspectRatio};}var arbitraryValue=cls.substring(7);var aspectRatio=parseArbitraryAspectRatio(arbitraryValue);if(aspectRatio!==null){return{aspectRatio:aspectRatio};}return null;}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var _vitest=require("vitest");var _aspectRatio=require("./aspectRatio");(0,_vitest.describe)("ASPECT_RATIO_PRESETS",function(){(0,_vitest.it)("should export aspect ratio presets",function(){(0,_vitest.expect)(_aspectRatio.ASPECT_RATIO_PRESETS).toMatchSnapshot();});(0,_vitest.it)("should have all preset values",function(){(0,_vitest.expect)(_aspectRatio.ASPECT_RATIO_PRESETS).toHaveProperty("aspect-auto");(0,_vitest.expect)(_aspectRatio.ASPECT_RATIO_PRESETS).toHaveProperty("aspect-square");(0,_vitest.expect)(_aspectRatio.ASPECT_RATIO_PRESETS).toHaveProperty("aspect-video");});(0,_vitest.it)("should have correct preset values",function(){(0,_vitest.expect)(_aspectRatio.ASPECT_RATIO_PRESETS["aspect-auto"]).toBeUndefined();(0,_vitest.expect)(_aspectRatio.ASPECT_RATIO_PRESETS["aspect-square"]).toBe(1);(0,_vitest.expect)(_aspectRatio.ASPECT_RATIO_PRESETS["aspect-video"]).toBe(16/9);});});(0,_vitest.describe)("parseAspectRatio - preset values",function(){(0,_vitest.it)("should parse aspect-square",function(){(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-square")).toEqual({aspectRatio:1});});(0,_vitest.it)("should parse aspect-video",function(){(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-video")).toEqual({aspectRatio:16/9});});(0,_vitest.it)("should parse aspect-auto",function(){(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-auto")).toEqual({});});});(0,_vitest.describe)("parseAspectRatio - arbitrary values",function(){(0,_vitest.it)("should parse arbitrary aspect ratio values",function(){(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-[4/3]")).toEqual({aspectRatio:4/3});(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-[16/9]")).toEqual({aspectRatio:16/9});(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-[21/9]")).toEqual({aspectRatio:21/9});(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-[1/1]")).toEqual({aspectRatio:1});});(0,_vitest.it)("should handle arbitrary ratios with different aspect values",function(){(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-[2/1]")).toEqual({aspectRatio:2});(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-[3/2]")).toEqual({aspectRatio:1.5});(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-[9/16]")).toEqual({aspectRatio:9/16});});(0,_vitest.it)("should handle arbitrary ratios with large numbers",function(){(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-[100/50]")).toEqual({aspectRatio:2});(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-[1920/1080]")).toEqual({aspectRatio:1920/1080});});(0,_vitest.it)("should calculate correct aspect ratio values",function(){var result=(0,_aspectRatio.parseAspectRatio)("aspect-[4/3]");(0,_vitest.expect)(result==null?void 0:result.aspectRatio).toBeCloseTo(1.333,3);var result2=(0,_aspectRatio.parseAspectRatio)("aspect-[16/9]");(0,_vitest.expect)(result2==null?void 0:result2.aspectRatio).toBeCloseTo(1.778,3);});});(0,_vitest.describe)("parseAspectRatio - edge cases",function(){(0,_vitest.it)("should return null for division by zero",function(){(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-[4/0]")).toBeNull();(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-[16/0]")).toBeNull();});(0,_vitest.it)("should return null for invalid arbitrary values",function(){(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-[4]")).toBeNull();(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-[/3]")).toBeNull();(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-[4/3/2]")).toBeNull();(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-[abc/def]")).toBeNull();});(0,_vitest.it)("should return null for malformed brackets",function(){(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-[4/3")).toBeNull();(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-4/3]")).toBeNull();(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-4/3")).toBeNull();});(0,_vitest.it)("should return null for invalid class prefixes",function(){(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("ratio-[4/3]")).toBeNull();(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("ar-[4/3]")).toBeNull();(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspectRatio-[4/3]")).toBeNull();});});(0,_vitest.describe)("parseAspectRatio - invalid classes",function(){(0,_vitest.it)("should return null for non-aspect classes",function(){(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("bg-blue-500")).toBeNull();(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("p-4")).toBeNull();(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("text-white")).toBeNull();(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("w-full")).toBeNull();});(0,_vitest.it)("should return null for invalid aspect class names",function(){(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect")).toBeNull();(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-")).toBeNull();(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-invalid")).toBeNull();(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-16-9")).toBeNull();});(0,_vitest.it)("should return null for empty or whitespace input",function(){(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("")).toBeNull();(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)(" ")).toBeNull();});});(0,_vitest.describe)("parseAspectRatio - type validation",function(){(0,_vitest.it)("should return objects with correct property types",function(){var square=(0,_aspectRatio.parseAspectRatio)("aspect-square");(0,_vitest.expect)(typeof(square==null?void 0:square.aspectRatio)).toBe("number");var video=(0,_aspectRatio.parseAspectRatio)("aspect-video");(0,_vitest.expect)(typeof(video==null?void 0:video.aspectRatio)).toBe("number");var arbitrary=(0,_aspectRatio.parseAspectRatio)("aspect-[4/3]");(0,_vitest.expect)(typeof(arbitrary==null?void 0:arbitrary.aspectRatio)).toBe("number");});(0,_vitest.it)("should return null or object, never undefined",function(){var valid=(0,_aspectRatio.parseAspectRatio)("aspect-square");(0,_vitest.expect)(valid).not.toBeUndefined();(0,_vitest.expect)(typeof valid).toBe("object");var invalid=(0,_aspectRatio.parseAspectRatio)("invalid");(0,_vitest.expect)(invalid).toBeNull();});});(0,_vitest.describe)("parseAspectRatio - comprehensive coverage",function(){(0,_vitest.it)("should parse all preset variants without errors",function(){var presets=["aspect-auto","aspect-square","aspect-video"];presets.forEach(function(preset){var result=(0,_aspectRatio.parseAspectRatio)(preset);(0,_vitest.expect)(result).toBeTruthy();(0,_vitest.expect)(typeof result).toBe("object");});});(0,_vitest.it)("should return consistent results for same input",function(){var result1=(0,_aspectRatio.parseAspectRatio)("aspect-square");var result2=(0,_aspectRatio.parseAspectRatio)("aspect-square");(0,_vitest.expect)(result1).toEqual(result2);var result3=(0,_aspectRatio.parseAspectRatio)("aspect-[4/3]");var result4=(0,_aspectRatio.parseAspectRatio)("aspect-[4/3]");(0,_vitest.expect)(result3).toEqual(result4);});(0,_vitest.it)("should handle case-sensitive class names",function(){(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("ASPECT-square")).toBeNull();(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("Aspect-video")).toBeNull();(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-SQUARE")).toBeNull();});(0,_vitest.it)("should handle common aspect ratios",function(){(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-[1/1]")).toBeTruthy();(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-[4/3]")).toBeTruthy();(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-[16/9]")).toBeTruthy();(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-[21/9]")).toBeTruthy();(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-[9/16]")).toBeTruthy();});(0,_vitest.it)("should differentiate between preset and arbitrary values",function(){var preset=(0,_aspectRatio.parseAspectRatio)("aspect-video");(0,_vitest.expect)(preset).toEqual({aspectRatio:16/9});var arbitrary=(0,_aspectRatio.parseAspectRatio)("aspect-[16/9]");(0,_vitest.expect)(arbitrary).toEqual({aspectRatio:16/9});(0,_vitest.expect)(preset).toEqual(arbitrary);});(0,_vitest.it)("should handle fractional results correctly",function(){var result=(0,_aspectRatio.parseAspectRatio)("aspect-[5/7]");(0,_vitest.expect)(result==null?void 0:result.aspectRatio).toBeCloseTo(0.714,3);var result2=(0,_aspectRatio.parseAspectRatio)("aspect-[3/4]");(0,_vitest.expect)(result2==null?void 0:result2.aspectRatio).toBe(0.75);});});
|
|
1
|
+
var _vitest=require("vitest");var _aspectRatio=require("./aspectRatio");var _index=require("./index");(0,_vitest.describe)("ASPECT_RATIO_PRESETS",function(){(0,_vitest.it)("should export aspect ratio presets",function(){(0,_vitest.expect)(_aspectRatio.ASPECT_RATIO_PRESETS).toMatchSnapshot();});(0,_vitest.it)("should have all preset values",function(){(0,_vitest.expect)(_aspectRatio.ASPECT_RATIO_PRESETS).toHaveProperty("aspect-auto");(0,_vitest.expect)(_aspectRatio.ASPECT_RATIO_PRESETS).toHaveProperty("aspect-square");(0,_vitest.expect)(_aspectRatio.ASPECT_RATIO_PRESETS).toHaveProperty("aspect-video");});(0,_vitest.it)("should have correct preset values",function(){(0,_vitest.expect)(_aspectRatio.ASPECT_RATIO_PRESETS["aspect-auto"]).toBeUndefined();(0,_vitest.expect)(_aspectRatio.ASPECT_RATIO_PRESETS["aspect-square"]).toBe(1);(0,_vitest.expect)(_aspectRatio.ASPECT_RATIO_PRESETS["aspect-video"]).toBe(16/9);});});(0,_vitest.describe)("parseAspectRatio - preset values",function(){(0,_vitest.it)("should parse aspect-square",function(){(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-square")).toEqual({aspectRatio:1});});(0,_vitest.it)("should parse aspect-video",function(){(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-video")).toEqual({aspectRatio:16/9});});(0,_vitest.it)("should parse aspect-auto",function(){(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-auto")).toEqual({aspectRatio:undefined});});});(0,_vitest.describe)("parseAspectRatio - arbitrary values",function(){(0,_vitest.it)("should parse arbitrary aspect ratio values",function(){(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-[4/3]")).toEqual({aspectRatio:4/3});(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-[16/9]")).toEqual({aspectRatio:16/9});(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-[21/9]")).toEqual({aspectRatio:21/9});(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-[1/1]")).toEqual({aspectRatio:1});});(0,_vitest.it)("should handle arbitrary ratios with different aspect values",function(){(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-[2/1]")).toEqual({aspectRatio:2});(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-[3/2]")).toEqual({aspectRatio:1.5});(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-[9/16]")).toEqual({aspectRatio:9/16});});(0,_vitest.it)("should handle arbitrary ratios with large numbers",function(){(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-[100/50]")).toEqual({aspectRatio:2});(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-[1920/1080]")).toEqual({aspectRatio:1920/1080});});(0,_vitest.it)("should calculate correct aspect ratio values",function(){var result=(0,_aspectRatio.parseAspectRatio)("aspect-[4/3]");(0,_vitest.expect)(result==null?void 0:result.aspectRatio).toBeCloseTo(1.333,3);var result2=(0,_aspectRatio.parseAspectRatio)("aspect-[16/9]");(0,_vitest.expect)(result2==null?void 0:result2.aspectRatio).toBeCloseTo(1.778,3);});});(0,_vitest.describe)("parseAspectRatio - edge cases",function(){(0,_vitest.it)("should return null for division by zero",function(){(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-[4/0]")).toBeNull();(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-[16/0]")).toBeNull();});(0,_vitest.it)("should return null for invalid arbitrary values",function(){(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-[4]")).toBeNull();(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-[/3]")).toBeNull();(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-[4/3/2]")).toBeNull();(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-[abc/def]")).toBeNull();});(0,_vitest.it)("should return null for malformed brackets",function(){(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-[4/3")).toBeNull();(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-4/3]")).toBeNull();(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-4/3")).toBeNull();});(0,_vitest.it)("should return null for invalid class prefixes",function(){(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("ratio-[4/3]")).toBeNull();(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("ar-[4/3]")).toBeNull();(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspectRatio-[4/3]")).toBeNull();});});(0,_vitest.describe)("parseAspectRatio - invalid classes",function(){(0,_vitest.it)("should return null for non-aspect classes",function(){(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("bg-blue-500")).toBeNull();(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("p-4")).toBeNull();(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("text-white")).toBeNull();(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("w-full")).toBeNull();});(0,_vitest.it)("should return null for invalid aspect class names",function(){(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect")).toBeNull();(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-")).toBeNull();(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-invalid")).toBeNull();(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-16-9")).toBeNull();});(0,_vitest.it)("should return null for empty or whitespace input",function(){(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("")).toBeNull();(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)(" ")).toBeNull();});});(0,_vitest.describe)("parseAspectRatio - type validation",function(){(0,_vitest.it)("should return objects with correct property types",function(){var square=(0,_aspectRatio.parseAspectRatio)("aspect-square");(0,_vitest.expect)(typeof(square==null?void 0:square.aspectRatio)).toBe("number");var video=(0,_aspectRatio.parseAspectRatio)("aspect-video");(0,_vitest.expect)(typeof(video==null?void 0:video.aspectRatio)).toBe("number");var arbitrary=(0,_aspectRatio.parseAspectRatio)("aspect-[4/3]");(0,_vitest.expect)(typeof(arbitrary==null?void 0:arbitrary.aspectRatio)).toBe("number");});(0,_vitest.it)("should return null or object, never undefined",function(){var valid=(0,_aspectRatio.parseAspectRatio)("aspect-square");(0,_vitest.expect)(valid).not.toBeUndefined();(0,_vitest.expect)(typeof valid).toBe("object");var invalid=(0,_aspectRatio.parseAspectRatio)("invalid");(0,_vitest.expect)(invalid).toBeNull();});});(0,_vitest.describe)("parseAspectRatio - override behavior",function(){(0,_vitest.it)("should allow aspect-auto to override previously set aspect ratios",function(){var result=(0,_index.parseClassName)("aspect-square aspect-auto");(0,_vitest.expect)(result).toEqual({aspectRatio:undefined});});(0,_vitest.it)("should allow aspect ratios to override aspect-auto",function(){var result=(0,_index.parseClassName)("aspect-auto aspect-square");(0,_vitest.expect)(result).toEqual({aspectRatio:1});});(0,_vitest.it)("should apply last aspect ratio in sequence",function(){var result=(0,_index.parseClassName)("aspect-square aspect-video aspect-auto");(0,_vitest.expect)(result).toEqual({aspectRatio:undefined});var result2=(0,_index.parseClassName)("aspect-auto aspect-square aspect-video");(0,_vitest.expect)(result2).toEqual({aspectRatio:16/9});});});(0,_vitest.describe)("parseAspectRatio - comprehensive coverage",function(){(0,_vitest.it)("should parse all preset variants without errors",function(){var presets=["aspect-auto","aspect-square","aspect-video"];presets.forEach(function(preset){var result=(0,_aspectRatio.parseAspectRatio)(preset);(0,_vitest.expect)(result).toBeTruthy();(0,_vitest.expect)(typeof result).toBe("object");});});(0,_vitest.it)("should return consistent results for same input",function(){var result1=(0,_aspectRatio.parseAspectRatio)("aspect-square");var result2=(0,_aspectRatio.parseAspectRatio)("aspect-square");(0,_vitest.expect)(result1).toEqual(result2);var result3=(0,_aspectRatio.parseAspectRatio)("aspect-[4/3]");var result4=(0,_aspectRatio.parseAspectRatio)("aspect-[4/3]");(0,_vitest.expect)(result3).toEqual(result4);});(0,_vitest.it)("should handle case-sensitive class names",function(){(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("ASPECT-square")).toBeNull();(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("Aspect-video")).toBeNull();(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-SQUARE")).toBeNull();});(0,_vitest.it)("should handle common aspect ratios",function(){(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-[1/1]")).toBeTruthy();(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-[4/3]")).toBeTruthy();(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-[16/9]")).toBeTruthy();(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-[21/9]")).toBeTruthy();(0,_vitest.expect)((0,_aspectRatio.parseAspectRatio)("aspect-[9/16]")).toBeTruthy();});(0,_vitest.it)("should differentiate between preset and arbitrary values",function(){var preset=(0,_aspectRatio.parseAspectRatio)("aspect-video");(0,_vitest.expect)(preset).toEqual({aspectRatio:16/9});var arbitrary=(0,_aspectRatio.parseAspectRatio)("aspect-[16/9]");(0,_vitest.expect)(arbitrary).toEqual({aspectRatio:16/9});(0,_vitest.expect)(preset).toEqual(arbitrary);});(0,_vitest.it)("should handle fractional results correctly",function(){var result=(0,_aspectRatio.parseAspectRatio)("aspect-[5/7]");(0,_vitest.expect)(result==null?void 0:result.aspectRatio).toBeCloseTo(0.714,3);var result2=(0,_aspectRatio.parseAspectRatio)("aspect-[3/4]");(0,_vitest.expect)(result2==null?void 0:result2.aspectRatio).toBe(0.75);});});
|
package/dist/parser/index.d.ts
CHANGED
|
@@ -27,5 +27,5 @@ export { parseSizing } from "./sizing";
|
|
|
27
27
|
export { parseSpacing } from "./spacing";
|
|
28
28
|
export { parseTransform } from "./transforms";
|
|
29
29
|
export { parseTypography } from "./typography";
|
|
30
|
-
export { hasModifier, isPlatformModifier, isStateModifier, parseModifier, splitModifierClasses, } from "./modifiers";
|
|
31
|
-
export type { ModifierType, ParsedModifier, PlatformModifierType, StateModifierType } from "./modifiers";
|
|
30
|
+
export { expandSchemeModifier, hasModifier, isColorClass, isColorSchemeModifier, isPlatformModifier, isSchemeModifier, isStateModifier, parseModifier, splitModifierClasses, } from "./modifiers";
|
|
31
|
+
export type { ColorSchemeModifierType, ModifierType, ParsedModifier, PlatformModifierType, SchemeModifierType, StateModifierType, } from "./modifiers";
|
package/dist/parser/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"hasModifier",{enumerable:true,get:function get(){return _modifiers.hasModifier;}});Object.defineProperty(exports,"isPlatformModifier",{enumerable:true,get:function get(){return _modifiers.isPlatformModifier;}});Object.defineProperty(exports,"isStateModifier",{enumerable:true,get:function get(){return _modifiers.isStateModifier;}});Object.defineProperty(exports,"parseAspectRatio",{enumerable:true,get:function get(){return _aspectRatio.parseAspectRatio;}});Object.defineProperty(exports,"parseBorder",{enumerable:true,get:function get(){return _borders.parseBorder;}});exports.parseClass=parseClass;exports.parseClassName=parseClassName;Object.defineProperty(exports,"parseColor",{enumerable:true,get:function get(){return _colors.parseColor;}});Object.defineProperty(exports,"parseLayout",{enumerable:true,get:function get(){return _layout.parseLayout;}});Object.defineProperty(exports,"parseModifier",{enumerable:true,get:function get(){return _modifiers.parseModifier;}});Object.defineProperty(exports,"parsePlaceholderClass",{enumerable:true,get:function get(){return _placeholder.parsePlaceholderClass;}});Object.defineProperty(exports,"parsePlaceholderClasses",{enumerable:true,get:function get(){return _placeholder.parsePlaceholderClasses;}});Object.defineProperty(exports,"parseShadow",{enumerable:true,get:function get(){return _shadows.parseShadow;}});Object.defineProperty(exports,"parseSizing",{enumerable:true,get:function get(){return _sizing.parseSizing;}});Object.defineProperty(exports,"parseSpacing",{enumerable:true,get:function get(){return _spacing.parseSpacing;}});Object.defineProperty(exports,"parseTransform",{enumerable:true,get:function get(){return _transforms.parseTransform;}});Object.defineProperty(exports,"parseTypography",{enumerable:true,get:function get(){return _typography.parseTypography;}});Object.defineProperty(exports,"splitModifierClasses",{enumerable:true,get:function get(){return _modifiers.splitModifierClasses;}});var _aspectRatio=require("./aspectRatio");var _borders=require("./borders");var _colors=require("./colors");var _layout=require("./layout");var _shadows=require("./shadows");var _sizing=require("./sizing");var _spacing=require("./spacing");var _transforms=require("./transforms");var _typography=require("./typography");var _placeholder=require("./placeholder");var _modifiers=require("./modifiers");function parseClassName(className,customColors){var classes=className.split(/\s+/).filter(Boolean);var style={};for(var cls of classes){var parsedStyle=parseClass(cls,customColors);Object.assign(style,parsedStyle);}return style;}function parseClass(cls,customColors){var parsers=[_spacing.parseSpacing,_borders.parseBorder,function(cls){return(0,_colors.parseColor)(cls,customColors);},_layout.parseLayout,_typography.parseTypography,_sizing.parseSizing,_shadows.parseShadow,_aspectRatio.parseAspectRatio,_transforms.parseTransform];for(var parser of parsers){var result=parser(cls);if(result!==null){return result;}}if(process.env.NODE_ENV!=="production"){console.warn(`[react-native-tailwind] Unknown class: "${cls}"`);}return{};}
|
|
1
|
+
Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"expandSchemeModifier",{enumerable:true,get:function get(){return _modifiers.expandSchemeModifier;}});Object.defineProperty(exports,"hasModifier",{enumerable:true,get:function get(){return _modifiers.hasModifier;}});Object.defineProperty(exports,"isColorClass",{enumerable:true,get:function get(){return _modifiers.isColorClass;}});Object.defineProperty(exports,"isColorSchemeModifier",{enumerable:true,get:function get(){return _modifiers.isColorSchemeModifier;}});Object.defineProperty(exports,"isPlatformModifier",{enumerable:true,get:function get(){return _modifiers.isPlatformModifier;}});Object.defineProperty(exports,"isSchemeModifier",{enumerable:true,get:function get(){return _modifiers.isSchemeModifier;}});Object.defineProperty(exports,"isStateModifier",{enumerable:true,get:function get(){return _modifiers.isStateModifier;}});Object.defineProperty(exports,"parseAspectRatio",{enumerable:true,get:function get(){return _aspectRatio.parseAspectRatio;}});Object.defineProperty(exports,"parseBorder",{enumerable:true,get:function get(){return _borders.parseBorder;}});exports.parseClass=parseClass;exports.parseClassName=parseClassName;Object.defineProperty(exports,"parseColor",{enumerable:true,get:function get(){return _colors.parseColor;}});Object.defineProperty(exports,"parseLayout",{enumerable:true,get:function get(){return _layout.parseLayout;}});Object.defineProperty(exports,"parseModifier",{enumerable:true,get:function get(){return _modifiers.parseModifier;}});Object.defineProperty(exports,"parsePlaceholderClass",{enumerable:true,get:function get(){return _placeholder.parsePlaceholderClass;}});Object.defineProperty(exports,"parsePlaceholderClasses",{enumerable:true,get:function get(){return _placeholder.parsePlaceholderClasses;}});Object.defineProperty(exports,"parseShadow",{enumerable:true,get:function get(){return _shadows.parseShadow;}});Object.defineProperty(exports,"parseSizing",{enumerable:true,get:function get(){return _sizing.parseSizing;}});Object.defineProperty(exports,"parseSpacing",{enumerable:true,get:function get(){return _spacing.parseSpacing;}});Object.defineProperty(exports,"parseTransform",{enumerable:true,get:function get(){return _transforms.parseTransform;}});Object.defineProperty(exports,"parseTypography",{enumerable:true,get:function get(){return _typography.parseTypography;}});Object.defineProperty(exports,"splitModifierClasses",{enumerable:true,get:function get(){return _modifiers.splitModifierClasses;}});var _aspectRatio=require("./aspectRatio");var _borders=require("./borders");var _colors=require("./colors");var _layout=require("./layout");var _shadows=require("./shadows");var _sizing=require("./sizing");var _spacing=require("./spacing");var _transforms=require("./transforms");var _typography=require("./typography");var _placeholder=require("./placeholder");var _modifiers=require("./modifiers");function parseClassName(className,customColors){var classes=className.split(/\s+/).filter(Boolean);var style={};for(var cls of classes){var parsedStyle=parseClass(cls,customColors);Object.assign(style,parsedStyle);}return style;}function parseClass(cls,customColors){var parsers=[_spacing.parseSpacing,_borders.parseBorder,function(cls){return(0,_colors.parseColor)(cls,customColors);},_layout.parseLayout,_typography.parseTypography,_sizing.parseSizing,_shadows.parseShadow,_aspectRatio.parseAspectRatio,_transforms.parseTransform];for(var parser of parsers){var result=parser(cls);if(result!==null){return result;}}if(process.env.NODE_ENV!=="production"){console.warn(`[react-native-tailwind] Unknown class: "${cls}"`);}return{};}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Modifier parsing utilities for state-based
|
|
2
|
+
* Modifier parsing utilities for state-based, platform-specific, and color scheme class names
|
|
3
3
|
* - State modifiers: active:, hover:, focus:, disabled:, placeholder:
|
|
4
4
|
* - Platform modifiers: ios:, android:, web:
|
|
5
|
+
* - Color scheme modifiers: dark:, light:
|
|
5
6
|
*/
|
|
6
7
|
export type StateModifierType = "active" | "hover" | "focus" | "disabled" | "placeholder";
|
|
7
8
|
export type PlatformModifierType = "ios" | "android" | "web";
|
|
8
|
-
export type
|
|
9
|
+
export type ColorSchemeModifierType = "dark" | "light";
|
|
10
|
+
export type SchemeModifierType = "scheme";
|
|
11
|
+
export type ModifierType = StateModifierType | PlatformModifierType | ColorSchemeModifierType | SchemeModifierType;
|
|
9
12
|
export type ParsedModifier = {
|
|
10
13
|
modifier: ModifierType;
|
|
11
14
|
baseClass: string;
|
|
@@ -43,6 +46,49 @@ export declare function isStateModifier(modifier: ModifierType): modifier is Sta
|
|
|
43
46
|
* @returns true if modifier is a platform modifier
|
|
44
47
|
*/
|
|
45
48
|
export declare function isPlatformModifier(modifier: ModifierType): modifier is PlatformModifierType;
|
|
49
|
+
/**
|
|
50
|
+
* Check if a modifier is a color scheme modifier (dark, light)
|
|
51
|
+
*
|
|
52
|
+
* @param modifier - Modifier type to check
|
|
53
|
+
* @returns true if modifier is a color scheme modifier
|
|
54
|
+
*/
|
|
55
|
+
export declare function isColorSchemeModifier(modifier: ModifierType): modifier is ColorSchemeModifierType;
|
|
56
|
+
/**
|
|
57
|
+
* Check if a modifier is a scheme modifier (scheme)
|
|
58
|
+
*
|
|
59
|
+
* @param modifier - Modifier type to check
|
|
60
|
+
* @returns true if modifier is a scheme modifier
|
|
61
|
+
*/
|
|
62
|
+
export declare function isSchemeModifier(modifier: ModifierType): modifier is SchemeModifierType;
|
|
63
|
+
/**
|
|
64
|
+
* Check if a class name is a color-based utility class
|
|
65
|
+
*
|
|
66
|
+
* @param className - Class name to check
|
|
67
|
+
* @returns true if class is color-based (text-*, bg-*, border-*)
|
|
68
|
+
*/
|
|
69
|
+
export declare function isColorClass(className: string): boolean;
|
|
70
|
+
/**
|
|
71
|
+
* Expand scheme modifier into dark and light modifiers
|
|
72
|
+
*
|
|
73
|
+
* @param schemeModifier - Parsed scheme modifier
|
|
74
|
+
* @param customColors - Custom colors from config
|
|
75
|
+
* @param darkSuffix - Suffix for dark variant (default: "-dark")
|
|
76
|
+
* @param lightSuffix - Suffix for light variant (default: "-light")
|
|
77
|
+
* @returns Array of expanded modifiers (dark: and light:), or empty array if validation fails
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* expandSchemeModifier(
|
|
81
|
+
* { modifier: "scheme", baseClass: "text-systemGray" },
|
|
82
|
+
* { "systemGray-dark": "#333", "systemGray-light": "#ccc" },
|
|
83
|
+
* "-dark",
|
|
84
|
+
* "-light"
|
|
85
|
+
* )
|
|
86
|
+
* // Returns: [
|
|
87
|
+
* // { modifier: "dark", baseClass: "text-systemGray-dark" },
|
|
88
|
+
* // { modifier: "light", baseClass: "text-systemGray-light" }
|
|
89
|
+
* // ]
|
|
90
|
+
*/
|
|
91
|
+
export declare function expandSchemeModifier(schemeModifier: ParsedModifier, customColors: Record<string, string>, darkSuffix?: string, lightSuffix?: string): ParsedModifier[];
|
|
46
92
|
/**
|
|
47
93
|
* Split a space-separated className string into base and modifier classes
|
|
48
94
|
*
|
package/dist/parser/modifiers.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,"__esModule",{value:true});exports.hasModifier=hasModifier;exports.isPlatformModifier=isPlatformModifier;exports.isStateModifier=isStateModifier;exports.parseModifier=parseModifier;exports.splitModifierClasses=splitModifierClasses;var STATE_MODIFIERS=["active","hover","focus","disabled","placeholder"];var PLATFORM_MODIFIERS=["ios","android","web"];var SUPPORTED_MODIFIERS=[].concat(STATE_MODIFIERS,PLATFORM_MODIFIERS);function parseModifier(cls){var colonIndex=cls.indexOf(":");if(colonIndex===-1){return null;}var potentialModifier=cls.slice(0,colonIndex);var baseClass=cls.slice(colonIndex+1);if(!SUPPORTED_MODIFIERS.includes(potentialModifier)){return null;}if(baseClass.includes(":")){return null;}if(!baseClass){return null;}return{modifier:potentialModifier,baseClass:baseClass};}function hasModifier(cls){return parseModifier(cls)!==null;}function isStateModifier(modifier){return STATE_MODIFIERS.includes(modifier);}function isPlatformModifier(modifier){return PLATFORM_MODIFIERS.includes(modifier);}function splitModifierClasses(className){var classes=className.trim().split(/\s+/).filter(Boolean);var baseClasses=[];var modifierClasses=[];for(var cls of classes){var parsed=parseModifier(cls);if(parsed){modifierClasses.push(parsed);}else{baseClasses.push(cls);}}return{baseClasses:baseClasses,modifierClasses:modifierClasses};}
|
|
1
|
+
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.expandSchemeModifier=expandSchemeModifier;exports.hasModifier=hasModifier;exports.isColorClass=isColorClass;exports.isColorSchemeModifier=isColorSchemeModifier;exports.isPlatformModifier=isPlatformModifier;exports.isSchemeModifier=isSchemeModifier;exports.isStateModifier=isStateModifier;exports.parseModifier=parseModifier;exports.splitModifierClasses=splitModifierClasses;var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var STATE_MODIFIERS=["active","hover","focus","disabled","placeholder"];var PLATFORM_MODIFIERS=["ios","android","web"];var COLOR_SCHEME_MODIFIERS=["dark","light"];var SCHEME_MODIFIERS=["scheme"];var SUPPORTED_MODIFIERS=[].concat(STATE_MODIFIERS,PLATFORM_MODIFIERS,COLOR_SCHEME_MODIFIERS,SCHEME_MODIFIERS);function parseModifier(cls){var colonIndex=cls.indexOf(":");if(colonIndex===-1){return null;}var potentialModifier=cls.slice(0,colonIndex);var baseClass=cls.slice(colonIndex+1);if(!SUPPORTED_MODIFIERS.includes(potentialModifier)){return null;}if(baseClass.includes(":")){return null;}if(!baseClass){return null;}return{modifier:potentialModifier,baseClass:baseClass};}function hasModifier(cls){return parseModifier(cls)!==null;}function isStateModifier(modifier){return STATE_MODIFIERS.includes(modifier);}function isPlatformModifier(modifier){return PLATFORM_MODIFIERS.includes(modifier);}function isColorSchemeModifier(modifier){return COLOR_SCHEME_MODIFIERS.includes(modifier);}function isSchemeModifier(modifier){return SCHEME_MODIFIERS.includes(modifier);}function isColorClass(className){return className.startsWith("text-")||className.startsWith("bg-")||className.startsWith("border-");}function expandSchemeModifier(schemeModifier,customColors){var darkSuffix=arguments.length>2&&arguments[2]!==undefined?arguments[2]:"-dark";var lightSuffix=arguments.length>3&&arguments[3]!==undefined?arguments[3]:"-light";var baseClass=schemeModifier.baseClass;if(!isColorClass(baseClass)){if(process.env.NODE_ENV!=="production"){console.warn(`[react-native-tailwind] scheme: modifier only supports color classes (text-*, bg-*, border-*). `+`Found: "${baseClass}". This modifier will be ignored.`);}return[];}var match=baseClass.match(/^(text|bg|border)-(.+)$/);if(!match){return[];}var _match=(0,_slicedToArray2.default)(match,3),prefix=_match[1],colorName=_match[2];var darkColorName=`${colorName}${darkSuffix}`;var lightColorName=`${colorName}${lightSuffix}`;var darkColorExists=customColors[darkColorName]!==undefined;var lightColorExists=customColors[lightColorName]!==undefined;if(!darkColorExists||!lightColorExists){if(process.env.NODE_ENV!=="production"){var missing=[];if(!darkColorExists)missing.push(`${colorName}${darkSuffix}`);if(!lightColorExists)missing.push(`${colorName}${lightSuffix}`);console.warn(`[react-native-tailwind] scheme:${baseClass} requires both color variants to exist. `+`Missing: ${missing.join(", ")}. This modifier will be ignored.`);}return[];}return[{modifier:"dark",baseClass:`${prefix}-${darkColorName}`},{modifier:"light",baseClass:`${prefix}-${lightColorName}`}];}function splitModifierClasses(className){var classes=className.trim().split(/\s+/).filter(Boolean);var baseClasses=[];var modifierClasses=[];for(var cls of classes){var parsed=parseModifier(cls);if(parsed){modifierClasses.push(parsed);}else{baseClasses.push(cls);}}return{baseClasses:baseClasses,modifierClasses:modifierClasses};}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var _vitest=require("vitest");var _modifiers=require("./modifiers");(0,_vitest.describe)("parseModifier - basic functionality",function(){(0,_vitest.it)("should parse active modifier",function(){var result=(0,_modifiers.parseModifier)("active:bg-blue-500");(0,_vitest.expect)(result).toEqual({modifier:"active",baseClass:"bg-blue-500"});});(0,_vitest.it)("should parse hover modifier",function(){var result=(0,_modifiers.parseModifier)("hover:text-red-500");(0,_vitest.expect)(result).toEqual({modifier:"hover",baseClass:"text-red-500"});});(0,_vitest.it)("should parse focus modifier",function(){var result=(0,_modifiers.parseModifier)("focus:border-green-500");(0,_vitest.expect)(result).toEqual({modifier:"focus",baseClass:"border-green-500"});});(0,_vitest.it)("should parse disabled modifier",function(){var result=(0,_modifiers.parseModifier)("disabled:bg-gray-400");(0,_vitest.expect)(result).toEqual({modifier:"disabled",baseClass:"bg-gray-400"});});(0,_vitest.it)("should return null for class without modifier",function(){(0,_vitest.expect)((0,_modifiers.parseModifier)("bg-blue-500")).toBeNull();(0,_vitest.expect)((0,_modifiers.parseModifier)("text-red-500")).toBeNull();(0,_vitest.expect)((0,_modifiers.parseModifier)("p-4")).toBeNull();});});(0,_vitest.describe)("parseModifier - various base classes",function(){(0,_vitest.it)("should parse modifiers with spacing classes",function(){(0,_vitest.expect)((0,_modifiers.parseModifier)("active:m-4")).toEqual({modifier:"active",baseClass:"m-4"});(0,_vitest.expect)((0,_modifiers.parseModifier)("hover:p-8")).toEqual({modifier:"hover",baseClass:"p-8"});});(0,_vitest.it)("should parse modifiers with layout classes",function(){(0,_vitest.expect)((0,_modifiers.parseModifier)("active:flex")).toEqual({modifier:"active",baseClass:"flex"});(0,_vitest.expect)((0,_modifiers.parseModifier)("focus:absolute")).toEqual({modifier:"focus",baseClass:"absolute"});});(0,_vitest.it)("should parse modifiers with typography classes",function(){(0,_vitest.expect)((0,_modifiers.parseModifier)("hover:text-lg")).toEqual({modifier:"hover",baseClass:"text-lg"});(0,_vitest.expect)((0,_modifiers.parseModifier)("active:font-bold")).toEqual({modifier:"active",baseClass:"font-bold"});});(0,_vitest.it)("should parse modifiers with arbitrary values",function(){(0,_vitest.expect)((0,_modifiers.parseModifier)("active:bg-[#ff0000]")).toEqual({modifier:"active",baseClass:"bg-[#ff0000]"});(0,_vitest.expect)((0,_modifiers.parseModifier)("hover:w-[100px]")).toEqual({modifier:"hover",baseClass:"w-[100px]"});});(0,_vitest.it)("should parse modifiers with complex class names",function(){(0,_vitest.expect)((0,_modifiers.parseModifier)("active:inset-x-4")).toEqual({modifier:"active",baseClass:"inset-x-4"});(0,_vitest.expect)((0,_modifiers.parseModifier)("focus:border-blue-500")).toEqual({modifier:"focus",baseClass:"border-blue-500"});});});(0,_vitest.describe)("parseModifier - edge cases",function(){(0,_vitest.it)("should return null for unsupported modifiers",function(){(0,_vitest.expect)((0,_modifiers.parseModifier)("selected:bg-blue-500")).toBeNull();(0,_vitest.expect)((0,_modifiers.parseModifier)("pressed:bg-red-500")).toBeNull();(0,_vitest.expect)((0,_modifiers.parseModifier)("custom:bg-green-500")).toBeNull();(0,_vitest.expect)((0,_modifiers.parseModifier)("unknown:bg-gray-500")).toBeNull();});(0,_vitest.it)("should return null for nested modifiers",function(){(0,_vitest.expect)((0,_modifiers.parseModifier)("active:hover:bg-blue-500")).toBeNull();(0,_vitest.expect)((0,_modifiers.parseModifier)("hover:focus:text-red-500")).toBeNull();(0,_vitest.expect)((0,_modifiers.parseModifier)("focus:active:p-4")).toBeNull();});(0,_vitest.it)("should return null for empty base class",function(){(0,_vitest.expect)((0,_modifiers.parseModifier)("active:")).toBeNull();(0,_vitest.expect)((0,_modifiers.parseModifier)("hover:")).toBeNull();(0,_vitest.expect)((0,_modifiers.parseModifier)("focus:")).toBeNull();});(0,_vitest.it)("should return null for empty modifier",function(){(0,_vitest.expect)((0,_modifiers.parseModifier)(":bg-blue-500")).toBeNull();(0,_vitest.expect)((0,_modifiers.parseModifier)(":")).toBeNull();});(0,_vitest.it)("should return null for class with only colon",function(){(0,_vitest.expect)((0,_modifiers.parseModifier)(":")).toBeNull();});(0,_vitest.it)("should return null for class with multiple colons but no modifier",function(){(0,_vitest.expect)((0,_modifiers.parseModifier)("bg:blue:500")).toBeNull();});(0,_vitest.it)("should handle base classes that look like they have colons",function(){(0,_vitest.expect)((0,_modifiers.parseModifier)("active:some:thing")).toBeNull();});(0,_vitest.it)("should return null for empty string",function(){(0,_vitest.expect)((0,_modifiers.parseModifier)("")).toBeNull();});});(0,_vitest.describe)("parseModifier - case sensitivity",function(){(0,_vitest.it)("should be case-sensitive for modifiers",function(){(0,_vitest.expect)((0,_modifiers.parseModifier)("Active:bg-blue-500")).toBeNull();(0,_vitest.expect)((0,_modifiers.parseModifier)("ACTIVE:bg-blue-500")).toBeNull();(0,_vitest.expect)((0,_modifiers.parseModifier)("Hover:text-red-500")).toBeNull();(0,_vitest.expect)((0,_modifiers.parseModifier)("FOCUS:border-green-500")).toBeNull();});(0,_vitest.it)("should preserve case in base class",function(){var result=(0,_modifiers.parseModifier)("active:bg-Blue-500");(0,_vitest.expect)(result).toEqual({modifier:"active",baseClass:"bg-Blue-500"});});});(0,_vitest.describe)("hasModifier",function(){(0,_vitest.it)("should return true for classes with modifiers",function(){(0,_vitest.expect)((0,_modifiers.hasModifier)("active:bg-blue-500")).toBe(true);(0,_vitest.expect)((0,_modifiers.hasModifier)("hover:text-red-500")).toBe(true);(0,_vitest.expect)((0,_modifiers.hasModifier)("focus:border-green-500")).toBe(true);(0,_vitest.expect)((0,_modifiers.hasModifier)("disabled:bg-gray-400")).toBe(true);});(0,_vitest.it)("should return false for classes without modifiers",function(){(0,_vitest.expect)((0,_modifiers.hasModifier)("bg-blue-500")).toBe(false);(0,_vitest.expect)((0,_modifiers.hasModifier)("text-red-500")).toBe(false);(0,_vitest.expect)((0,_modifiers.hasModifier)("p-4")).toBe(false);});(0,_vitest.it)("should return false for unsupported modifiers",function(){(0,_vitest.expect)((0,_modifiers.hasModifier)("selected:bg-gray-500")).toBe(false);(0,_vitest.expect)((0,_modifiers.hasModifier)("pressed:bg-blue-500")).toBe(false);});(0,_vitest.it)("should return false for nested modifiers",function(){(0,_vitest.expect)((0,_modifiers.hasModifier)("active:hover:bg-blue-500")).toBe(false);});(0,_vitest.it)("should return false for empty base class",function(){(0,_vitest.expect)((0,_modifiers.hasModifier)("active:")).toBe(false);});(0,_vitest.it)("should return false for empty string",function(){(0,_vitest.expect)((0,_modifiers.hasModifier)("")).toBe(false);});});(0,_vitest.describe)("splitModifierClasses - basic functionality",function(){(0,_vitest.it)("should split classes with and without modifiers",function(){var result=(0,_modifiers.splitModifierClasses)("bg-blue-500 active:bg-blue-700");(0,_vitest.expect)(result).toEqual({baseClasses:["bg-blue-500"],modifierClasses:[{modifier:"active",baseClass:"bg-blue-700"}]});});(0,_vitest.it)("should handle multiple base classes",function(){var result=(0,_modifiers.splitModifierClasses)("bg-blue-500 p-4 m-2 text-white");(0,_vitest.expect)(result).toEqual({baseClasses:["bg-blue-500","p-4","m-2","text-white"],modifierClasses:[]});});(0,_vitest.it)("should handle multiple modifier classes",function(){var result=(0,_modifiers.splitModifierClasses)("active:bg-blue-700 hover:bg-blue-800 focus:bg-blue-900");(0,_vitest.expect)(result).toEqual({baseClasses:[],modifierClasses:[{modifier:"active",baseClass:"bg-blue-700"},{modifier:"hover",baseClass:"bg-blue-800"},{modifier:"focus",baseClass:"bg-blue-900"}]});});(0,_vitest.it)("should handle mixed base and modifier classes",function(){var result=(0,_modifiers.splitModifierClasses)("bg-blue-500 active:bg-blue-700 p-4 active:p-6");(0,_vitest.expect)(result).toEqual({baseClasses:["bg-blue-500","p-4"],modifierClasses:[{modifier:"active",baseClass:"bg-blue-700"},{modifier:"active",baseClass:"p-6"}]});});});(0,_vitest.describe)("splitModifierClasses - whitespace handling",function(){(0,_vitest.it)("should handle leading whitespace",function(){var result=(0,_modifiers.splitModifierClasses)(" bg-blue-500 active:bg-blue-700");(0,_vitest.expect)(result).toEqual({baseClasses:["bg-blue-500"],modifierClasses:[{modifier:"active",baseClass:"bg-blue-700"}]});});(0,_vitest.it)("should handle trailing whitespace",function(){var result=(0,_modifiers.splitModifierClasses)("bg-blue-500 active:bg-blue-700 ");(0,_vitest.expect)(result).toEqual({baseClasses:["bg-blue-500"],modifierClasses:[{modifier:"active",baseClass:"bg-blue-700"}]});});(0,_vitest.it)("should handle multiple spaces between classes",function(){var result=(0,_modifiers.splitModifierClasses)("bg-blue-500 active:bg-blue-700");(0,_vitest.expect)(result).toEqual({baseClasses:["bg-blue-500"],modifierClasses:[{modifier:"active",baseClass:"bg-blue-700"}]});});(0,_vitest.it)("should handle tabs and newlines",function(){var result=(0,_modifiers.splitModifierClasses)("bg-blue-500\tactive:bg-blue-700\np-4");(0,_vitest.expect)(result).toEqual({baseClasses:["bg-blue-500","p-4"],modifierClasses:[{modifier:"active",baseClass:"bg-blue-700"}]});});(0,_vitest.it)("should handle empty string",function(){var result=(0,_modifiers.splitModifierClasses)("");(0,_vitest.expect)(result).toEqual({baseClasses:[],modifierClasses:[]});});(0,_vitest.it)("should handle whitespace-only string",function(){var result=(0,_modifiers.splitModifierClasses)(" ");(0,_vitest.expect)(result).toEqual({baseClasses:[],modifierClasses:[]});});});(0,_vitest.describe)("splitModifierClasses - complex scenarios",function(){(0,_vitest.it)("should handle duplicate modifiers for same property",function(){var result=(0,_modifiers.splitModifierClasses)("active:bg-blue-700 active:bg-red-700");(0,_vitest.expect)(result).toEqual({baseClasses:[],modifierClasses:[{modifier:"active",baseClass:"bg-blue-700"},{modifier:"active",baseClass:"bg-red-700"}]});});(0,_vitest.it)("should handle all four modifier types",function(){var result=(0,_modifiers.splitModifierClasses)("bg-gray-500 active:bg-blue-700 hover:bg-green-700 focus:bg-red-700 disabled:bg-gray-400");(0,_vitest.expect)(result).toEqual({baseClasses:["bg-gray-500"],modifierClasses:[{modifier:"active",baseClass:"bg-blue-700"},{modifier:"hover",baseClass:"bg-green-700"},{modifier:"focus",baseClass:"bg-red-700"},{modifier:"disabled",baseClass:"bg-gray-400"}]});});(0,_vitest.it)("should ignore unsupported modifiers in the base classes",function(){var result=(0,_modifiers.splitModifierClasses)("bg-blue-500 pressed:bg-gray-500 active:bg-blue-700");(0,_vitest.expect)(result).toEqual({baseClasses:["bg-blue-500","pressed:bg-gray-500"],modifierClasses:[{modifier:"active",baseClass:"bg-blue-700"}]});});(0,_vitest.it)("should handle modifiers with arbitrary values",function(){var result=(0,_modifiers.splitModifierClasses)("bg-blue-500 active:bg-[#ff0000] hover:w-[200px]");(0,_vitest.expect)(result).toEqual({baseClasses:["bg-blue-500"],modifierClasses:[{modifier:"active",baseClass:"bg-[#ff0000]"},{modifier:"hover",baseClass:"w-[200px]"}]});});(0,_vitest.it)("should handle real-world className example",function(){var result=(0,_modifiers.splitModifierClasses)("flex items-center justify-center bg-blue-500 p-4 active:bg-blue-700 active:scale-95 hover:bg-blue-600");(0,_vitest.expect)(result).toEqual({baseClasses:["flex","items-center","justify-center","bg-blue-500","p-4"],modifierClasses:[{modifier:"active",baseClass:"bg-blue-700"},{modifier:"active",baseClass:"scale-95"},{modifier:"hover",baseClass:"bg-blue-600"}]});});});(0,_vitest.describe)("splitModifierClasses - nested modifiers",function(){(0,_vitest.it)("should ignore nested modifiers",function(){var result=(0,_modifiers.splitModifierClasses)("bg-blue-500 active:hover:bg-red-500");(0,_vitest.expect)(result).toEqual({baseClasses:["bg-blue-500","active:hover:bg-red-500"],modifierClasses:[]});});});(0,_vitest.describe)("type safety",function(){(0,_vitest.it)("should properly type modifier types",function(){var result=(0,_modifiers.parseModifier)("active:bg-blue-500");if(result){var modifier=result.modifier;(0,_vitest.expect)(["active","hover","focus","disabled"]).toContain(modifier);}});(0,_vitest.it)("should properly type ParsedModifier",function(){var result=(0,_modifiers.parseModifier)("hover:text-red-500");if(result){var parsed=result;(0,_vitest.expect)(parsed).toHaveProperty("modifier");(0,_vitest.expect)(parsed).toHaveProperty("baseClass");(0,_vitest.expect)(typeof parsed.modifier).toBe("string");(0,_vitest.expect)(typeof parsed.baseClass).toBe("string");}});});
|
|
1
|
+
var _vitest=require("vitest");var _modifiers=require("./modifiers");(0,_vitest.describe)("parseModifier - basic functionality",function(){(0,_vitest.it)("should parse active modifier",function(){var result=(0,_modifiers.parseModifier)("active:bg-blue-500");(0,_vitest.expect)(result).toEqual({modifier:"active",baseClass:"bg-blue-500"});});(0,_vitest.it)("should parse hover modifier",function(){var result=(0,_modifiers.parseModifier)("hover:text-red-500");(0,_vitest.expect)(result).toEqual({modifier:"hover",baseClass:"text-red-500"});});(0,_vitest.it)("should parse focus modifier",function(){var result=(0,_modifiers.parseModifier)("focus:border-green-500");(0,_vitest.expect)(result).toEqual({modifier:"focus",baseClass:"border-green-500"});});(0,_vitest.it)("should parse disabled modifier",function(){var result=(0,_modifiers.parseModifier)("disabled:bg-gray-400");(0,_vitest.expect)(result).toEqual({modifier:"disabled",baseClass:"bg-gray-400"});});(0,_vitest.it)("should return null for class without modifier",function(){(0,_vitest.expect)((0,_modifiers.parseModifier)("bg-blue-500")).toBeNull();(0,_vitest.expect)((0,_modifiers.parseModifier)("text-red-500")).toBeNull();(0,_vitest.expect)((0,_modifiers.parseModifier)("p-4")).toBeNull();});});(0,_vitest.describe)("parseModifier - various base classes",function(){(0,_vitest.it)("should parse modifiers with spacing classes",function(){(0,_vitest.expect)((0,_modifiers.parseModifier)("active:m-4")).toEqual({modifier:"active",baseClass:"m-4"});(0,_vitest.expect)((0,_modifiers.parseModifier)("hover:p-8")).toEqual({modifier:"hover",baseClass:"p-8"});});(0,_vitest.it)("should parse modifiers with layout classes",function(){(0,_vitest.expect)((0,_modifiers.parseModifier)("active:flex")).toEqual({modifier:"active",baseClass:"flex"});(0,_vitest.expect)((0,_modifiers.parseModifier)("focus:absolute")).toEqual({modifier:"focus",baseClass:"absolute"});});(0,_vitest.it)("should parse modifiers with typography classes",function(){(0,_vitest.expect)((0,_modifiers.parseModifier)("hover:text-lg")).toEqual({modifier:"hover",baseClass:"text-lg"});(0,_vitest.expect)((0,_modifiers.parseModifier)("active:font-bold")).toEqual({modifier:"active",baseClass:"font-bold"});});(0,_vitest.it)("should parse modifiers with arbitrary values",function(){(0,_vitest.expect)((0,_modifiers.parseModifier)("active:bg-[#ff0000]")).toEqual({modifier:"active",baseClass:"bg-[#ff0000]"});(0,_vitest.expect)((0,_modifiers.parseModifier)("hover:w-[100px]")).toEqual({modifier:"hover",baseClass:"w-[100px]"});});(0,_vitest.it)("should parse modifiers with complex class names",function(){(0,_vitest.expect)((0,_modifiers.parseModifier)("active:inset-x-4")).toEqual({modifier:"active",baseClass:"inset-x-4"});(0,_vitest.expect)((0,_modifiers.parseModifier)("focus:border-blue-500")).toEqual({modifier:"focus",baseClass:"border-blue-500"});});});(0,_vitest.describe)("parseModifier - edge cases",function(){(0,_vitest.it)("should return null for unsupported modifiers",function(){(0,_vitest.expect)((0,_modifiers.parseModifier)("selected:bg-blue-500")).toBeNull();(0,_vitest.expect)((0,_modifiers.parseModifier)("pressed:bg-red-500")).toBeNull();(0,_vitest.expect)((0,_modifiers.parseModifier)("custom:bg-green-500")).toBeNull();(0,_vitest.expect)((0,_modifiers.parseModifier)("unknown:bg-gray-500")).toBeNull();});(0,_vitest.it)("should return null for nested modifiers",function(){(0,_vitest.expect)((0,_modifiers.parseModifier)("active:hover:bg-blue-500")).toBeNull();(0,_vitest.expect)((0,_modifiers.parseModifier)("hover:focus:text-red-500")).toBeNull();(0,_vitest.expect)((0,_modifiers.parseModifier)("focus:active:p-4")).toBeNull();});(0,_vitest.it)("should return null for empty base class",function(){(0,_vitest.expect)((0,_modifiers.parseModifier)("active:")).toBeNull();(0,_vitest.expect)((0,_modifiers.parseModifier)("hover:")).toBeNull();(0,_vitest.expect)((0,_modifiers.parseModifier)("focus:")).toBeNull();});(0,_vitest.it)("should return null for empty modifier",function(){(0,_vitest.expect)((0,_modifiers.parseModifier)(":bg-blue-500")).toBeNull();(0,_vitest.expect)((0,_modifiers.parseModifier)(":")).toBeNull();});(0,_vitest.it)("should return null for class with only colon",function(){(0,_vitest.expect)((0,_modifiers.parseModifier)(":")).toBeNull();});(0,_vitest.it)("should return null for class with multiple colons but no modifier",function(){(0,_vitest.expect)((0,_modifiers.parseModifier)("bg:blue:500")).toBeNull();});(0,_vitest.it)("should handle base classes that look like they have colons",function(){(0,_vitest.expect)((0,_modifiers.parseModifier)("active:some:thing")).toBeNull();});(0,_vitest.it)("should return null for empty string",function(){(0,_vitest.expect)((0,_modifiers.parseModifier)("")).toBeNull();});});(0,_vitest.describe)("parseModifier - case sensitivity",function(){(0,_vitest.it)("should be case-sensitive for modifiers",function(){(0,_vitest.expect)((0,_modifiers.parseModifier)("Active:bg-blue-500")).toBeNull();(0,_vitest.expect)((0,_modifiers.parseModifier)("ACTIVE:bg-blue-500")).toBeNull();(0,_vitest.expect)((0,_modifiers.parseModifier)("Hover:text-red-500")).toBeNull();(0,_vitest.expect)((0,_modifiers.parseModifier)("FOCUS:border-green-500")).toBeNull();});(0,_vitest.it)("should preserve case in base class",function(){var result=(0,_modifiers.parseModifier)("active:bg-Blue-500");(0,_vitest.expect)(result).toEqual({modifier:"active",baseClass:"bg-Blue-500"});});});(0,_vitest.describe)("hasModifier",function(){(0,_vitest.it)("should return true for classes with modifiers",function(){(0,_vitest.expect)((0,_modifiers.hasModifier)("active:bg-blue-500")).toBe(true);(0,_vitest.expect)((0,_modifiers.hasModifier)("hover:text-red-500")).toBe(true);(0,_vitest.expect)((0,_modifiers.hasModifier)("focus:border-green-500")).toBe(true);(0,_vitest.expect)((0,_modifiers.hasModifier)("disabled:bg-gray-400")).toBe(true);});(0,_vitest.it)("should return false for classes without modifiers",function(){(0,_vitest.expect)((0,_modifiers.hasModifier)("bg-blue-500")).toBe(false);(0,_vitest.expect)((0,_modifiers.hasModifier)("text-red-500")).toBe(false);(0,_vitest.expect)((0,_modifiers.hasModifier)("p-4")).toBe(false);});(0,_vitest.it)("should return false for unsupported modifiers",function(){(0,_vitest.expect)((0,_modifiers.hasModifier)("selected:bg-gray-500")).toBe(false);(0,_vitest.expect)((0,_modifiers.hasModifier)("pressed:bg-blue-500")).toBe(false);});(0,_vitest.it)("should return false for nested modifiers",function(){(0,_vitest.expect)((0,_modifiers.hasModifier)("active:hover:bg-blue-500")).toBe(false);});(0,_vitest.it)("should return false for empty base class",function(){(0,_vitest.expect)((0,_modifiers.hasModifier)("active:")).toBe(false);});(0,_vitest.it)("should return false for empty string",function(){(0,_vitest.expect)((0,_modifiers.hasModifier)("")).toBe(false);});});(0,_vitest.describe)("splitModifierClasses - basic functionality",function(){(0,_vitest.it)("should split classes with and without modifiers",function(){var result=(0,_modifiers.splitModifierClasses)("bg-blue-500 active:bg-blue-700");(0,_vitest.expect)(result).toEqual({baseClasses:["bg-blue-500"],modifierClasses:[{modifier:"active",baseClass:"bg-blue-700"}]});});(0,_vitest.it)("should handle multiple base classes",function(){var result=(0,_modifiers.splitModifierClasses)("bg-blue-500 p-4 m-2 text-white");(0,_vitest.expect)(result).toEqual({baseClasses:["bg-blue-500","p-4","m-2","text-white"],modifierClasses:[]});});(0,_vitest.it)("should handle multiple modifier classes",function(){var result=(0,_modifiers.splitModifierClasses)("active:bg-blue-700 hover:bg-blue-800 focus:bg-blue-900");(0,_vitest.expect)(result).toEqual({baseClasses:[],modifierClasses:[{modifier:"active",baseClass:"bg-blue-700"},{modifier:"hover",baseClass:"bg-blue-800"},{modifier:"focus",baseClass:"bg-blue-900"}]});});(0,_vitest.it)("should handle mixed base and modifier classes",function(){var result=(0,_modifiers.splitModifierClasses)("bg-blue-500 active:bg-blue-700 p-4 active:p-6");(0,_vitest.expect)(result).toEqual({baseClasses:["bg-blue-500","p-4"],modifierClasses:[{modifier:"active",baseClass:"bg-blue-700"},{modifier:"active",baseClass:"p-6"}]});});});(0,_vitest.describe)("splitModifierClasses - whitespace handling",function(){(0,_vitest.it)("should handle leading whitespace",function(){var result=(0,_modifiers.splitModifierClasses)(" bg-blue-500 active:bg-blue-700");(0,_vitest.expect)(result).toEqual({baseClasses:["bg-blue-500"],modifierClasses:[{modifier:"active",baseClass:"bg-blue-700"}]});});(0,_vitest.it)("should handle trailing whitespace",function(){var result=(0,_modifiers.splitModifierClasses)("bg-blue-500 active:bg-blue-700 ");(0,_vitest.expect)(result).toEqual({baseClasses:["bg-blue-500"],modifierClasses:[{modifier:"active",baseClass:"bg-blue-700"}]});});(0,_vitest.it)("should handle multiple spaces between classes",function(){var result=(0,_modifiers.splitModifierClasses)("bg-blue-500 active:bg-blue-700");(0,_vitest.expect)(result).toEqual({baseClasses:["bg-blue-500"],modifierClasses:[{modifier:"active",baseClass:"bg-blue-700"}]});});(0,_vitest.it)("should handle tabs and newlines",function(){var result=(0,_modifiers.splitModifierClasses)("bg-blue-500\tactive:bg-blue-700\np-4");(0,_vitest.expect)(result).toEqual({baseClasses:["bg-blue-500","p-4"],modifierClasses:[{modifier:"active",baseClass:"bg-blue-700"}]});});(0,_vitest.it)("should handle empty string",function(){var result=(0,_modifiers.splitModifierClasses)("");(0,_vitest.expect)(result).toEqual({baseClasses:[],modifierClasses:[]});});(0,_vitest.it)("should handle whitespace-only string",function(){var result=(0,_modifiers.splitModifierClasses)(" ");(0,_vitest.expect)(result).toEqual({baseClasses:[],modifierClasses:[]});});});(0,_vitest.describe)("splitModifierClasses - complex scenarios",function(){(0,_vitest.it)("should handle duplicate modifiers for same property",function(){var result=(0,_modifiers.splitModifierClasses)("active:bg-blue-700 active:bg-red-700");(0,_vitest.expect)(result).toEqual({baseClasses:[],modifierClasses:[{modifier:"active",baseClass:"bg-blue-700"},{modifier:"active",baseClass:"bg-red-700"}]});});(0,_vitest.it)("should handle all four modifier types",function(){var result=(0,_modifiers.splitModifierClasses)("bg-gray-500 active:bg-blue-700 hover:bg-green-700 focus:bg-red-700 disabled:bg-gray-400");(0,_vitest.expect)(result).toEqual({baseClasses:["bg-gray-500"],modifierClasses:[{modifier:"active",baseClass:"bg-blue-700"},{modifier:"hover",baseClass:"bg-green-700"},{modifier:"focus",baseClass:"bg-red-700"},{modifier:"disabled",baseClass:"bg-gray-400"}]});});(0,_vitest.it)("should ignore unsupported modifiers in the base classes",function(){var result=(0,_modifiers.splitModifierClasses)("bg-blue-500 pressed:bg-gray-500 active:bg-blue-700");(0,_vitest.expect)(result).toEqual({baseClasses:["bg-blue-500","pressed:bg-gray-500"],modifierClasses:[{modifier:"active",baseClass:"bg-blue-700"}]});});(0,_vitest.it)("should handle modifiers with arbitrary values",function(){var result=(0,_modifiers.splitModifierClasses)("bg-blue-500 active:bg-[#ff0000] hover:w-[200px]");(0,_vitest.expect)(result).toEqual({baseClasses:["bg-blue-500"],modifierClasses:[{modifier:"active",baseClass:"bg-[#ff0000]"},{modifier:"hover",baseClass:"w-[200px]"}]});});(0,_vitest.it)("should handle real-world className example",function(){var result=(0,_modifiers.splitModifierClasses)("flex items-center justify-center bg-blue-500 p-4 active:bg-blue-700 active:scale-95 hover:bg-blue-600");(0,_vitest.expect)(result).toEqual({baseClasses:["flex","items-center","justify-center","bg-blue-500","p-4"],modifierClasses:[{modifier:"active",baseClass:"bg-blue-700"},{modifier:"active",baseClass:"scale-95"},{modifier:"hover",baseClass:"bg-blue-600"}]});});});(0,_vitest.describe)("splitModifierClasses - nested modifiers",function(){(0,_vitest.it)("should ignore nested modifiers",function(){var result=(0,_modifiers.splitModifierClasses)("bg-blue-500 active:hover:bg-red-500");(0,_vitest.expect)(result).toEqual({baseClasses:["bg-blue-500","active:hover:bg-red-500"],modifierClasses:[]});});});(0,_vitest.describe)("type safety",function(){(0,_vitest.it)("should properly type modifier types",function(){var result=(0,_modifiers.parseModifier)("active:bg-blue-500");if(result){var modifier=result.modifier;(0,_vitest.expect)(["active","hover","focus","disabled"]).toContain(modifier);}});(0,_vitest.it)("should properly type ParsedModifier",function(){var result=(0,_modifiers.parseModifier)("hover:text-red-500");if(result){var parsed=result;(0,_vitest.expect)(parsed).toHaveProperty("modifier");(0,_vitest.expect)(parsed).toHaveProperty("baseClass");(0,_vitest.expect)(typeof parsed.modifier).toBe("string");(0,_vitest.expect)(typeof parsed.baseClass).toBe("string");}});});(0,_vitest.describe)("isSchemeModifier",function(){(0,_vitest.it)("should return true for scheme modifier",function(){(0,_vitest.expect)((0,_modifiers.isSchemeModifier)("scheme")).toBe(true);});(0,_vitest.it)("should return false for non-scheme modifiers",function(){(0,_vitest.expect)((0,_modifiers.isSchemeModifier)("dark")).toBe(false);(0,_vitest.expect)((0,_modifiers.isSchemeModifier)("light")).toBe(false);(0,_vitest.expect)((0,_modifiers.isSchemeModifier)("active")).toBe(false);(0,_vitest.expect)((0,_modifiers.isSchemeModifier)("ios")).toBe(false);});});(0,_vitest.describe)("isColorClass",function(){(0,_vitest.it)("should return true for text color classes",function(){(0,_vitest.expect)((0,_modifiers.isColorClass)("text-red-500")).toBe(true);(0,_vitest.expect)((0,_modifiers.isColorClass)("text-systemGray")).toBe(true);(0,_vitest.expect)((0,_modifiers.isColorClass)("text-blue-50")).toBe(true);});(0,_vitest.it)("should return true for background color classes",function(){(0,_vitest.expect)((0,_modifiers.isColorClass)("bg-red-500")).toBe(true);(0,_vitest.expect)((0,_modifiers.isColorClass)("bg-systemGray")).toBe(true);(0,_vitest.expect)((0,_modifiers.isColorClass)("bg-transparent")).toBe(true);});(0,_vitest.it)("should return true for border color classes",function(){(0,_vitest.expect)((0,_modifiers.isColorClass)("border-red-500")).toBe(true);(0,_vitest.expect)((0,_modifiers.isColorClass)("border-systemGray")).toBe(true);(0,_vitest.expect)((0,_modifiers.isColorClass)("border-black")).toBe(true);});(0,_vitest.it)("should return false for non-color classes",function(){(0,_vitest.expect)((0,_modifiers.isColorClass)("m-4")).toBe(false);(0,_vitest.expect)((0,_modifiers.isColorClass)("p-2")).toBe(false);(0,_vitest.expect)((0,_modifiers.isColorClass)("flex")).toBe(false);(0,_vitest.expect)((0,_modifiers.isColorClass)("rounded-lg")).toBe(false);(0,_vitest.expect)((0,_modifiers.isColorClass)("font-bold")).toBe(false);});});(0,_vitest.describe)("expandSchemeModifier",function(){var customColors={"systemGray-dark":"#333333","systemGray-light":"#CCCCCC","primary-dark":"#1E40AF","primary-light":"#BFDBFE","accent-dark":"#DC2626","accent-light":"#FECACA"};(0,_vitest.it)("should expand text color scheme modifier with default suffixes",function(){var modifier={modifier:"scheme",baseClass:"text-systemGray"};var result=(0,_modifiers.expandSchemeModifier)(modifier,customColors);(0,_vitest.expect)(result).toHaveLength(2);(0,_vitest.expect)(result[0]).toEqual({modifier:"dark",baseClass:"text-systemGray-dark"});(0,_vitest.expect)(result[1]).toEqual({modifier:"light",baseClass:"text-systemGray-light"});});(0,_vitest.it)("should expand background color scheme modifier",function(){var modifier={modifier:"scheme",baseClass:"bg-primary"};var result=(0,_modifiers.expandSchemeModifier)(modifier,customColors);(0,_vitest.expect)(result).toHaveLength(2);(0,_vitest.expect)(result[0]).toEqual({modifier:"dark",baseClass:"bg-primary-dark"});(0,_vitest.expect)(result[1]).toEqual({modifier:"light",baseClass:"bg-primary-light"});});(0,_vitest.it)("should expand border color scheme modifier",function(){var modifier={modifier:"scheme",baseClass:"border-accent"};var result=(0,_modifiers.expandSchemeModifier)(modifier,customColors);(0,_vitest.expect)(result).toHaveLength(2);(0,_vitest.expect)(result[0]).toEqual({modifier:"dark",baseClass:"border-accent-dark"});(0,_vitest.expect)(result[1]).toEqual({modifier:"light",baseClass:"border-accent-light"});});(0,_vitest.it)("should use custom suffixes when provided",function(){var modifier={modifier:"scheme",baseClass:"text-systemGray"};var _result=(0,_modifiers.expandSchemeModifier)(modifier,customColors,"-darkMode","-lightMode");var expectedColors={"systemGray-darkMode":"#333333","systemGray-lightMode":"#CCCCCC"};(0,_vitest.expect)((0,_modifiers.expandSchemeModifier)(modifier,expectedColors,"-darkMode","-lightMode")).toHaveLength(2);});(0,_vitest.it)("should return empty array for non-color classes",function(){var modifier={modifier:"scheme",baseClass:"m-4"};var result=(0,_modifiers.expandSchemeModifier)(modifier,customColors);(0,_vitest.expect)(result).toEqual([]);});(0,_vitest.it)("should return empty array when dark color variant is missing",function(){var modifier={modifier:"scheme",baseClass:"text-missing"};var incompleteColors={"missing-light":"#FFFFFF"};var result=(0,_modifiers.expandSchemeModifier)(modifier,incompleteColors);(0,_vitest.expect)(result).toEqual([]);});(0,_vitest.it)("should return empty array when light color variant is missing",function(){var modifier={modifier:"scheme",baseClass:"text-missing"};var incompleteColors={"missing-dark":"#000000"};var result=(0,_modifiers.expandSchemeModifier)(modifier,incompleteColors);(0,_vitest.expect)(result).toEqual([]);});(0,_vitest.it)("should return empty array when both color variants are missing",function(){var modifier={modifier:"scheme",baseClass:"text-missing"};var result=(0,_modifiers.expandSchemeModifier)(modifier,customColors);(0,_vitest.expect)(result).toEqual([]);});});
|
package/dist/parser/spacing.d.ts
CHANGED
|
@@ -5,6 +5,6 @@ import type { StyleObject } from "../types";
|
|
|
5
5
|
export declare const SPACING_SCALE: Record<string, number>;
|
|
6
6
|
/**
|
|
7
7
|
* Parse spacing classes (margin, padding, gap)
|
|
8
|
-
* Examples: m-4, mx-2, mt-8, p-4, px-2, pt-8, gap-4, m-[16px]
|
|
8
|
+
* Examples: m-4, mx-2, mt-8, p-4, px-2, pt-8, gap-4, m-[16px], -m-4, -mt-[10px]
|
|
9
9
|
*/
|
|
10
10
|
export declare function parseSpacing(cls: string): StyleObject | null;
|
package/dist/parser/spacing.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.SPACING_SCALE=void 0;exports.parseSpacing=parseSpacing;var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var SPACING_SCALE=exports.SPACING_SCALE={0:0,0.5:2,1:4,1.5:6,2:8,2.5:10,3:12,3.5:14,4:16,5:20,6:24,7:28,8:32,9:36,10:40,11:44,12:48,14:56,16:64,20:80,24:96,28:112,32:128,36:144,40:160,44:176,48:192,52:208,56:224,60:240,64:256,72:288,80:320,96:384};function parseArbitrarySpacing(value){var pxMatch=value.match(/^\[(\d+)(?:px)?\]$/);if(pxMatch){return parseInt(pxMatch[1],10);}if(value.startsWith("[")&&value.endsWith("]")){if(process.env.NODE_ENV!=="production"){console.warn(`[react-native-tailwind] Unsupported arbitrary spacing value: ${value}. Only px values are supported (e.g., [16px] or [16]).`);}return null;}return null;}function parseSpacing(cls){var marginMatch=cls.match(/^m([xytrbls]?)-(.+)$/);if(marginMatch){var _marginMatch=(0,_slicedToArray2.default)(marginMatch,
|
|
1
|
+
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.SPACING_SCALE=void 0;exports.parseSpacing=parseSpacing;var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var SPACING_SCALE=exports.SPACING_SCALE={0:0,0.5:2,1:4,1.5:6,2:8,2.5:10,3:12,3.5:14,4:16,5:20,6:24,7:28,8:32,9:36,10:40,11:44,12:48,14:56,16:64,20:80,24:96,28:112,32:128,36:144,40:160,44:176,48:192,52:208,56:224,60:240,64:256,72:288,80:320,96:384};function parseArbitrarySpacing(value){var pxMatch=value.match(/^\[(\d+)(?:px)?\]$/);if(pxMatch){return parseInt(pxMatch[1],10);}if(value.startsWith("[")&&value.endsWith("]")){if(process.env.NODE_ENV!=="production"){console.warn(`[react-native-tailwind] Unsupported arbitrary spacing value: ${value}. Only px values are supported (e.g., [16px] or [16]).`);}return null;}return null;}function parseSpacing(cls){var marginMatch=cls.match(/^(-?)m([xytrbls]?)-(.+)$/);if(marginMatch){var _marginMatch=(0,_slicedToArray2.default)(marginMatch,4),negativePrefix=_marginMatch[1],dir=_marginMatch[2],valueStr=_marginMatch[3];var isNegative=negativePrefix==="-";var arbitraryValue=parseArbitrarySpacing(valueStr);if(arbitraryValue!==null){var finalValue=isNegative?-arbitraryValue:arbitraryValue;return getMarginStyle(dir,finalValue);}var scaleValue=SPACING_SCALE[valueStr];if(scaleValue!==undefined){var _finalValue=isNegative?-scaleValue:scaleValue;return getMarginStyle(dir,_finalValue);}}var paddingMatch=cls.match(/^p([xytrbls]?)-(.+)$/);if(paddingMatch){var _paddingMatch=(0,_slicedToArray2.default)(paddingMatch,3),_dir=_paddingMatch[1],_valueStr=_paddingMatch[2];var _arbitraryValue=parseArbitrarySpacing(_valueStr);if(_arbitraryValue!==null){return getPaddingStyle(_dir,_arbitraryValue);}var _scaleValue=SPACING_SCALE[_valueStr];if(_scaleValue!==undefined){return getPaddingStyle(_dir,_scaleValue);}}var gapMatch=cls.match(/^gap-(.+)$/);if(gapMatch){var _valueStr2=gapMatch[1];var _arbitraryValue2=parseArbitrarySpacing(_valueStr2);if(_arbitraryValue2!==null){return{gap:_arbitraryValue2};}var _scaleValue2=SPACING_SCALE[_valueStr2];if(_scaleValue2!==undefined){return{gap:_scaleValue2};}}return null;}function getMarginStyle(dir,value){switch(dir){case"":return{margin:value};case"x":return{marginHorizontal:value};case"y":return{marginVertical:value};case"t":return{marginTop:value};case"r":return{marginRight:value};case"b":return{marginBottom:value};case"l":return{marginLeft:value};default:return{};}}function getPaddingStyle(dir,value){switch(dir){case"":return{padding:value};case"x":return{paddingHorizontal:value};case"y":return{paddingVertical:value};case"t":return{paddingTop:value};case"r":return{paddingRight:value};case"b":return{paddingBottom:value};case"l":return{paddingLeft:value};default:return{};}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var _vitest=require("vitest");var _spacing=require("./spacing");(0,_vitest.describe)("SPACING_SCALE",function(){(0,_vitest.it)("should export complete spacing scale",function(){(0,_vitest.expect)(_spacing.SPACING_SCALE).toMatchSnapshot();});});(0,_vitest.describe)("parseSpacing - margin",function(){(0,_vitest.it)("should parse margin all sides",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("m-0")).toEqual({margin:0});(0,_vitest.expect)((0,_spacing.parseSpacing)("m-4")).toEqual({margin:16});(0,_vitest.expect)((0,_spacing.parseSpacing)("m-8")).toEqual({margin:32});(0,_vitest.expect)((0,_spacing.parseSpacing)("m-96")).toEqual({margin:384});});(0,_vitest.it)("should parse margin with fractional values",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("m-0.5")).toEqual({margin:2});(0,_vitest.expect)((0,_spacing.parseSpacing)("m-1.5")).toEqual({margin:6});(0,_vitest.expect)((0,_spacing.parseSpacing)("m-2.5")).toEqual({margin:10});});(0,_vitest.it)("should parse margin horizontal",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("mx-0")).toEqual({marginHorizontal:0});(0,_vitest.expect)((0,_spacing.parseSpacing)("mx-4")).toEqual({marginHorizontal:16});(0,_vitest.expect)((0,_spacing.parseSpacing)("mx-8")).toEqual({marginHorizontal:32});});(0,_vitest.it)("should parse margin vertical",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("my-0")).toEqual({marginVertical:0});(0,_vitest.expect)((0,_spacing.parseSpacing)("my-4")).toEqual({marginVertical:16});(0,_vitest.expect)((0,_spacing.parseSpacing)("my-8")).toEqual({marginVertical:32});});(0,_vitest.it)("should parse margin directional",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("mt-4")).toEqual({marginTop:16});(0,_vitest.expect)((0,_spacing.parseSpacing)("mr-4")).toEqual({marginRight:16});(0,_vitest.expect)((0,_spacing.parseSpacing)("mb-4")).toEqual({marginBottom:16});(0,_vitest.expect)((0,_spacing.parseSpacing)("ml-4")).toEqual({marginLeft:16});});(0,_vitest.it)("should parse margin with arbitrary values",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("m-[16px]")).toEqual({margin:16});(0,_vitest.expect)((0,_spacing.parseSpacing)("m-[16]")).toEqual({margin:16});(0,_vitest.expect)((0,_spacing.parseSpacing)("m-[100px]")).toEqual({margin:100});(0,_vitest.expect)((0,_spacing.parseSpacing)("m-[100]")).toEqual({margin:100});});(0,_vitest.it)("should parse margin directional with arbitrary values",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("mt-[24px]")).toEqual({marginTop:24});(0,_vitest.expect)((0,_spacing.parseSpacing)("mr-[32]")).toEqual({marginRight:32});(0,_vitest.expect)((0,_spacing.parseSpacing)("mb-[16px]")).toEqual({marginBottom:16});(0,_vitest.expect)((0,_spacing.parseSpacing)("ml-[48]")).toEqual({marginLeft:48});});(0,_vitest.it)("should parse margin horizontal/vertical with arbitrary values",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("mx-[20px]")).toEqual({marginHorizontal:20});(0,_vitest.expect)((0,_spacing.parseSpacing)("my-[30]")).toEqual({marginVertical:30});});});(0,_vitest.describe)("parseSpacing - padding",function(){(0,_vitest.it)("should parse padding all sides",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("p-0")).toEqual({padding:0});(0,_vitest.expect)((0,_spacing.parseSpacing)("p-4")).toEqual({padding:16});(0,_vitest.expect)((0,_spacing.parseSpacing)("p-8")).toEqual({padding:32});(0,_vitest.expect)((0,_spacing.parseSpacing)("p-96")).toEqual({padding:384});});(0,_vitest.it)("should parse padding with fractional values",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("p-0.5")).toEqual({padding:2});(0,_vitest.expect)((0,_spacing.parseSpacing)("p-1.5")).toEqual({padding:6});(0,_vitest.expect)((0,_spacing.parseSpacing)("p-2.5")).toEqual({padding:10});});(0,_vitest.it)("should parse padding horizontal",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("px-0")).toEqual({paddingHorizontal:0});(0,_vitest.expect)((0,_spacing.parseSpacing)("px-4")).toEqual({paddingHorizontal:16});(0,_vitest.expect)((0,_spacing.parseSpacing)("px-8")).toEqual({paddingHorizontal:32});});(0,_vitest.it)("should parse padding vertical",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("py-0")).toEqual({paddingVertical:0});(0,_vitest.expect)((0,_spacing.parseSpacing)("py-4")).toEqual({paddingVertical:16});(0,_vitest.expect)((0,_spacing.parseSpacing)("py-8")).toEqual({paddingVertical:32});});(0,_vitest.it)("should parse padding directional",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("pt-4")).toEqual({paddingTop:16});(0,_vitest.expect)((0,_spacing.parseSpacing)("pr-4")).toEqual({paddingRight:16});(0,_vitest.expect)((0,_spacing.parseSpacing)("pb-4")).toEqual({paddingBottom:16});(0,_vitest.expect)((0,_spacing.parseSpacing)("pl-4")).toEqual({paddingLeft:16});});(0,_vitest.it)("should parse padding with arbitrary values",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("p-[16px]")).toEqual({padding:16});(0,_vitest.expect)((0,_spacing.parseSpacing)("p-[16]")).toEqual({padding:16});(0,_vitest.expect)((0,_spacing.parseSpacing)("p-[100px]")).toEqual({padding:100});(0,_vitest.expect)((0,_spacing.parseSpacing)("p-[100]")).toEqual({padding:100});});(0,_vitest.it)("should parse padding directional with arbitrary values",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("pt-[24px]")).toEqual({paddingTop:24});(0,_vitest.expect)((0,_spacing.parseSpacing)("pr-[32]")).toEqual({paddingRight:32});(0,_vitest.expect)((0,_spacing.parseSpacing)("pb-[16px]")).toEqual({paddingBottom:16});(0,_vitest.expect)((0,_spacing.parseSpacing)("pl-[48]")).toEqual({paddingLeft:48});});(0,_vitest.it)("should parse padding horizontal/vertical with arbitrary values",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("px-[20px]")).toEqual({paddingHorizontal:20});(0,_vitest.expect)((0,_spacing.parseSpacing)("py-[30]")).toEqual({paddingVertical:30});});});(0,_vitest.describe)("parseSpacing - gap",function(){(0,_vitest.it)("should parse gap",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("gap-0")).toEqual({gap:0});(0,_vitest.expect)((0,_spacing.parseSpacing)("gap-4")).toEqual({gap:16});(0,_vitest.expect)((0,_spacing.parseSpacing)("gap-8")).toEqual({gap:32});(0,_vitest.expect)((0,_spacing.parseSpacing)("gap-96")).toEqual({gap:384});});(0,_vitest.it)("should parse gap with fractional values",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("gap-0.5")).toEqual({gap:2});(0,_vitest.expect)((0,_spacing.parseSpacing)("gap-1.5")).toEqual({gap:6});(0,_vitest.expect)((0,_spacing.parseSpacing)("gap-2.5")).toEqual({gap:10});});(0,_vitest.it)("should parse gap with arbitrary values",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("gap-[16px]")).toEqual({gap:16});(0,_vitest.expect)((0,_spacing.parseSpacing)("gap-[16]")).toEqual({gap:16});(0,_vitest.expect)((0,_spacing.parseSpacing)("gap-[100px]")).toEqual({gap:100});(0,_vitest.expect)((0,_spacing.parseSpacing)("gap-[100]")).toEqual({gap:100});});});(0,_vitest.describe)("parseSpacing - edge cases",function(){(0,_vitest.it)("should return null for invalid classes",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("invalid")).toBeNull();(0,_vitest.expect)((0,_spacing.parseSpacing)("m")).toBeNull();(0,_vitest.expect)((0,_spacing.parseSpacing)("p")).toBeNull();(0,_vitest.expect)((0,_spacing.parseSpacing)("margin-4")).toBeNull();(0,_vitest.expect)((0,_spacing.parseSpacing)("padding-4")).toBeNull();});(0,_vitest.it)("should return null for invalid spacing values",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("m-invalid")).toBeNull();(0,_vitest.expect)((0,_spacing.parseSpacing)("p-999")).toBeNull();(0,_vitest.expect)((0,_spacing.parseSpacing)("gap-abc")).toBeNull();});(0,_vitest.it)("should return null for arbitrary values with unsupported units",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("m-[16rem]")).toBeNull();(0,_vitest.expect)((0,_spacing.parseSpacing)("p-[2em]")).toBeNull();(0,_vitest.expect)((0,_spacing.parseSpacing)("gap-[50%]")).toBeNull();});(0,_vitest.it)("should return null for malformed arbitrary values",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("m-[16")).toBeNull();(0,_vitest.expect)((0,_spacing.parseSpacing)("p-16]")).toBeNull();(0,_vitest.expect)((0,_spacing.parseSpacing)("gap-[]")).toBeNull();});(0,_vitest.it)("should handle edge case spacing values",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("m-0")).toEqual({margin:0});(0,_vitest.expect)((0,_spacing.parseSpacing)("p-0")).toEqual({padding:0});(0,_vitest.expect)((0,_spacing.parseSpacing)("gap-0")).toEqual({gap:0});});(0,_vitest.it)("should not match partial class names",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("sm-4")).toBeNull();(0,_vitest.expect)((0,_spacing.parseSpacing)("margin-4")).toBeNull();(0,_vitest.expect)((0,_spacing.parseSpacing)("padding-4")).toBeNull();});});(0,_vitest.describe)("parseSpacing - comprehensive coverage",function(){(0,_vitest.it)("should parse all margin directions with same value",function(){var value=16;(0,_vitest.expect)((0,_spacing.parseSpacing)("m-4")).toEqual({margin:value});(0,_vitest.expect)((0,_spacing.parseSpacing)("mx-4")).toEqual({marginHorizontal:value});(0,_vitest.expect)((0,_spacing.parseSpacing)("my-4")).toEqual({marginVertical:value});(0,_vitest.expect)((0,_spacing.parseSpacing)("mt-4")).toEqual({marginTop:value});(0,_vitest.expect)((0,_spacing.parseSpacing)("mr-4")).toEqual({marginRight:value});(0,_vitest.expect)((0,_spacing.parseSpacing)("mb-4")).toEqual({marginBottom:value});(0,_vitest.expect)((0,_spacing.parseSpacing)("ml-4")).toEqual({marginLeft:value});});(0,_vitest.it)("should parse all padding directions with same value",function(){var value=16;(0,_vitest.expect)((0,_spacing.parseSpacing)("p-4")).toEqual({padding:value});(0,_vitest.expect)((0,_spacing.parseSpacing)("px-4")).toEqual({paddingHorizontal:value});(0,_vitest.expect)((0,_spacing.parseSpacing)("py-4")).toEqual({paddingVertical:value});(0,_vitest.expect)((0,_spacing.parseSpacing)("pt-4")).toEqual({paddingTop:value});(0,_vitest.expect)((0,_spacing.parseSpacing)("pr-4")).toEqual({paddingRight:value});(0,_vitest.expect)((0,_spacing.parseSpacing)("pb-4")).toEqual({paddingBottom:value});(0,_vitest.expect)((0,_spacing.parseSpacing)("pl-4")).toEqual({paddingLeft:value});});(0,_vitest.it)("should handle large spacing values",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("m-96")).toEqual({margin:384});(0,_vitest.expect)((0,_spacing.parseSpacing)("p-96")).toEqual({padding:384});(0,_vitest.expect)((0,_spacing.parseSpacing)("gap-96")).toEqual({gap:384});});(0,_vitest.it)("should handle arbitrary values across all margin directions",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("m-[50px]")).toEqual({margin:50});(0,_vitest.expect)((0,_spacing.parseSpacing)("mx-[50px]")).toEqual({marginHorizontal:50});(0,_vitest.expect)((0,_spacing.parseSpacing)("my-[50px]")).toEqual({marginVertical:50});(0,_vitest.expect)((0,_spacing.parseSpacing)("mt-[50px]")).toEqual({marginTop:50});(0,_vitest.expect)((0,_spacing.parseSpacing)("mr-[50px]")).toEqual({marginRight:50});(0,_vitest.expect)((0,_spacing.parseSpacing)("mb-[50px]")).toEqual({marginBottom:50});(0,_vitest.expect)((0,_spacing.parseSpacing)("ml-[50px]")).toEqual({marginLeft:50});});(0,_vitest.it)("should handle arbitrary values across all padding directions",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("p-[50px]")).toEqual({padding:50});(0,_vitest.expect)((0,_spacing.parseSpacing)("px-[50px]")).toEqual({paddingHorizontal:50});(0,_vitest.expect)((0,_spacing.parseSpacing)("py-[50px]")).toEqual({paddingVertical:50});(0,_vitest.expect)((0,_spacing.parseSpacing)("pt-[50px]")).toEqual({paddingTop:50});(0,_vitest.expect)((0,_spacing.parseSpacing)("pr-[50px]")).toEqual({paddingRight:50});(0,_vitest.expect)((0,_spacing.parseSpacing)("pb-[50px]")).toEqual({paddingBottom:50});(0,_vitest.expect)((0,_spacing.parseSpacing)("pl-[50px]")).toEqual({paddingLeft:50});});});
|
|
1
|
+
var _vitest=require("vitest");var _spacing=require("./spacing");(0,_vitest.describe)("SPACING_SCALE",function(){(0,_vitest.it)("should export complete spacing scale",function(){(0,_vitest.expect)(_spacing.SPACING_SCALE).toMatchSnapshot();});});(0,_vitest.describe)("parseSpacing - margin",function(){(0,_vitest.it)("should parse margin all sides",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("m-0")).toEqual({margin:0});(0,_vitest.expect)((0,_spacing.parseSpacing)("m-4")).toEqual({margin:16});(0,_vitest.expect)((0,_spacing.parseSpacing)("m-8")).toEqual({margin:32});(0,_vitest.expect)((0,_spacing.parseSpacing)("m-96")).toEqual({margin:384});});(0,_vitest.it)("should parse margin with fractional values",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("m-0.5")).toEqual({margin:2});(0,_vitest.expect)((0,_spacing.parseSpacing)("m-1.5")).toEqual({margin:6});(0,_vitest.expect)((0,_spacing.parseSpacing)("m-2.5")).toEqual({margin:10});});(0,_vitest.it)("should parse margin horizontal",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("mx-0")).toEqual({marginHorizontal:0});(0,_vitest.expect)((0,_spacing.parseSpacing)("mx-4")).toEqual({marginHorizontal:16});(0,_vitest.expect)((0,_spacing.parseSpacing)("mx-8")).toEqual({marginHorizontal:32});});(0,_vitest.it)("should parse margin vertical",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("my-0")).toEqual({marginVertical:0});(0,_vitest.expect)((0,_spacing.parseSpacing)("my-4")).toEqual({marginVertical:16});(0,_vitest.expect)((0,_spacing.parseSpacing)("my-8")).toEqual({marginVertical:32});});(0,_vitest.it)("should parse margin directional",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("mt-4")).toEqual({marginTop:16});(0,_vitest.expect)((0,_spacing.parseSpacing)("mr-4")).toEqual({marginRight:16});(0,_vitest.expect)((0,_spacing.parseSpacing)("mb-4")).toEqual({marginBottom:16});(0,_vitest.expect)((0,_spacing.parseSpacing)("ml-4")).toEqual({marginLeft:16});});(0,_vitest.it)("should parse margin with arbitrary values",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("m-[16px]")).toEqual({margin:16});(0,_vitest.expect)((0,_spacing.parseSpacing)("m-[16]")).toEqual({margin:16});(0,_vitest.expect)((0,_spacing.parseSpacing)("m-[100px]")).toEqual({margin:100});(0,_vitest.expect)((0,_spacing.parseSpacing)("m-[100]")).toEqual({margin:100});});(0,_vitest.it)("should parse margin directional with arbitrary values",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("mt-[24px]")).toEqual({marginTop:24});(0,_vitest.expect)((0,_spacing.parseSpacing)("mr-[32]")).toEqual({marginRight:32});(0,_vitest.expect)((0,_spacing.parseSpacing)("mb-[16px]")).toEqual({marginBottom:16});(0,_vitest.expect)((0,_spacing.parseSpacing)("ml-[48]")).toEqual({marginLeft:48});});(0,_vitest.it)("should parse margin horizontal/vertical with arbitrary values",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("mx-[20px]")).toEqual({marginHorizontal:20});(0,_vitest.expect)((0,_spacing.parseSpacing)("my-[30]")).toEqual({marginVertical:30});});});(0,_vitest.describe)("parseSpacing - negative margin",function(){(0,_vitest.it)("should parse negative margin all sides",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("-m-0")).toEqual({margin:-0});(0,_vitest.expect)((0,_spacing.parseSpacing)("-m-4")).toEqual({margin:-16});(0,_vitest.expect)((0,_spacing.parseSpacing)("-m-8")).toEqual({margin:-32});(0,_vitest.expect)((0,_spacing.parseSpacing)("-m-96")).toEqual({margin:-384});});(0,_vitest.it)("should parse negative margin with fractional values",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("-m-0.5")).toEqual({margin:-2});(0,_vitest.expect)((0,_spacing.parseSpacing)("-m-1.5")).toEqual({margin:-6});(0,_vitest.expect)((0,_spacing.parseSpacing)("-m-2.5")).toEqual({margin:-10});});(0,_vitest.it)("should parse negative margin horizontal",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("-mx-4")).toEqual({marginHorizontal:-16});(0,_vitest.expect)((0,_spacing.parseSpacing)("-mx-8")).toEqual({marginHorizontal:-32});});(0,_vitest.it)("should parse negative margin vertical",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("-my-4")).toEqual({marginVertical:-16});(0,_vitest.expect)((0,_spacing.parseSpacing)("-my-8")).toEqual({marginVertical:-32});});(0,_vitest.it)("should parse negative margin directional",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("-mt-4")).toEqual({marginTop:-16});(0,_vitest.expect)((0,_spacing.parseSpacing)("-mr-4")).toEqual({marginRight:-16});(0,_vitest.expect)((0,_spacing.parseSpacing)("-mb-4")).toEqual({marginBottom:-16});(0,_vitest.expect)((0,_spacing.parseSpacing)("-ml-4")).toEqual({marginLeft:-16});});(0,_vitest.it)("should parse negative margin with arbitrary values",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("-m-[16px]")).toEqual({margin:-16});(0,_vitest.expect)((0,_spacing.parseSpacing)("-m-[16]")).toEqual({margin:-16});(0,_vitest.expect)((0,_spacing.parseSpacing)("-m-[100px]")).toEqual({margin:-100});(0,_vitest.expect)((0,_spacing.parseSpacing)("-m-[100]")).toEqual({margin:-100});});(0,_vitest.it)("should parse negative margin directional with arbitrary values",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("-mt-[24px]")).toEqual({marginTop:-24});(0,_vitest.expect)((0,_spacing.parseSpacing)("-mr-[32]")).toEqual({marginRight:-32});(0,_vitest.expect)((0,_spacing.parseSpacing)("-mb-[16px]")).toEqual({marginBottom:-16});(0,_vitest.expect)((0,_spacing.parseSpacing)("-ml-[48]")).toEqual({marginLeft:-48});});(0,_vitest.it)("should parse negative margin horizontal/vertical with arbitrary values",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("-mx-[20px]")).toEqual({marginHorizontal:-20});(0,_vitest.expect)((0,_spacing.parseSpacing)("-my-[30]")).toEqual({marginVertical:-30});});(0,_vitest.it)("should not parse negative padding (invalid)",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("-p-4")).toBeNull();(0,_vitest.expect)((0,_spacing.parseSpacing)("-px-4")).toBeNull();(0,_vitest.expect)((0,_spacing.parseSpacing)("-pt-4")).toBeNull();(0,_vitest.expect)((0,_spacing.parseSpacing)("-p-[16px]")).toBeNull();});(0,_vitest.it)("should not parse negative gap (invalid)",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("-gap-4")).toBeNull();(0,_vitest.expect)((0,_spacing.parseSpacing)("-gap-[16px]")).toBeNull();});});(0,_vitest.describe)("parseSpacing - padding",function(){(0,_vitest.it)("should parse padding all sides",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("p-0")).toEqual({padding:0});(0,_vitest.expect)((0,_spacing.parseSpacing)("p-4")).toEqual({padding:16});(0,_vitest.expect)((0,_spacing.parseSpacing)("p-8")).toEqual({padding:32});(0,_vitest.expect)((0,_spacing.parseSpacing)("p-96")).toEqual({padding:384});});(0,_vitest.it)("should parse padding with fractional values",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("p-0.5")).toEqual({padding:2});(0,_vitest.expect)((0,_spacing.parseSpacing)("p-1.5")).toEqual({padding:6});(0,_vitest.expect)((0,_spacing.parseSpacing)("p-2.5")).toEqual({padding:10});});(0,_vitest.it)("should parse padding horizontal",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("px-0")).toEqual({paddingHorizontal:0});(0,_vitest.expect)((0,_spacing.parseSpacing)("px-4")).toEqual({paddingHorizontal:16});(0,_vitest.expect)((0,_spacing.parseSpacing)("px-8")).toEqual({paddingHorizontal:32});});(0,_vitest.it)("should parse padding vertical",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("py-0")).toEqual({paddingVertical:0});(0,_vitest.expect)((0,_spacing.parseSpacing)("py-4")).toEqual({paddingVertical:16});(0,_vitest.expect)((0,_spacing.parseSpacing)("py-8")).toEqual({paddingVertical:32});});(0,_vitest.it)("should parse padding directional",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("pt-4")).toEqual({paddingTop:16});(0,_vitest.expect)((0,_spacing.parseSpacing)("pr-4")).toEqual({paddingRight:16});(0,_vitest.expect)((0,_spacing.parseSpacing)("pb-4")).toEqual({paddingBottom:16});(0,_vitest.expect)((0,_spacing.parseSpacing)("pl-4")).toEqual({paddingLeft:16});});(0,_vitest.it)("should parse padding with arbitrary values",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("p-[16px]")).toEqual({padding:16});(0,_vitest.expect)((0,_spacing.parseSpacing)("p-[16]")).toEqual({padding:16});(0,_vitest.expect)((0,_spacing.parseSpacing)("p-[100px]")).toEqual({padding:100});(0,_vitest.expect)((0,_spacing.parseSpacing)("p-[100]")).toEqual({padding:100});});(0,_vitest.it)("should parse padding directional with arbitrary values",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("pt-[24px]")).toEqual({paddingTop:24});(0,_vitest.expect)((0,_spacing.parseSpacing)("pr-[32]")).toEqual({paddingRight:32});(0,_vitest.expect)((0,_spacing.parseSpacing)("pb-[16px]")).toEqual({paddingBottom:16});(0,_vitest.expect)((0,_spacing.parseSpacing)("pl-[48]")).toEqual({paddingLeft:48});});(0,_vitest.it)("should parse padding horizontal/vertical with arbitrary values",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("px-[20px]")).toEqual({paddingHorizontal:20});(0,_vitest.expect)((0,_spacing.parseSpacing)("py-[30]")).toEqual({paddingVertical:30});});});(0,_vitest.describe)("parseSpacing - gap",function(){(0,_vitest.it)("should parse gap",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("gap-0")).toEqual({gap:0});(0,_vitest.expect)((0,_spacing.parseSpacing)("gap-4")).toEqual({gap:16});(0,_vitest.expect)((0,_spacing.parseSpacing)("gap-8")).toEqual({gap:32});(0,_vitest.expect)((0,_spacing.parseSpacing)("gap-96")).toEqual({gap:384});});(0,_vitest.it)("should parse gap with fractional values",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("gap-0.5")).toEqual({gap:2});(0,_vitest.expect)((0,_spacing.parseSpacing)("gap-1.5")).toEqual({gap:6});(0,_vitest.expect)((0,_spacing.parseSpacing)("gap-2.5")).toEqual({gap:10});});(0,_vitest.it)("should parse gap with arbitrary values",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("gap-[16px]")).toEqual({gap:16});(0,_vitest.expect)((0,_spacing.parseSpacing)("gap-[16]")).toEqual({gap:16});(0,_vitest.expect)((0,_spacing.parseSpacing)("gap-[100px]")).toEqual({gap:100});(0,_vitest.expect)((0,_spacing.parseSpacing)("gap-[100]")).toEqual({gap:100});});});(0,_vitest.describe)("parseSpacing - edge cases",function(){(0,_vitest.it)("should return null for invalid classes",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("invalid")).toBeNull();(0,_vitest.expect)((0,_spacing.parseSpacing)("m")).toBeNull();(0,_vitest.expect)((0,_spacing.parseSpacing)("p")).toBeNull();(0,_vitest.expect)((0,_spacing.parseSpacing)("margin-4")).toBeNull();(0,_vitest.expect)((0,_spacing.parseSpacing)("padding-4")).toBeNull();});(0,_vitest.it)("should return null for invalid spacing values",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("m-invalid")).toBeNull();(0,_vitest.expect)((0,_spacing.parseSpacing)("p-999")).toBeNull();(0,_vitest.expect)((0,_spacing.parseSpacing)("gap-abc")).toBeNull();});(0,_vitest.it)("should return null for arbitrary values with unsupported units",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("m-[16rem]")).toBeNull();(0,_vitest.expect)((0,_spacing.parseSpacing)("p-[2em]")).toBeNull();(0,_vitest.expect)((0,_spacing.parseSpacing)("gap-[50%]")).toBeNull();});(0,_vitest.it)("should return null for malformed arbitrary values",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("m-[16")).toBeNull();(0,_vitest.expect)((0,_spacing.parseSpacing)("p-16]")).toBeNull();(0,_vitest.expect)((0,_spacing.parseSpacing)("gap-[]")).toBeNull();});(0,_vitest.it)("should handle edge case spacing values",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("m-0")).toEqual({margin:0});(0,_vitest.expect)((0,_spacing.parseSpacing)("p-0")).toEqual({padding:0});(0,_vitest.expect)((0,_spacing.parseSpacing)("gap-0")).toEqual({gap:0});});(0,_vitest.it)("should not match partial class names",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("sm-4")).toBeNull();(0,_vitest.expect)((0,_spacing.parseSpacing)("margin-4")).toBeNull();(0,_vitest.expect)((0,_spacing.parseSpacing)("padding-4")).toBeNull();});});(0,_vitest.describe)("parseSpacing - comprehensive coverage",function(){(0,_vitest.it)("should parse all margin directions with same value",function(){var value=16;(0,_vitest.expect)((0,_spacing.parseSpacing)("m-4")).toEqual({margin:value});(0,_vitest.expect)((0,_spacing.parseSpacing)("mx-4")).toEqual({marginHorizontal:value});(0,_vitest.expect)((0,_spacing.parseSpacing)("my-4")).toEqual({marginVertical:value});(0,_vitest.expect)((0,_spacing.parseSpacing)("mt-4")).toEqual({marginTop:value});(0,_vitest.expect)((0,_spacing.parseSpacing)("mr-4")).toEqual({marginRight:value});(0,_vitest.expect)((0,_spacing.parseSpacing)("mb-4")).toEqual({marginBottom:value});(0,_vitest.expect)((0,_spacing.parseSpacing)("ml-4")).toEqual({marginLeft:value});});(0,_vitest.it)("should parse all padding directions with same value",function(){var value=16;(0,_vitest.expect)((0,_spacing.parseSpacing)("p-4")).toEqual({padding:value});(0,_vitest.expect)((0,_spacing.parseSpacing)("px-4")).toEqual({paddingHorizontal:value});(0,_vitest.expect)((0,_spacing.parseSpacing)("py-4")).toEqual({paddingVertical:value});(0,_vitest.expect)((0,_spacing.parseSpacing)("pt-4")).toEqual({paddingTop:value});(0,_vitest.expect)((0,_spacing.parseSpacing)("pr-4")).toEqual({paddingRight:value});(0,_vitest.expect)((0,_spacing.parseSpacing)("pb-4")).toEqual({paddingBottom:value});(0,_vitest.expect)((0,_spacing.parseSpacing)("pl-4")).toEqual({paddingLeft:value});});(0,_vitest.it)("should handle large spacing values",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("m-96")).toEqual({margin:384});(0,_vitest.expect)((0,_spacing.parseSpacing)("p-96")).toEqual({padding:384});(0,_vitest.expect)((0,_spacing.parseSpacing)("gap-96")).toEqual({gap:384});});(0,_vitest.it)("should handle arbitrary values across all margin directions",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("m-[50px]")).toEqual({margin:50});(0,_vitest.expect)((0,_spacing.parseSpacing)("mx-[50px]")).toEqual({marginHorizontal:50});(0,_vitest.expect)((0,_spacing.parseSpacing)("my-[50px]")).toEqual({marginVertical:50});(0,_vitest.expect)((0,_spacing.parseSpacing)("mt-[50px]")).toEqual({marginTop:50});(0,_vitest.expect)((0,_spacing.parseSpacing)("mr-[50px]")).toEqual({marginRight:50});(0,_vitest.expect)((0,_spacing.parseSpacing)("mb-[50px]")).toEqual({marginBottom:50});(0,_vitest.expect)((0,_spacing.parseSpacing)("ml-[50px]")).toEqual({marginLeft:50});});(0,_vitest.it)("should handle arbitrary values across all padding directions",function(){(0,_vitest.expect)((0,_spacing.parseSpacing)("p-[50px]")).toEqual({padding:50});(0,_vitest.expect)((0,_spacing.parseSpacing)("px-[50px]")).toEqual({paddingHorizontal:50});(0,_vitest.expect)((0,_spacing.parseSpacing)("py-[50px]")).toEqual({paddingVertical:50});(0,_vitest.expect)((0,_spacing.parseSpacing)("pt-[50px]")).toEqual({paddingTop:50});(0,_vitest.expect)((0,_spacing.parseSpacing)("pr-[50px]")).toEqual({paddingRight:50});(0,_vitest.expect)((0,_spacing.parseSpacing)("pb-[50px]")).toEqual({paddingBottom:50});(0,_vitest.expect)((0,_spacing.parseSpacing)("pl-[50px]")).toEqual({paddingLeft:50});});});
|