@mgcrea/react-native-tailwind 0.12.1 → 0.14.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 +45 -2031
- package/dist/babel/index.cjs +1726 -1094
- package/dist/babel/plugin/componentScope.d.ts +26 -0
- package/dist/babel/plugin/componentScope.ts +87 -0
- package/dist/babel/plugin/state.d.ts +123 -0
- package/dist/babel/plugin/state.ts +185 -0
- package/dist/babel/plugin/visitors/className.d.ts +11 -0
- package/{src/babel/plugin.test.ts → dist/babel/plugin/visitors/className.test.ts} +285 -572
- package/dist/babel/plugin/visitors/className.ts +652 -0
- package/dist/babel/plugin/visitors/className.windowDimensions.test.ts +406 -0
- package/dist/babel/plugin/visitors/imports.d.ts +11 -0
- package/dist/babel/plugin/visitors/imports.test.ts +88 -0
- package/dist/babel/plugin/visitors/imports.ts +116 -0
- package/dist/babel/plugin/visitors/program.d.ts +15 -0
- package/dist/babel/plugin/visitors/program.test.ts +325 -0
- package/dist/babel/plugin/visitors/program.ts +116 -0
- package/dist/babel/plugin/visitors/tw.d.ts +16 -0
- package/dist/babel/plugin/visitors/tw.test.ts +771 -0
- package/dist/babel/plugin/visitors/tw.ts +148 -0
- package/dist/babel/plugin.d.ts +3 -96
- package/dist/babel/plugin.test.ts +470 -0
- package/dist/babel/plugin.ts +28 -963
- package/dist/babel/utils/colorSchemeModifierProcessing.ts +11 -0
- package/dist/babel/utils/componentSupport.test.ts +20 -7
- package/dist/babel/utils/componentSupport.ts +2 -0
- package/dist/babel/utils/directionalModifierProcessing.d.ts +34 -0
- package/dist/babel/utils/directionalModifierProcessing.ts +99 -0
- package/dist/babel/utils/modifierProcessing.ts +21 -0
- package/dist/babel/utils/platformModifierProcessing.ts +11 -0
- package/dist/babel/utils/styleInjection.d.ts +31 -0
- package/dist/babel/utils/styleInjection.ts +253 -7
- package/dist/babel/utils/twProcessing.d.ts +2 -0
- package/dist/babel/utils/twProcessing.ts +103 -3
- package/dist/babel/utils/windowDimensionsProcessing.d.ts +56 -0
- package/dist/babel/utils/windowDimensionsProcessing.ts +121 -0
- package/dist/components/TouchableOpacity.d.ts +35 -0
- package/dist/components/TouchableOpacity.js +1 -0
- package/dist/components/index.d.ts +3 -0
- package/dist/components/index.js +1 -0
- package/dist/config/markers.d.ts +5 -0
- package/dist/config/markers.js +1 -0
- package/dist/index.d.ts +2 -5
- package/dist/index.js +1 -1
- package/dist/parser/borders.d.ts +3 -1
- package/dist/parser/borders.js +1 -1
- package/dist/parser/borders.test.js +1 -1
- package/dist/parser/colors.js +1 -1
- package/dist/parser/colors.test.js +1 -1
- package/dist/parser/index.d.ts +2 -2
- package/dist/parser/index.js +1 -1
- package/dist/parser/layout.js +1 -1
- package/dist/parser/layout.test.js +1 -1
- package/dist/parser/modifiers.d.ts +32 -2
- package/dist/parser/modifiers.js +1 -1
- package/dist/parser/modifiers.test.js +1 -1
- package/dist/parser/sizing.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/parser/typography.test.js +1 -1
- package/dist/runtime.cjs +1 -1
- package/dist/runtime.cjs.map +4 -4
- package/dist/runtime.js +1 -1
- package/dist/runtime.js.map +4 -4
- package/package.json +6 -6
- package/src/babel/plugin/componentScope.ts +87 -0
- package/src/babel/plugin/state.ts +185 -0
- package/src/babel/plugin/visitors/className.test.ts +1625 -0
- package/src/babel/plugin/visitors/className.ts +652 -0
- package/src/babel/plugin/visitors/className.windowDimensions.test.ts +406 -0
- package/src/babel/plugin/visitors/imports.test.ts +88 -0
- package/src/babel/plugin/visitors/imports.ts +116 -0
- package/src/babel/plugin/visitors/program.test.ts +325 -0
- package/src/babel/plugin/visitors/program.ts +116 -0
- package/src/babel/plugin/visitors/tw.test.ts +771 -0
- package/src/babel/plugin/visitors/tw.ts +148 -0
- package/src/babel/plugin.ts +28 -963
- package/src/babel/utils/colorSchemeModifierProcessing.ts +11 -0
- package/src/babel/utils/componentSupport.test.ts +20 -7
- package/src/babel/utils/componentSupport.ts +2 -0
- package/src/babel/utils/directionalModifierProcessing.ts +99 -0
- package/src/babel/utils/modifierProcessing.ts +21 -0
- package/src/babel/utils/platformModifierProcessing.ts +11 -0
- package/src/babel/utils/styleInjection.ts +253 -7
- package/src/babel/utils/twProcessing.ts +103 -3
- package/src/babel/utils/windowDimensionsProcessing.ts +121 -0
- package/src/components/TouchableOpacity.tsx +71 -0
- package/src/components/index.ts +3 -0
- package/src/config/markers.ts +5 -0
- package/src/index.ts +4 -5
- package/src/parser/borders.test.ts +162 -0
- package/src/parser/borders.ts +67 -9
- package/src/parser/colors.test.ts +249 -0
- package/src/parser/colors.ts +38 -0
- package/src/parser/index.ts +4 -2
- package/src/parser/layout.test.ts +74 -0
- package/src/parser/layout.ts +94 -0
- package/src/parser/modifiers.test.ts +206 -0
- package/src/parser/modifiers.ts +62 -3
- package/src/parser/sizing.ts +11 -0
- package/src/parser/spacing.test.ts +66 -0
- package/src/parser/spacing.ts +15 -5
- package/src/parser/typography.test.ts +8 -0
- package/src/parser/typography.ts +4 -0
|
@@ -8,13 +8,16 @@ import type { CustomTheme, ModifierType, ParsedModifier } from "../../parser/ind
|
|
|
8
8
|
import {
|
|
9
9
|
expandSchemeModifier,
|
|
10
10
|
isColorSchemeModifier,
|
|
11
|
+
isDirectionalModifier,
|
|
11
12
|
isPlatformModifier,
|
|
12
13
|
isSchemeModifier,
|
|
13
14
|
} from "../../parser/index.js";
|
|
14
15
|
import type { SchemeModifierConfig } from "../../types/config.js";
|
|
15
16
|
import type { StyleObject } from "../../types/core.js";
|
|
16
17
|
import { processColorSchemeModifiers } from "./colorSchemeModifierProcessing.js";
|
|
18
|
+
import { processDirectionalModifiers } from "./directionalModifierProcessing.js";
|
|
17
19
|
import { processPlatformModifiers } from "./platformModifierProcessing.js";
|
|
20
|
+
import { hasRuntimeDimensions } from "./windowDimensionsProcessing.js";
|
|
18
21
|
|
|
19
22
|
/**
|
|
20
23
|
* Plugin state interface (subset needed for tw processing)
|
|
@@ -32,6 +35,9 @@ export interface TwProcessingState {
|
|
|
32
35
|
colorSchemeLocalIdentifier?: string;
|
|
33
36
|
// Platform support (for ios:/android:/web: modifiers)
|
|
34
37
|
needsPlatformImport: boolean;
|
|
38
|
+
// Directional support (for rtl:/ltr: modifiers)
|
|
39
|
+
needsI18nManagerImport: boolean;
|
|
40
|
+
i18nManagerVariableName: string;
|
|
35
41
|
}
|
|
36
42
|
|
|
37
43
|
/**
|
|
@@ -77,6 +83,16 @@ export function processTwCall(
|
|
|
77
83
|
if (baseClasses.length > 0) {
|
|
78
84
|
const baseClassName = baseClasses.join(" ");
|
|
79
85
|
const baseStyleObject = parseClassName(baseClassName, state.customTheme);
|
|
86
|
+
|
|
87
|
+
// Check for runtime dimensions (w-screen, h-screen)
|
|
88
|
+
if (hasRuntimeDimensions(baseStyleObject)) {
|
|
89
|
+
throw path.buildCodeFrameError(
|
|
90
|
+
`w-screen and h-screen are not supported in tw\`\` or twStyle() calls. ` +
|
|
91
|
+
`Found: "${baseClassName}". ` +
|
|
92
|
+
`Use them in className attributes instead.`,
|
|
93
|
+
);
|
|
94
|
+
}
|
|
95
|
+
|
|
80
96
|
const baseStyleKey = generateStyleKey(baseClassName);
|
|
81
97
|
state.styleRegistry.set(baseStyleKey, baseStyleObject);
|
|
82
98
|
|
|
@@ -91,11 +107,15 @@ export function processTwCall(
|
|
|
91
107
|
objectProperties.push(t.objectProperty(t.identifier("style"), t.objectExpression([])));
|
|
92
108
|
}
|
|
93
109
|
|
|
94
|
-
// Separate color-scheme and
|
|
110
|
+
// Separate color-scheme, platform, and directional modifiers from other modifiers
|
|
95
111
|
const colorSchemeModifiers = modifierClasses.filter((m) => isColorSchemeModifier(m.modifier));
|
|
96
112
|
const platformModifiers = modifierClasses.filter((m) => isPlatformModifier(m.modifier));
|
|
113
|
+
const directionalModifiers = modifierClasses.filter((m) => isDirectionalModifier(m.modifier));
|
|
97
114
|
const otherModifiers = modifierClasses.filter(
|
|
98
|
-
(m) =>
|
|
115
|
+
(m) =>
|
|
116
|
+
!isColorSchemeModifier(m.modifier) &&
|
|
117
|
+
!isPlatformModifier(m.modifier) &&
|
|
118
|
+
!isDirectionalModifier(m.modifier),
|
|
99
119
|
);
|
|
100
120
|
|
|
101
121
|
// Check if we need color scheme support
|
|
@@ -282,7 +302,87 @@ export function processTwCall(
|
|
|
282
302
|
}
|
|
283
303
|
}
|
|
284
304
|
|
|
285
|
-
//
|
|
305
|
+
// Process directional modifiers if present
|
|
306
|
+
const hasDirectionalModifiers = directionalModifiers.length > 0;
|
|
307
|
+
|
|
308
|
+
if (hasDirectionalModifiers) {
|
|
309
|
+
// Mark that we need I18nManager import
|
|
310
|
+
state.needsI18nManagerImport = true;
|
|
311
|
+
|
|
312
|
+
// Generate directional conditional expressions
|
|
313
|
+
const directionalConditionals = processDirectionalModifiers(
|
|
314
|
+
directionalModifiers,
|
|
315
|
+
state,
|
|
316
|
+
parseClassName,
|
|
317
|
+
generateStyleKey,
|
|
318
|
+
t,
|
|
319
|
+
);
|
|
320
|
+
|
|
321
|
+
// If we already have a style array (from color scheme or platform modifiers), add to it
|
|
322
|
+
// Otherwise, convert style property to an array
|
|
323
|
+
const styleProperty = objectProperties.find(
|
|
324
|
+
(prop) => t.isIdentifier(prop.key) && prop.key.name === "style",
|
|
325
|
+
);
|
|
326
|
+
|
|
327
|
+
if (styleProperty && t.isArrayExpression(styleProperty.value)) {
|
|
328
|
+
// Already have style array, add directional conditionals to it
|
|
329
|
+
styleProperty.value.elements.push(...directionalConditionals);
|
|
330
|
+
} else {
|
|
331
|
+
// No existing array, create style array with base + directional conditionals
|
|
332
|
+
const styleArrayElements: BabelTypes.Expression[] = [];
|
|
333
|
+
|
|
334
|
+
// Add base style if present
|
|
335
|
+
if (baseClasses.length > 0) {
|
|
336
|
+
const baseClassName = baseClasses.join(" ");
|
|
337
|
+
const baseStyleObject = parseClassName(baseClassName, state.customTheme);
|
|
338
|
+
const baseStyleKey = generateStyleKey(baseClassName);
|
|
339
|
+
state.styleRegistry.set(baseStyleKey, baseStyleObject);
|
|
340
|
+
styleArrayElements.push(
|
|
341
|
+
t.memberExpression(t.identifier(state.stylesIdentifier), t.identifier(baseStyleKey)),
|
|
342
|
+
);
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
// Add directional conditionals
|
|
346
|
+
styleArrayElements.push(...directionalConditionals);
|
|
347
|
+
|
|
348
|
+
// Replace style property with array
|
|
349
|
+
objectProperties[0] = t.objectProperty(t.identifier("style"), t.arrayExpression(styleArrayElements));
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
// Also add rtlStyle/ltrStyle properties for manual processing
|
|
353
|
+
const rtlModifiers = directionalModifiers.filter((m) => m.modifier === "rtl");
|
|
354
|
+
const ltrModifiers = directionalModifiers.filter((m) => m.modifier === "ltr");
|
|
355
|
+
|
|
356
|
+
if (rtlModifiers.length > 0) {
|
|
357
|
+
const rtlClassNames = rtlModifiers.map((m) => m.baseClass).join(" ");
|
|
358
|
+
const rtlStyleObject = parseClassName(rtlClassNames, state.customTheme);
|
|
359
|
+
const rtlStyleKey = generateStyleKey(`rtl_${rtlClassNames}`);
|
|
360
|
+
state.styleRegistry.set(rtlStyleKey, rtlStyleObject);
|
|
361
|
+
|
|
362
|
+
objectProperties.push(
|
|
363
|
+
t.objectProperty(
|
|
364
|
+
t.identifier("rtlStyle"),
|
|
365
|
+
t.memberExpression(t.identifier(state.stylesIdentifier), t.identifier(rtlStyleKey)),
|
|
366
|
+
),
|
|
367
|
+
);
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
if (ltrModifiers.length > 0) {
|
|
371
|
+
const ltrClassNames = ltrModifiers.map((m) => m.baseClass).join(" ");
|
|
372
|
+
const ltrStyleObject = parseClassName(ltrClassNames, state.customTheme);
|
|
373
|
+
const ltrStyleKey = generateStyleKey(`ltr_${ltrClassNames}`);
|
|
374
|
+
state.styleRegistry.set(ltrStyleKey, ltrStyleObject);
|
|
375
|
+
|
|
376
|
+
objectProperties.push(
|
|
377
|
+
t.objectProperty(
|
|
378
|
+
t.identifier("ltrStyle"),
|
|
379
|
+
t.memberExpression(t.identifier(state.stylesIdentifier), t.identifier(ltrStyleKey)),
|
|
380
|
+
),
|
|
381
|
+
);
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
// Group other modifiers by type (non-color-scheme, non-platform, and non-directional modifiers)
|
|
286
386
|
const modifiersByType = new Map<ModifierType, ParsedModifier[]>();
|
|
287
387
|
for (const mod of otherModifiers) {
|
|
288
388
|
if (!modifiersByType.has(mod.modifier)) {
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility functions for processing window dimensions (w-screen, h-screen)
|
|
3
|
+
*/
|
|
4
|
+
import type * as BabelTypes from "@babel/types";
|
|
5
|
+
import type { StyleObject } from "../../types/core.js";
|
|
6
|
+
/**
|
|
7
|
+
* Plugin state interface (subset needed for window dimensions processing)
|
|
8
|
+
*/
|
|
9
|
+
export interface WindowDimensionsProcessingState {
|
|
10
|
+
needsWindowDimensionsImport: boolean;
|
|
11
|
+
windowDimensionsVariableName: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Check if a style object contains runtime dimension markers
|
|
15
|
+
*
|
|
16
|
+
* @param styleObject - Style object to check
|
|
17
|
+
* @returns true if the style object contains runtime dimension markers
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* hasRuntimeDimensions({ width: "{{RUNTIME:dimensions.width}}" }) // true
|
|
21
|
+
* hasRuntimeDimensions({ width: 100 }) // false
|
|
22
|
+
*/
|
|
23
|
+
export declare function hasRuntimeDimensions(styleObject: StyleObject): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Create an inline style object with runtime dimension access
|
|
26
|
+
*
|
|
27
|
+
* Converts runtime markers like "{{RUNTIME:dimensions.width}}" to
|
|
28
|
+
* AST nodes like: { width: _twDimensions.width }
|
|
29
|
+
*
|
|
30
|
+
* @param styleObject - Style object with runtime markers
|
|
31
|
+
* @param state - Plugin state
|
|
32
|
+
* @param t - Babel types
|
|
33
|
+
* @returns AST object expression for inline style
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* Input: { width: "{{RUNTIME:dimensions.width}}", height: "{{RUNTIME:dimensions.height}}" }
|
|
37
|
+
* Output: { width: _twDimensions.width, height: _twDimensions.height }
|
|
38
|
+
*/
|
|
39
|
+
export declare function createRuntimeDimensionObject(styleObject: StyleObject, state: WindowDimensionsProcessingState, t: typeof BabelTypes): BabelTypes.ObjectExpression;
|
|
40
|
+
/**
|
|
41
|
+
* Split a style object into static and runtime parts
|
|
42
|
+
*
|
|
43
|
+
* @param styleObject - Style object to split
|
|
44
|
+
* @returns Object with static and runtime style objects
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* Input: { width: "{{RUNTIME:dimensions.width}}", padding: 16, backgroundColor: "#fff" }
|
|
48
|
+
* Output: {
|
|
49
|
+
* static: { padding: 16, backgroundColor: "#fff" },
|
|
50
|
+
* runtime: { width: "{{RUNTIME:dimensions.width}}" }
|
|
51
|
+
* }
|
|
52
|
+
*/
|
|
53
|
+
export declare function splitStaticAndRuntimeStyles(styleObject: StyleObject): {
|
|
54
|
+
static: StyleObject;
|
|
55
|
+
runtime: StyleObject;
|
|
56
|
+
};
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility functions for processing window dimensions (w-screen, h-screen)
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type * as BabelTypes from "@babel/types";
|
|
6
|
+
import { RUNTIME_DIMENSIONS_MARKER } from "../../config/markers.js";
|
|
7
|
+
import type { StyleObject } from "../../types/core.js";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Plugin state interface (subset needed for window dimensions processing)
|
|
11
|
+
*/
|
|
12
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
|
|
13
|
+
export interface WindowDimensionsProcessingState {
|
|
14
|
+
needsWindowDimensionsImport: boolean;
|
|
15
|
+
windowDimensionsVariableName: string;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Check if a style object contains runtime dimension markers
|
|
20
|
+
*
|
|
21
|
+
* @param styleObject - Style object to check
|
|
22
|
+
* @returns true if the style object contains runtime dimension markers
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* hasRuntimeDimensions({ width: "{{RUNTIME:dimensions.width}}" }) // true
|
|
26
|
+
* hasRuntimeDimensions({ width: 100 }) // false
|
|
27
|
+
*/
|
|
28
|
+
export function hasRuntimeDimensions(styleObject: StyleObject): boolean {
|
|
29
|
+
return Object.values(styleObject).some(
|
|
30
|
+
(value) => typeof value === "string" && value.startsWith(RUNTIME_DIMENSIONS_MARKER),
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Create an inline style object with runtime dimension access
|
|
36
|
+
*
|
|
37
|
+
* Converts runtime markers like "{{RUNTIME:dimensions.width}}" to
|
|
38
|
+
* AST nodes like: { width: _twDimensions.width }
|
|
39
|
+
*
|
|
40
|
+
* @param styleObject - Style object with runtime markers
|
|
41
|
+
* @param state - Plugin state
|
|
42
|
+
* @param t - Babel types
|
|
43
|
+
* @returns AST object expression for inline style
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* Input: { width: "{{RUNTIME:dimensions.width}}", height: "{{RUNTIME:dimensions.height}}" }
|
|
47
|
+
* Output: { width: _twDimensions.width, height: _twDimensions.height }
|
|
48
|
+
*/
|
|
49
|
+
export function createRuntimeDimensionObject(
|
|
50
|
+
styleObject: StyleObject,
|
|
51
|
+
state: WindowDimensionsProcessingState,
|
|
52
|
+
t: typeof BabelTypes,
|
|
53
|
+
): BabelTypes.ObjectExpression {
|
|
54
|
+
// Mark that we need useWindowDimensions import and hook injection
|
|
55
|
+
state.needsWindowDimensionsImport = true;
|
|
56
|
+
|
|
57
|
+
const properties: BabelTypes.ObjectProperty[] = [];
|
|
58
|
+
|
|
59
|
+
for (const [key, value] of Object.entries(styleObject)) {
|
|
60
|
+
let valueNode: BabelTypes.Expression;
|
|
61
|
+
|
|
62
|
+
if (typeof value === "string" && value.startsWith(RUNTIME_DIMENSIONS_MARKER)) {
|
|
63
|
+
// Extract property name: "{{RUNTIME:dimensions.width}}" -> "width"
|
|
64
|
+
const match = value.match(/dimensions\.(\w+)/);
|
|
65
|
+
const prop = match?.[1];
|
|
66
|
+
|
|
67
|
+
if (prop) {
|
|
68
|
+
// Generate: _twDimensions.width or _twDimensions.height
|
|
69
|
+
valueNode = t.memberExpression(t.identifier(state.windowDimensionsVariableName), t.identifier(prop));
|
|
70
|
+
} else {
|
|
71
|
+
// Fallback: shouldn't happen, but handle gracefully
|
|
72
|
+
valueNode = t.stringLiteral(value);
|
|
73
|
+
}
|
|
74
|
+
} else if (typeof value === "number") {
|
|
75
|
+
valueNode = t.numericLiteral(value);
|
|
76
|
+
} else if (typeof value === "string") {
|
|
77
|
+
valueNode = t.stringLiteral(value);
|
|
78
|
+
} else if (typeof value === "object" && value !== null) {
|
|
79
|
+
// Handle nested objects (e.g., transform arrays)
|
|
80
|
+
valueNode = t.valueToNode(value);
|
|
81
|
+
} else {
|
|
82
|
+
// Handle other types
|
|
83
|
+
valueNode = t.valueToNode(value);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
properties.push(t.objectProperty(t.identifier(key), valueNode));
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
return t.objectExpression(properties);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Split a style object into static and runtime parts
|
|
94
|
+
*
|
|
95
|
+
* @param styleObject - Style object to split
|
|
96
|
+
* @returns Object with static and runtime style objects
|
|
97
|
+
*
|
|
98
|
+
* @example
|
|
99
|
+
* Input: { width: "{{RUNTIME:dimensions.width}}", padding: 16, backgroundColor: "#fff" }
|
|
100
|
+
* Output: {
|
|
101
|
+
* static: { padding: 16, backgroundColor: "#fff" },
|
|
102
|
+
* runtime: { width: "{{RUNTIME:dimensions.width}}" }
|
|
103
|
+
* }
|
|
104
|
+
*/
|
|
105
|
+
export function splitStaticAndRuntimeStyles(styleObject: StyleObject): {
|
|
106
|
+
static: StyleObject;
|
|
107
|
+
runtime: StyleObject;
|
|
108
|
+
} {
|
|
109
|
+
const staticStyles: StyleObject = {};
|
|
110
|
+
const runtimeStyles: StyleObject = {};
|
|
111
|
+
|
|
112
|
+
for (const [key, value] of Object.entries(styleObject)) {
|
|
113
|
+
if (typeof value === "string" && value.startsWith(RUNTIME_DIMENSIONS_MARKER)) {
|
|
114
|
+
runtimeStyles[key] = value;
|
|
115
|
+
} else {
|
|
116
|
+
staticStyles[key] = value;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
return { static: staticStyles, runtime: runtimeStyles };
|
|
121
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enhanced TouchableOpacity component with modifier support
|
|
3
|
+
* Adds active state support for active: modifier via onPressIn/onPressOut
|
|
4
|
+
*/
|
|
5
|
+
import { type TouchableOpacityProps as RNTouchableOpacityProps, type StyleProp, type ViewStyle } from "react-native";
|
|
6
|
+
type TouchableOpacityState = {
|
|
7
|
+
active: boolean;
|
|
8
|
+
disabled: boolean | null | undefined;
|
|
9
|
+
};
|
|
10
|
+
export type TouchableOpacityProps = Omit<RNTouchableOpacityProps, "style"> & {
|
|
11
|
+
/**
|
|
12
|
+
* Style can be a static style object/array or a function that receives TouchableOpacity state
|
|
13
|
+
*/
|
|
14
|
+
style?: StyleProp<ViewStyle> | ((state: TouchableOpacityState) => StyleProp<ViewStyle>);
|
|
15
|
+
className?: string;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Enhanced TouchableOpacity that supports active: and disabled: modifiers
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* <TouchableOpacity
|
|
22
|
+
* disabled={isLoading}
|
|
23
|
+
* className="bg-blue-500 active:bg-blue-700 disabled:bg-gray-400"
|
|
24
|
+
* >
|
|
25
|
+
* <Text>Submit</Text>
|
|
26
|
+
* </TouchableOpacity>
|
|
27
|
+
*/
|
|
28
|
+
export declare const TouchableOpacity: import("react").ForwardRefExoticComponent<Omit<RNTouchableOpacityProps, "style"> & {
|
|
29
|
+
/**
|
|
30
|
+
* Style can be a static style object/array or a function that receives TouchableOpacity state
|
|
31
|
+
*/
|
|
32
|
+
style?: StyleProp<ViewStyle> | ((state: TouchableOpacityState) => StyleProp<ViewStyle>);
|
|
33
|
+
className?: string;
|
|
34
|
+
} & import("react").RefAttributes<import("react-native").View>>;
|
|
35
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.TouchableOpacity=void 0;var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _objectWithoutProperties2=_interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));var _react=require("react");var _reactNative=require("react-native");var _jsxRuntime=require("react/jsx-runtime");var _jsxFileName="/Users/olivier/Projects/github/react-native-tailwind/src/components/TouchableOpacity.tsx";var _excluded=["style","disabled","onPressIn","onPressOut"];var TouchableOpacity=exports.TouchableOpacity=(0,_react.forwardRef)(function TouchableOpacity(_ref,ref){var style=_ref.style,_ref$disabled=_ref.disabled,disabled=_ref$disabled===void 0?false:_ref$disabled,onPressIn=_ref.onPressIn,onPressOut=_ref.onPressOut,props=(0,_objectWithoutProperties2.default)(_ref,_excluded);var _useState=(0,_react.useState)(false),_useState2=(0,_slicedToArray2.default)(_useState,2),isActive=_useState2[0],setIsActive=_useState2[1];var handlePressIn=(0,_react.useCallback)(function(event){setIsActive(true);onPressIn==null||onPressIn(event);},[onPressIn]);var handlePressOut=(0,_react.useCallback)(function(event){setIsActive(false);onPressOut==null||onPressOut(event);},[onPressOut]);var resolvedStyle=typeof style==="function"?style({active:isActive,disabled:disabled}):style;return(0,_jsxRuntime.jsx)(_reactNative.TouchableOpacity,Object.assign({ref:ref,disabled:disabled,style:resolvedStyle,onPressIn:handlePressIn,onPressOut:handlePressOut},props));});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,"__esModule",{value:true});var _Pressable=require("./Pressable");Object.keys(_Pressable).forEach(function(key){if(key==="default"||key==="__esModule")return;if(key in exports&&exports[key]===_Pressable[key])return;Object.defineProperty(exports,key,{enumerable:true,get:function get(){return _Pressable[key];}});});var _TextInput=require("./TextInput");Object.keys(_TextInput).forEach(function(key){if(key==="default"||key==="__esModule")return;if(key in exports&&exports[key]===_TextInput[key])return;Object.defineProperty(exports,key,{enumerable:true,get:function get(){return _TextInput[key];}});});var _TouchableOpacity=require("./TouchableOpacity");Object.keys(_TouchableOpacity).forEach(function(key){if(key==="default"||key==="__esModule")return;if(key in exports&&exports[key]===_TouchableOpacity[key])return;Object.defineProperty(exports,key,{enumerable:true,get:function get(){return _TouchableOpacity[key];}});});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,"__esModule",{value:true});exports.RUNTIME_DIMENSIONS_MARKER=void 0;var RUNTIME_DIMENSIONS_MARKER=exports.RUNTIME_DIMENSIONS_MARKER="{{RUNTIME:dimensions.";
|
package/dist/index.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export { flattenColors } from "./utils/flattenColors";
|
|
|
8
8
|
export { generateStyleKey } from "./utils/styleKey";
|
|
9
9
|
export type { StyleObject } from "./types/core";
|
|
10
10
|
export type { NativeStyle, TwStyle } from "./types/runtime";
|
|
11
|
+
export { TAILWIND_COLORS } from "./config/tailwind";
|
|
11
12
|
export { parseAspectRatio, parseBorder, parseColor, parseLayout, parsePlaceholderClass, parsePlaceholderClasses, parseShadow, parseSizing, parseSpacing, parseTypography, } from "./parser";
|
|
12
13
|
export { ASPECT_RATIO_PRESETS } from "./parser/aspectRatio";
|
|
13
14
|
export { COLORS } from "./parser/colors";
|
|
@@ -16,8 +17,4 @@ export { SHADOW_SCALE } from "./parser/shadows";
|
|
|
16
17
|
export { SIZE_PERCENTAGES, SIZE_SCALE } from "./parser/sizing";
|
|
17
18
|
export { SPACING_SCALE } from "./parser/spacing";
|
|
18
19
|
export { FONT_SIZES, LETTER_SPACING_SCALE } from "./parser/typography";
|
|
19
|
-
export
|
|
20
|
-
export type { PressableProps } from "./components/Pressable";
|
|
21
|
-
export { TextInput } from "./components/TextInput";
|
|
22
|
-
export type { TextInputProps } from "./components/TextInput";
|
|
23
|
-
export { TAILWIND_COLORS } from "./config/tailwind";
|
|
20
|
+
export * from "./components";
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"ASPECT_RATIO_PRESETS",{enumerable:true,get:function get(){return _aspectRatio.ASPECT_RATIO_PRESETS;}});Object.defineProperty(exports,"COLORS",{enumerable:true,get:function get(){return _colors.COLORS;}});Object.defineProperty(exports,"FONT_SIZES",{enumerable:true,get:function get(){return _typography.FONT_SIZES;}});Object.defineProperty(exports,"INSET_SCALE",{enumerable:true,get:function get(){return _layout.INSET_SCALE;}});Object.defineProperty(exports,"LETTER_SPACING_SCALE",{enumerable:true,get:function get(){return _typography.LETTER_SPACING_SCALE;}});Object.defineProperty(exports,"
|
|
1
|
+
Object.defineProperty(exports,"__esModule",{value:true});var _exportNames={tw:true,twStyle:true,parseClass:true,parseClassName:true,parseAspectRatio:true,parseBorder:true,parseColor:true,parseLayout:true,parsePlaceholderClass:true,parsePlaceholderClasses:true,parseShadow:true,parseSizing:true,parseSpacing:true,parseTypography:true,flattenColors:true,generateStyleKey:true,TAILWIND_COLORS:true,ASPECT_RATIO_PRESETS:true,COLORS:true,INSET_SCALE:true,Z_INDEX_SCALE:true,SHADOW_SCALE:true,SIZE_PERCENTAGES:true,SIZE_SCALE:true,SPACING_SCALE:true,FONT_SIZES:true,LETTER_SPACING_SCALE:true};Object.defineProperty(exports,"ASPECT_RATIO_PRESETS",{enumerable:true,get:function get(){return _aspectRatio.ASPECT_RATIO_PRESETS;}});Object.defineProperty(exports,"COLORS",{enumerable:true,get:function get(){return _colors.COLORS;}});Object.defineProperty(exports,"FONT_SIZES",{enumerable:true,get:function get(){return _typography.FONT_SIZES;}});Object.defineProperty(exports,"INSET_SCALE",{enumerable:true,get:function get(){return _layout.INSET_SCALE;}});Object.defineProperty(exports,"LETTER_SPACING_SCALE",{enumerable:true,get:function get(){return _typography.LETTER_SPACING_SCALE;}});Object.defineProperty(exports,"SHADOW_SCALE",{enumerable:true,get:function get(){return _shadows.SHADOW_SCALE;}});Object.defineProperty(exports,"SIZE_PERCENTAGES",{enumerable:true,get:function get(){return _sizing.SIZE_PERCENTAGES;}});Object.defineProperty(exports,"SIZE_SCALE",{enumerable:true,get:function get(){return _sizing.SIZE_SCALE;}});Object.defineProperty(exports,"SPACING_SCALE",{enumerable:true,get:function get(){return _spacing.SPACING_SCALE;}});Object.defineProperty(exports,"TAILWIND_COLORS",{enumerable:true,get:function get(){return _tailwind.TAILWIND_COLORS;}});Object.defineProperty(exports,"Z_INDEX_SCALE",{enumerable:true,get:function get(){return _layout.Z_INDEX_SCALE;}});Object.defineProperty(exports,"flattenColors",{enumerable:true,get:function get(){return _flattenColors.flattenColors;}});Object.defineProperty(exports,"generateStyleKey",{enumerable:true,get:function get(){return _styleKey.generateStyleKey;}});Object.defineProperty(exports,"parseAspectRatio",{enumerable:true,get:function get(){return _parser.parseAspectRatio;}});Object.defineProperty(exports,"parseBorder",{enumerable:true,get:function get(){return _parser.parseBorder;}});Object.defineProperty(exports,"parseClass",{enumerable:true,get:function get(){return _parser.parseClass;}});Object.defineProperty(exports,"parseClassName",{enumerable:true,get:function get(){return _parser.parseClassName;}});Object.defineProperty(exports,"parseColor",{enumerable:true,get:function get(){return _parser.parseColor;}});Object.defineProperty(exports,"parseLayout",{enumerable:true,get:function get(){return _parser.parseLayout;}});Object.defineProperty(exports,"parsePlaceholderClass",{enumerable:true,get:function get(){return _parser.parsePlaceholderClass;}});Object.defineProperty(exports,"parsePlaceholderClasses",{enumerable:true,get:function get(){return _parser.parsePlaceholderClasses;}});Object.defineProperty(exports,"parseShadow",{enumerable:true,get:function get(){return _parser.parseShadow;}});Object.defineProperty(exports,"parseSizing",{enumerable:true,get:function get(){return _parser.parseSizing;}});Object.defineProperty(exports,"parseSpacing",{enumerable:true,get:function get(){return _parser.parseSpacing;}});Object.defineProperty(exports,"parseTypography",{enumerable:true,get:function get(){return _parser.parseTypography;}});Object.defineProperty(exports,"tw",{enumerable:true,get:function get(){return _tw.tw;}});Object.defineProperty(exports,"twStyle",{enumerable:true,get:function get(){return _tw.twStyle;}});var _tw=require("./stubs/tw");var _parser=require("./parser");var _flattenColors=require("./utils/flattenColors");var _styleKey=require("./utils/styleKey");var _tailwind=require("./config/tailwind");var _aspectRatio=require("./parser/aspectRatio");var _colors=require("./parser/colors");var _layout=require("./parser/layout");var _shadows=require("./parser/shadows");var _sizing=require("./parser/sizing");var _spacing=require("./parser/spacing");var _typography=require("./parser/typography");var _components=require("./components");Object.keys(_components).forEach(function(key){if(key==="default"||key==="__esModule")return;if(Object.prototype.hasOwnProperty.call(_exportNames,key))return;if(key in exports&&exports[key]===_components[key])return;Object.defineProperty(exports,key,{enumerable:true,get:function get(){return _components[key];}});});
|
package/dist/parser/borders.d.ts
CHANGED
|
@@ -6,5 +6,7 @@ export declare const BORDER_WIDTH_SCALE: Record<string, number>;
|
|
|
6
6
|
export declare const BORDER_RADIUS_SCALE: Record<string, number>;
|
|
7
7
|
/**
|
|
8
8
|
* Parse border classes
|
|
9
|
+
* @param cls - The class name to parse
|
|
10
|
+
* @param customColors - Optional custom colors from tailwind.config (used to detect color patterns)
|
|
9
11
|
*/
|
|
10
|
-
export declare function parseBorder(cls: string): StyleObject | null;
|
|
12
|
+
export declare function parseBorder(cls: string, customColors?: Record<string, string>): StyleObject | null;
|
package/dist/parser/borders.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.BORDER_WIDTH_SCALE=exports.BORDER_RADIUS_SCALE=void 0;exports.parseBorder=parseBorder;var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));var BORDER_WIDTH_SCALE=exports.BORDER_WIDTH_SCALE={"":1,"0":0,"2":2,"4":4,"8":8};var BORDER_RADIUS_SCALE=exports.BORDER_RADIUS_SCALE={none:0,sm:2,"":4,md:6,lg:8,xl:12,"2xl":16,"3xl":24,full:9999};var BORDER_WIDTH_PROP_MAP={t:"borderTopWidth",r:"borderRightWidth",b:"borderBottomWidth",l:"borderLeftWidth"};var BORDER_RADIUS_CORNER_MAP={tl:"borderTopLeftRadius",tr:"borderTopRightRadius",bl:"borderBottomLeftRadius",br:"borderBottomRightRadius"};var BORDER_RADIUS_SIDE_MAP={t:["borderTopLeftRadius","borderTopRightRadius"],r:["borderTopRightRadius","borderBottomRightRadius"],b:["borderBottomLeftRadius","borderBottomRightRadius"],l:["borderTopLeftRadius","borderBottomLeftRadius"]};function parseArbitraryBorderWidth(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 border width value: ${value}. Only px values are supported (e.g., [8px] or [8]).`);}return null;}return null;}function parseArbitraryBorderRadius(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 border radius value: ${value}. Only px values are supported (e.g., [12px] or [12]).`);}return null;}return null;}function parseBorder(cls){if(cls==="border-solid")return{borderStyle:"solid"};if(cls==="border-dotted")return{borderStyle:"dotted"};if(cls==="border-dashed")return{borderStyle:"dashed"};if(cls.startsWith("border-")){return parseBorderWidth(cls);}if(cls==="border"){return{borderWidth:1};}if(cls.startsWith("rounded")){return parseBorderRadius(cls);}return null;}function parseBorderWidth(cls){var dirMatch=cls.match(/^border-([
|
|
1
|
+
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.BORDER_WIDTH_SCALE=exports.BORDER_RADIUS_SCALE=void 0;exports.parseBorder=parseBorder;var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));var _colors=require("./colors");var BORDER_WIDTH_SCALE=exports.BORDER_WIDTH_SCALE={"":1,"0":0,"2":2,"4":4,"8":8};var BORDER_RADIUS_SCALE=exports.BORDER_RADIUS_SCALE={none:0,sm:2,"":4,md:6,lg:8,xl:12,"2xl":16,"3xl":24,full:9999};var BORDER_WIDTH_PROP_MAP={t:"borderTopWidth",r:"borderRightWidth",b:"borderBottomWidth",l:"borderLeftWidth",s:"borderStartWidth",e:"borderEndWidth"};var BORDER_RADIUS_CORNER_MAP={tl:"borderTopLeftRadius",tr:"borderTopRightRadius",bl:"borderBottomLeftRadius",br:"borderBottomRightRadius"};var BORDER_RADIUS_LOGICAL_CORNER_MAP={ss:"borderTopStartRadius",se:"borderTopEndRadius",es:"borderBottomStartRadius",ee:"borderBottomEndRadius"};var BORDER_RADIUS_SIDE_MAP={t:["borderTopLeftRadius","borderTopRightRadius"],r:["borderTopRightRadius","borderBottomRightRadius"],b:["borderBottomLeftRadius","borderBottomRightRadius"],l:["borderTopLeftRadius","borderBottomLeftRadius"],s:["borderTopStartRadius","borderBottomStartRadius"],e:["borderTopEndRadius","borderBottomEndRadius"]};function parseArbitraryBorderWidth(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 border width value: ${value}. Only px values are supported (e.g., [8px] or [8]).`);}return null;}return null;}function parseArbitraryBorderRadius(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 border radius value: ${value}. Only px values are supported (e.g., [12px] or [12]).`);}return null;}return null;}function parseBorder(cls,customColors){if(cls==="border-solid")return{borderStyle:"solid"};if(cls==="border-dotted")return{borderStyle:"dotted"};if(cls==="border-dashed")return{borderStyle:"dashed"};if(cls.startsWith("border-")){return parseBorderWidth(cls,customColors);}if(cls==="border"){return{borderWidth:1};}if(cls.startsWith("rounded")){return parseBorderRadius(cls);}return null;}function parseBorderWidth(cls,customColors){var dirMatch=cls.match(/^border-([trblse])(?:-(.+))?$/);if(dirMatch){var dir=dirMatch[1];var valueStr=dirMatch[2]||"";if(valueStr&&dir!=="s"&&dir!=="e"){var colorResult=(0,_colors.parseColor)(cls,customColors);if(colorResult!==null){return null;}}if(valueStr.startsWith("[")){var arbitraryValue=parseArbitraryBorderWidth(valueStr);if(arbitraryValue!==null){return(0,_defineProperty2.default)({},BORDER_WIDTH_PROP_MAP[dir],arbitraryValue);}return null;}var scaleValue=BORDER_WIDTH_SCALE[valueStr];if(scaleValue!==undefined){return(0,_defineProperty2.default)({},BORDER_WIDTH_PROP_MAP[dir],scaleValue);}return null;}var allMatch=cls.match(/^border-(\d+)$/);if(allMatch){var value=BORDER_WIDTH_SCALE[allMatch[1]];if(value!==undefined){return{borderWidth:value};}}var allArbMatch=cls.match(/^border-(\[.+\])$/);if(allArbMatch){var _arbitraryValue=parseArbitraryBorderWidth(allArbMatch[1]);if(_arbitraryValue!==null){return{borderWidth:_arbitraryValue};}}return null;}function parseBorderRadius(cls){var withoutPrefix=cls.substring(7);if(withoutPrefix===""){return{borderRadius:BORDER_RADIUS_SCALE[""]};}if(!withoutPrefix.startsWith("-")){return null;}var rest=withoutPrefix.substring(1);if(rest===""){return null;}var cornerMatch=rest.match(/^(tl|tr|bl|br)(?:-(.+))?$/);if(cornerMatch){var corner=cornerMatch[1];var valueStr=cornerMatch[2]||"";if(valueStr.startsWith("[")){var arbitraryValue=parseArbitraryBorderRadius(valueStr);if(arbitraryValue!==null){return(0,_defineProperty2.default)({},BORDER_RADIUS_CORNER_MAP[corner],arbitraryValue);}return null;}var _scaleValue=BORDER_RADIUS_SCALE[valueStr];if(_scaleValue!==undefined){return(0,_defineProperty2.default)({},BORDER_RADIUS_CORNER_MAP[corner],_scaleValue);}return null;}var logicalCornerMatch=rest.match(/^(ss|se|es|ee)(?:-(.+))?$/);if(logicalCornerMatch){var _corner=logicalCornerMatch[1];var _valueStr=logicalCornerMatch[2]||"";if(_valueStr.startsWith("[")){var _arbitraryValue2=parseArbitraryBorderRadius(_valueStr);if(_arbitraryValue2!==null){return(0,_defineProperty2.default)({},BORDER_RADIUS_LOGICAL_CORNER_MAP[_corner],_arbitraryValue2);}return null;}var _scaleValue2=BORDER_RADIUS_SCALE[_valueStr];if(_scaleValue2!==undefined){return(0,_defineProperty2.default)({},BORDER_RADIUS_LOGICAL_CORNER_MAP[_corner],_scaleValue2);}return null;}var sideMatch=rest.match(/^([trblse])(?:-(.+))?$/);if(sideMatch){var side=sideMatch[1];var _valueStr2=sideMatch[2]||"";var value;if(_valueStr2.startsWith("[")){var _arbitraryValue3=parseArbitraryBorderRadius(_valueStr2);if(_arbitraryValue3!==null){value=_arbitraryValue3;}else{return null;}}else{value=BORDER_RADIUS_SCALE[_valueStr2];}if(value!==undefined){var result={};BORDER_RADIUS_SIDE_MAP[side].forEach(function(prop){return result[prop]=value;});return result;}return null;}if(rest.startsWith("[")){var _arbitraryValue4=parseArbitraryBorderRadius(rest);if(_arbitraryValue4!==null){return{borderRadius:_arbitraryValue4};}return null;}var scaleValue=BORDER_RADIUS_SCALE[rest];if(scaleValue!==undefined){return{borderRadius:scaleValue};}return null;}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var _vitest=require("vitest");var _borders=require("./borders");(0,_vitest.describe)("BORDER_WIDTH_SCALE",function(){(0,_vitest.it)("should export complete border width scale",function(){(0,_vitest.expect)(_borders.BORDER_WIDTH_SCALE).toMatchSnapshot();});});(0,_vitest.describe)("BORDER_RADIUS_SCALE",function(){(0,_vitest.it)("should export complete border radius scale",function(){(0,_vitest.expect)(_borders.BORDER_RADIUS_SCALE).toMatchSnapshot();});});(0,_vitest.describe)("parseBorder - border width all sides",function(){(0,_vitest.it)("should parse border shorthand",function(){(0,_vitest.expect)((0,_borders.parseBorder)("border")).toEqual({borderWidth:1});});(0,_vitest.it)("should parse border with preset values",function(){(0,_vitest.expect)((0,_borders.parseBorder)("border-0")).toEqual({borderWidth:0});(0,_vitest.expect)((0,_borders.parseBorder)("border-2")).toEqual({borderWidth:2});(0,_vitest.expect)((0,_borders.parseBorder)("border-4")).toEqual({borderWidth:4});(0,_vitest.expect)((0,_borders.parseBorder)("border-8")).toEqual({borderWidth:8});});(0,_vitest.it)("should parse border with arbitrary pixel values",function(){(0,_vitest.expect)((0,_borders.parseBorder)("border-[1px]")).toEqual({borderWidth:1});(0,_vitest.expect)((0,_borders.parseBorder)("border-[1]")).toEqual({borderWidth:1});(0,_vitest.expect)((0,_borders.parseBorder)("border-[3px]")).toEqual({borderWidth:3});(0,_vitest.expect)((0,_borders.parseBorder)("border-[10px]")).toEqual({borderWidth:10});});});(0,_vitest.describe)("parseBorder - border width directional",function(){(0,_vitest.it)("should parse border top",function(){(0,_vitest.expect)((0,_borders.parseBorder)("border-t")).toEqual({borderTopWidth:1});(0,_vitest.expect)((0,_borders.parseBorder)("border-t-0")).toEqual({borderTopWidth:0});(0,_vitest.expect)((0,_borders.parseBorder)("border-t-2")).toEqual({borderTopWidth:2});(0,_vitest.expect)((0,_borders.parseBorder)("border-t-4")).toEqual({borderTopWidth:4});(0,_vitest.expect)((0,_borders.parseBorder)("border-t-8")).toEqual({borderTopWidth:8});});(0,_vitest.it)("should parse border right",function(){(0,_vitest.expect)((0,_borders.parseBorder)("border-r")).toEqual({borderRightWidth:1});(0,_vitest.expect)((0,_borders.parseBorder)("border-r-0")).toEqual({borderRightWidth:0});(0,_vitest.expect)((0,_borders.parseBorder)("border-r-2")).toEqual({borderRightWidth:2});(0,_vitest.expect)((0,_borders.parseBorder)("border-r-4")).toEqual({borderRightWidth:4});});(0,_vitest.it)("should parse border bottom",function(){(0,_vitest.expect)((0,_borders.parseBorder)("border-b")).toEqual({borderBottomWidth:1});(0,_vitest.expect)((0,_borders.parseBorder)("border-b-0")).toEqual({borderBottomWidth:0});(0,_vitest.expect)((0,_borders.parseBorder)("border-b-2")).toEqual({borderBottomWidth:2});(0,_vitest.expect)((0,_borders.parseBorder)("border-b-4")).toEqual({borderBottomWidth:4});});(0,_vitest.it)("should parse border left",function(){(0,_vitest.expect)((0,_borders.parseBorder)("border-l")).toEqual({borderLeftWidth:1});(0,_vitest.expect)((0,_borders.parseBorder)("border-l-0")).toEqual({borderLeftWidth:0});(0,_vitest.expect)((0,_borders.parseBorder)("border-l-2")).toEqual({borderLeftWidth:2});(0,_vitest.expect)((0,_borders.parseBorder)("border-l-4")).toEqual({borderLeftWidth:4});});(0,_vitest.it)("should parse directional borders with arbitrary values",function(){(0,_vitest.expect)((0,_borders.parseBorder)("border-t-[3px]")).toEqual({borderTopWidth:3});(0,_vitest.expect)((0,_borders.parseBorder)("border-r-[5px]")).toEqual({borderRightWidth:5});(0,_vitest.expect)((0,_borders.parseBorder)("border-b-[7px]")).toEqual({borderBottomWidth:7});(0,_vitest.expect)((0,_borders.parseBorder)("border-l-[9px]")).toEqual({borderLeftWidth:9});});});(0,_vitest.describe)("parseBorder - border style",function(){(0,_vitest.it)("should parse border styles",function(){(0,_vitest.expect)((0,_borders.parseBorder)("border-solid")).toEqual({borderStyle:"solid"});(0,_vitest.expect)((0,_borders.parseBorder)("border-dotted")).toEqual({borderStyle:"dotted"});(0,_vitest.expect)((0,_borders.parseBorder)("border-dashed")).toEqual({borderStyle:"dashed"});});});(0,_vitest.describe)("parseBorder - border radius all corners",function(){(0,_vitest.it)("should parse rounded shorthand",function(){(0,_vitest.expect)((0,_borders.parseBorder)("rounded")).toEqual({borderRadius:4});});(0,_vitest.it)("should parse rounded with preset values",function(){(0,_vitest.expect)((0,_borders.parseBorder)("rounded-none")).toEqual({borderRadius:0});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-sm")).toEqual({borderRadius:2});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-md")).toEqual({borderRadius:6});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-lg")).toEqual({borderRadius:8});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-xl")).toEqual({borderRadius:12});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-2xl")).toEqual({borderRadius:16});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-3xl")).toEqual({borderRadius:24});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-full")).toEqual({borderRadius:9999});});(0,_vitest.it)("should parse rounded with arbitrary pixel values",function(){(0,_vitest.expect)((0,_borders.parseBorder)("rounded-[5px]")).toEqual({borderRadius:5});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-[10px]")).toEqual({borderRadius:10});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-[15]")).toEqual({borderRadius:15});});});(0,_vitest.describe)("parseBorder - border radius sides",function(){(0,_vitest.it)("should parse rounded top",function(){(0,_vitest.expect)((0,_borders.parseBorder)("rounded-t")).toEqual({borderTopLeftRadius:4,borderTopRightRadius:4});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-t-lg")).toEqual({borderTopLeftRadius:8,borderTopRightRadius:8});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-t-[12px]")).toEqual({borderTopLeftRadius:12,borderTopRightRadius:12});});(0,_vitest.it)("should parse rounded right",function(){(0,_vitest.expect)((0,_borders.parseBorder)("rounded-r")).toEqual({borderTopRightRadius:4,borderBottomRightRadius:4});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-r-lg")).toEqual({borderTopRightRadius:8,borderBottomRightRadius:8});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-r-[12px]")).toEqual({borderTopRightRadius:12,borderBottomRightRadius:12});});(0,_vitest.it)("should parse rounded bottom",function(){(0,_vitest.expect)((0,_borders.parseBorder)("rounded-b")).toEqual({borderBottomLeftRadius:4,borderBottomRightRadius:4});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-b-lg")).toEqual({borderBottomLeftRadius:8,borderBottomRightRadius:8});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-b-[12px]")).toEqual({borderBottomLeftRadius:12,borderBottomRightRadius:12});});(0,_vitest.it)("should parse rounded left",function(){(0,_vitest.expect)((0,_borders.parseBorder)("rounded-l")).toEqual({borderTopLeftRadius:4,borderBottomLeftRadius:4});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-l-lg")).toEqual({borderTopLeftRadius:8,borderBottomLeftRadius:8});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-l-[12px]")).toEqual({borderTopLeftRadius:12,borderBottomLeftRadius:12});});});(0,_vitest.describe)("parseBorder - border radius specific corners",function(){(0,_vitest.it)("should parse rounded top-left",function(){(0,_vitest.expect)((0,_borders.parseBorder)("rounded-tl")).toEqual({borderTopLeftRadius:4});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-tl-lg")).toEqual({borderTopLeftRadius:8});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-tl-[12px]")).toEqual({borderTopLeftRadius:12});});(0,_vitest.it)("should parse rounded top-right",function(){(0,_vitest.expect)((0,_borders.parseBorder)("rounded-tr")).toEqual({borderTopRightRadius:4});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-tr-lg")).toEqual({borderTopRightRadius:8});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-tr-[12px]")).toEqual({borderTopRightRadius:12});});(0,_vitest.it)("should parse rounded bottom-left",function(){(0,_vitest.expect)((0,_borders.parseBorder)("rounded-bl")).toEqual({borderBottomLeftRadius:4});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-bl-lg")).toEqual({borderBottomLeftRadius:8});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-bl-[12px]")).toEqual({borderBottomLeftRadius:12});});(0,_vitest.it)("should parse rounded bottom-right",function(){(0,_vitest.expect)((0,_borders.parseBorder)("rounded-br")).toEqual({borderBottomRightRadius:4});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-br-lg")).toEqual({borderBottomRightRadius:8});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-br-[12px]")).toEqual({borderBottomRightRadius:12});});});(0,_vitest.describe)("parseBorder - edge cases",function(){(0,_vitest.it)("should return null for invalid classes",function(){(0,_vitest.expect)((0,_borders.parseBorder)("invalid")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("border-")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("rounded-")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("borders-4")).toBeNull();});(0,_vitest.it)("should return null for invalid border width values",function(){(0,_vitest.expect)((0,_borders.parseBorder)("border-invalid")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("border-3")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("border-16")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("border-t-3")).toBeNull();});(0,_vitest.it)("should return null for invalid border radius values",function(){(0,_vitest.expect)((0,_borders.parseBorder)("rounded-invalid")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("rounded-4xl")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("rounded-t-invalid")).toBeNull();});(0,_vitest.it)("should return null for arbitrary values with unsupported units",function(){(0,_vitest.expect)((0,_borders.parseBorder)("border-[2rem]")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("border-[1em]")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("rounded-[2rem]")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("rounded-[1em]")).toBeNull();});(0,_vitest.it)("should return null for malformed arbitrary values",function(){(0,_vitest.expect)((0,_borders.parseBorder)("border-[8")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("border-8]")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("border-[]")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("rounded-[12")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("rounded-12]")).toBeNull();});(0,_vitest.it)("should handle edge case values",function(){(0,_vitest.expect)((0,_borders.parseBorder)("border-0")).toEqual({borderWidth:0});(0,_vitest.expect)((0,_borders.parseBorder)("border-t-0")).toEqual({borderTopWidth:0});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-none")).toEqual({borderRadius:0});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-full")).toEqual({borderRadius:9999});});(0,_vitest.it)("should not match partial class names",function(){(0,_vitest.expect)((0,_borders.parseBorder)("myborder-4")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("border-solid-extra")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("myrounded-lg")).toBeNull();});});(0,_vitest.describe)("parseBorder - comprehensive coverage",function(){(0,_vitest.it)("should handle all border width directions with same value",function(){(0,_vitest.expect)((0,_borders.parseBorder)("border-2")).toEqual({borderWidth:2});(0,_vitest.expect)((0,_borders.parseBorder)("border-t-2")).toEqual({borderTopWidth:2});(0,_vitest.expect)((0,_borders.parseBorder)("border-r-2")).toEqual({borderRightWidth:2});(0,_vitest.expect)((0,_borders.parseBorder)("border-b-2")).toEqual({borderBottomWidth:2});(0,_vitest.expect)((0,_borders.parseBorder)("border-l-2")).toEqual({borderLeftWidth:2});});(0,_vitest.it)("should handle all border radius types with same value",function(){(0,_vitest.expect)((0,_borders.parseBorder)("rounded-lg")).toEqual({borderRadius:8});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-t-lg")).toEqual({borderTopLeftRadius:8,borderTopRightRadius:8});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-r-lg")).toEqual({borderTopRightRadius:8,borderBottomRightRadius:8});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-b-lg")).toEqual({borderBottomLeftRadius:8,borderBottomRightRadius:8});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-l-lg")).toEqual({borderTopLeftRadius:8,borderBottomLeftRadius:8});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-tl-lg")).toEqual({borderTopLeftRadius:8});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-tr-lg")).toEqual({borderTopRightRadius:8});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-bl-lg")).toEqual({borderBottomLeftRadius:8});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-br-lg")).toEqual({borderBottomRightRadius:8});});(0,_vitest.it)("should handle arbitrary values across all border width types",function(){(0,_vitest.expect)((0,_borders.parseBorder)("border-[5px]")).toEqual({borderWidth:5});(0,_vitest.expect)((0,_borders.parseBorder)("border-t-[5px]")).toEqual({borderTopWidth:5});(0,_vitest.expect)((0,_borders.parseBorder)("border-r-[5px]")).toEqual({borderRightWidth:5});(0,_vitest.expect)((0,_borders.parseBorder)("border-b-[5px]")).toEqual({borderBottomWidth:5});(0,_vitest.expect)((0,_borders.parseBorder)("border-l-[5px]")).toEqual({borderLeftWidth:5});});(0,_vitest.it)("should handle arbitrary values across all border radius types",function(){(0,_vitest.expect)((0,_borders.parseBorder)("rounded-[10px]")).toEqual({borderRadius:10});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-t-[10px]")).toEqual({borderTopLeftRadius:10,borderTopRightRadius:10});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-tl-[10px]")).toEqual({borderTopLeftRadius:10});});(0,_vitest.it)("should handle all border styles",function(){(0,_vitest.expect)((0,_borders.parseBorder)("border-solid")).toEqual({borderStyle:"solid"});(0,_vitest.expect)((0,_borders.parseBorder)("border-dotted")).toEqual({borderStyle:"dotted"});(0,_vitest.expect)((0,_borders.parseBorder)("border-dashed")).toEqual({borderStyle:"dashed"});});(0,_vitest.it)("should handle shorthand classes correctly",function(){(0,_vitest.expect)((0,_borders.parseBorder)("border")).toEqual({borderWidth:1});(0,_vitest.expect)((0,_borders.parseBorder)("rounded")).toEqual({borderRadius:4});(0,_vitest.expect)((0,_borders.parseBorder)("border-t")).toEqual({borderTopWidth:1});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-t")).toEqual({borderTopLeftRadius:4,borderTopRightRadius:4});});});
|
|
1
|
+
var _vitest=require("vitest");var _borders=require("./borders");(0,_vitest.describe)("BORDER_WIDTH_SCALE",function(){(0,_vitest.it)("should export complete border width scale",function(){(0,_vitest.expect)(_borders.BORDER_WIDTH_SCALE).toMatchSnapshot();});});(0,_vitest.describe)("BORDER_RADIUS_SCALE",function(){(0,_vitest.it)("should export complete border radius scale",function(){(0,_vitest.expect)(_borders.BORDER_RADIUS_SCALE).toMatchSnapshot();});});(0,_vitest.describe)("parseBorder - border width all sides",function(){(0,_vitest.it)("should parse border shorthand",function(){(0,_vitest.expect)((0,_borders.parseBorder)("border")).toEqual({borderWidth:1});});(0,_vitest.it)("should parse border with preset values",function(){(0,_vitest.expect)((0,_borders.parseBorder)("border-0")).toEqual({borderWidth:0});(0,_vitest.expect)((0,_borders.parseBorder)("border-2")).toEqual({borderWidth:2});(0,_vitest.expect)((0,_borders.parseBorder)("border-4")).toEqual({borderWidth:4});(0,_vitest.expect)((0,_borders.parseBorder)("border-8")).toEqual({borderWidth:8});});(0,_vitest.it)("should parse border with arbitrary pixel values",function(){(0,_vitest.expect)((0,_borders.parseBorder)("border-[1px]")).toEqual({borderWidth:1});(0,_vitest.expect)((0,_borders.parseBorder)("border-[1]")).toEqual({borderWidth:1});(0,_vitest.expect)((0,_borders.parseBorder)("border-[3px]")).toEqual({borderWidth:3});(0,_vitest.expect)((0,_borders.parseBorder)("border-[10px]")).toEqual({borderWidth:10});});});(0,_vitest.describe)("parseBorder - border width directional",function(){(0,_vitest.it)("should parse border top",function(){(0,_vitest.expect)((0,_borders.parseBorder)("border-t")).toEqual({borderTopWidth:1});(0,_vitest.expect)((0,_borders.parseBorder)("border-t-0")).toEqual({borderTopWidth:0});(0,_vitest.expect)((0,_borders.parseBorder)("border-t-2")).toEqual({borderTopWidth:2});(0,_vitest.expect)((0,_borders.parseBorder)("border-t-4")).toEqual({borderTopWidth:4});(0,_vitest.expect)((0,_borders.parseBorder)("border-t-8")).toEqual({borderTopWidth:8});});(0,_vitest.it)("should parse border right",function(){(0,_vitest.expect)((0,_borders.parseBorder)("border-r")).toEqual({borderRightWidth:1});(0,_vitest.expect)((0,_borders.parseBorder)("border-r-0")).toEqual({borderRightWidth:0});(0,_vitest.expect)((0,_borders.parseBorder)("border-r-2")).toEqual({borderRightWidth:2});(0,_vitest.expect)((0,_borders.parseBorder)("border-r-4")).toEqual({borderRightWidth:4});});(0,_vitest.it)("should parse border bottom",function(){(0,_vitest.expect)((0,_borders.parseBorder)("border-b")).toEqual({borderBottomWidth:1});(0,_vitest.expect)((0,_borders.parseBorder)("border-b-0")).toEqual({borderBottomWidth:0});(0,_vitest.expect)((0,_borders.parseBorder)("border-b-2")).toEqual({borderBottomWidth:2});(0,_vitest.expect)((0,_borders.parseBorder)("border-b-4")).toEqual({borderBottomWidth:4});});(0,_vitest.it)("should parse border left",function(){(0,_vitest.expect)((0,_borders.parseBorder)("border-l")).toEqual({borderLeftWidth:1});(0,_vitest.expect)((0,_borders.parseBorder)("border-l-0")).toEqual({borderLeftWidth:0});(0,_vitest.expect)((0,_borders.parseBorder)("border-l-2")).toEqual({borderLeftWidth:2});(0,_vitest.expect)((0,_borders.parseBorder)("border-l-4")).toEqual({borderLeftWidth:4});});(0,_vitest.it)("should parse directional borders with arbitrary values",function(){(0,_vitest.expect)((0,_borders.parseBorder)("border-t-[3px]")).toEqual({borderTopWidth:3});(0,_vitest.expect)((0,_borders.parseBorder)("border-r-[5px]")).toEqual({borderRightWidth:5});(0,_vitest.expect)((0,_borders.parseBorder)("border-b-[7px]")).toEqual({borderBottomWidth:7});(0,_vitest.expect)((0,_borders.parseBorder)("border-l-[9px]")).toEqual({borderLeftWidth:9});});});(0,_vitest.describe)("parseBorder - border style",function(){(0,_vitest.it)("should parse border styles",function(){(0,_vitest.expect)((0,_borders.parseBorder)("border-solid")).toEqual({borderStyle:"solid"});(0,_vitest.expect)((0,_borders.parseBorder)("border-dotted")).toEqual({borderStyle:"dotted"});(0,_vitest.expect)((0,_borders.parseBorder)("border-dashed")).toEqual({borderStyle:"dashed"});});});(0,_vitest.describe)("parseBorder - border radius all corners",function(){(0,_vitest.it)("should parse rounded shorthand",function(){(0,_vitest.expect)((0,_borders.parseBorder)("rounded")).toEqual({borderRadius:4});});(0,_vitest.it)("should parse rounded with preset values",function(){(0,_vitest.expect)((0,_borders.parseBorder)("rounded-none")).toEqual({borderRadius:0});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-sm")).toEqual({borderRadius:2});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-md")).toEqual({borderRadius:6});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-lg")).toEqual({borderRadius:8});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-xl")).toEqual({borderRadius:12});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-2xl")).toEqual({borderRadius:16});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-3xl")).toEqual({borderRadius:24});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-full")).toEqual({borderRadius:9999});});(0,_vitest.it)("should parse rounded with arbitrary pixel values",function(){(0,_vitest.expect)((0,_borders.parseBorder)("rounded-[5px]")).toEqual({borderRadius:5});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-[10px]")).toEqual({borderRadius:10});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-[15]")).toEqual({borderRadius:15});});});(0,_vitest.describe)("parseBorder - border radius sides",function(){(0,_vitest.it)("should parse rounded top",function(){(0,_vitest.expect)((0,_borders.parseBorder)("rounded-t")).toEqual({borderTopLeftRadius:4,borderTopRightRadius:4});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-t-lg")).toEqual({borderTopLeftRadius:8,borderTopRightRadius:8});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-t-[12px]")).toEqual({borderTopLeftRadius:12,borderTopRightRadius:12});});(0,_vitest.it)("should parse rounded right",function(){(0,_vitest.expect)((0,_borders.parseBorder)("rounded-r")).toEqual({borderTopRightRadius:4,borderBottomRightRadius:4});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-r-lg")).toEqual({borderTopRightRadius:8,borderBottomRightRadius:8});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-r-[12px]")).toEqual({borderTopRightRadius:12,borderBottomRightRadius:12});});(0,_vitest.it)("should parse rounded bottom",function(){(0,_vitest.expect)((0,_borders.parseBorder)("rounded-b")).toEqual({borderBottomLeftRadius:4,borderBottomRightRadius:4});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-b-lg")).toEqual({borderBottomLeftRadius:8,borderBottomRightRadius:8});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-b-[12px]")).toEqual({borderBottomLeftRadius:12,borderBottomRightRadius:12});});(0,_vitest.it)("should parse rounded left",function(){(0,_vitest.expect)((0,_borders.parseBorder)("rounded-l")).toEqual({borderTopLeftRadius:4,borderBottomLeftRadius:4});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-l-lg")).toEqual({borderTopLeftRadius:8,borderBottomLeftRadius:8});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-l-[12px]")).toEqual({borderTopLeftRadius:12,borderBottomLeftRadius:12});});});(0,_vitest.describe)("parseBorder - border radius specific corners",function(){(0,_vitest.it)("should parse rounded top-left",function(){(0,_vitest.expect)((0,_borders.parseBorder)("rounded-tl")).toEqual({borderTopLeftRadius:4});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-tl-lg")).toEqual({borderTopLeftRadius:8});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-tl-[12px]")).toEqual({borderTopLeftRadius:12});});(0,_vitest.it)("should parse rounded top-right",function(){(0,_vitest.expect)((0,_borders.parseBorder)("rounded-tr")).toEqual({borderTopRightRadius:4});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-tr-lg")).toEqual({borderTopRightRadius:8});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-tr-[12px]")).toEqual({borderTopRightRadius:12});});(0,_vitest.it)("should parse rounded bottom-left",function(){(0,_vitest.expect)((0,_borders.parseBorder)("rounded-bl")).toEqual({borderBottomLeftRadius:4});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-bl-lg")).toEqual({borderBottomLeftRadius:8});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-bl-[12px]")).toEqual({borderBottomLeftRadius:12});});(0,_vitest.it)("should parse rounded bottom-right",function(){(0,_vitest.expect)((0,_borders.parseBorder)("rounded-br")).toEqual({borderBottomRightRadius:4});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-br-lg")).toEqual({borderBottomRightRadius:8});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-br-[12px]")).toEqual({borderBottomRightRadius:12});});});(0,_vitest.describe)("parseBorder - edge cases",function(){(0,_vitest.it)("should return null for invalid classes",function(){(0,_vitest.expect)((0,_borders.parseBorder)("invalid")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("border-")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("rounded-")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("borders-4")).toBeNull();});(0,_vitest.it)("should return null for invalid border width values",function(){(0,_vitest.expect)((0,_borders.parseBorder)("border-invalid")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("border-3")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("border-16")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("border-t-3")).toBeNull();});(0,_vitest.it)("should return null for invalid border radius values",function(){(0,_vitest.expect)((0,_borders.parseBorder)("rounded-invalid")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("rounded-4xl")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("rounded-t-invalid")).toBeNull();});(0,_vitest.it)("should return null for arbitrary values with unsupported units",function(){(0,_vitest.expect)((0,_borders.parseBorder)("border-[2rem]")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("border-[1em]")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("rounded-[2rem]")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("rounded-[1em]")).toBeNull();});(0,_vitest.it)("should return null for malformed arbitrary values",function(){(0,_vitest.expect)((0,_borders.parseBorder)("border-[8")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("border-8]")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("border-[]")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("rounded-[12")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("rounded-12]")).toBeNull();});(0,_vitest.it)("should handle edge case values",function(){(0,_vitest.expect)((0,_borders.parseBorder)("border-0")).toEqual({borderWidth:0});(0,_vitest.expect)((0,_borders.parseBorder)("border-t-0")).toEqual({borderTopWidth:0});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-none")).toEqual({borderRadius:0});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-full")).toEqual({borderRadius:9999});});(0,_vitest.it)("should not match partial class names",function(){(0,_vitest.expect)((0,_borders.parseBorder)("myborder-4")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("border-solid-extra")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("myrounded-lg")).toBeNull();});});(0,_vitest.describe)("parseBorder - comprehensive coverage",function(){(0,_vitest.it)("should handle all border width directions with same value",function(){(0,_vitest.expect)((0,_borders.parseBorder)("border-2")).toEqual({borderWidth:2});(0,_vitest.expect)((0,_borders.parseBorder)("border-t-2")).toEqual({borderTopWidth:2});(0,_vitest.expect)((0,_borders.parseBorder)("border-r-2")).toEqual({borderRightWidth:2});(0,_vitest.expect)((0,_borders.parseBorder)("border-b-2")).toEqual({borderBottomWidth:2});(0,_vitest.expect)((0,_borders.parseBorder)("border-l-2")).toEqual({borderLeftWidth:2});});(0,_vitest.it)("should handle all border radius types with same value",function(){(0,_vitest.expect)((0,_borders.parseBorder)("rounded-lg")).toEqual({borderRadius:8});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-t-lg")).toEqual({borderTopLeftRadius:8,borderTopRightRadius:8});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-r-lg")).toEqual({borderTopRightRadius:8,borderBottomRightRadius:8});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-b-lg")).toEqual({borderBottomLeftRadius:8,borderBottomRightRadius:8});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-l-lg")).toEqual({borderTopLeftRadius:8,borderBottomLeftRadius:8});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-tl-lg")).toEqual({borderTopLeftRadius:8});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-tr-lg")).toEqual({borderTopRightRadius:8});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-bl-lg")).toEqual({borderBottomLeftRadius:8});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-br-lg")).toEqual({borderBottomRightRadius:8});});(0,_vitest.it)("should handle arbitrary values across all border width types",function(){(0,_vitest.expect)((0,_borders.parseBorder)("border-[5px]")).toEqual({borderWidth:5});(0,_vitest.expect)((0,_borders.parseBorder)("border-t-[5px]")).toEqual({borderTopWidth:5});(0,_vitest.expect)((0,_borders.parseBorder)("border-r-[5px]")).toEqual({borderRightWidth:5});(0,_vitest.expect)((0,_borders.parseBorder)("border-b-[5px]")).toEqual({borderBottomWidth:5});(0,_vitest.expect)((0,_borders.parseBorder)("border-l-[5px]")).toEqual({borderLeftWidth:5});});(0,_vitest.it)("should handle arbitrary values across all border radius types",function(){(0,_vitest.expect)((0,_borders.parseBorder)("rounded-[10px]")).toEqual({borderRadius:10});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-t-[10px]")).toEqual({borderTopLeftRadius:10,borderTopRightRadius:10});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-tl-[10px]")).toEqual({borderTopLeftRadius:10});});(0,_vitest.it)("should handle all border styles",function(){(0,_vitest.expect)((0,_borders.parseBorder)("border-solid")).toEqual({borderStyle:"solid"});(0,_vitest.expect)((0,_borders.parseBorder)("border-dotted")).toEqual({borderStyle:"dotted"});(0,_vitest.expect)((0,_borders.parseBorder)("border-dashed")).toEqual({borderStyle:"dashed"});});(0,_vitest.it)("should handle shorthand classes correctly",function(){(0,_vitest.expect)((0,_borders.parseBorder)("border")).toEqual({borderWidth:1});(0,_vitest.expect)((0,_borders.parseBorder)("rounded")).toEqual({borderRadius:4});(0,_vitest.expect)((0,_borders.parseBorder)("border-t")).toEqual({borderTopWidth:1});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-t")).toEqual({borderTopLeftRadius:4,borderTopRightRadius:4});});});(0,_vitest.describe)("parseBorder - color pattern detection",function(){(0,_vitest.it)("should return null for directional border colors with preset values",function(){(0,_vitest.expect)((0,_borders.parseBorder)("border-t-red-500")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("border-r-blue-500")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("border-b-green-500")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("border-l-yellow-500")).toBeNull();});(0,_vitest.it)("should return null for directional border colors with basic values",function(){(0,_vitest.expect)((0,_borders.parseBorder)("border-t-white")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("border-r-black")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("border-b-transparent")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("border-l-white")).toBeNull();});(0,_vitest.it)("should return null for directional border colors with arbitrary hex values",function(){(0,_vitest.expect)((0,_borders.parseBorder)("border-t-[#ff0000]")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("border-r-[#3B82F6]")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("border-b-[#abc]")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("border-l-[#00FF00AA]")).toBeNull();});(0,_vitest.it)("should return null for directional border colors with opacity",function(){(0,_vitest.expect)((0,_borders.parseBorder)("border-t-red-500/50")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("border-r-blue-500/80")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("border-b-[#ff0000]/60")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("border-l-black/25")).toBeNull();});(0,_vitest.it)("should return null for directional border colors with custom colors",function(){(0,_vitest.expect)((0,_borders.parseBorder)("border-t-brand-primary")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("border-r-accent")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("border-b-brand-secondary")).toBeNull();(0,_vitest.expect)((0,_borders.parseBorder)("border-l-custom")).toBeNull();});(0,_vitest.it)("should still handle directional border widths correctly",function(){(0,_vitest.expect)((0,_borders.parseBorder)("border-t-2")).toEqual({borderTopWidth:2});(0,_vitest.expect)((0,_borders.parseBorder)("border-r-4")).toEqual({borderRightWidth:4});(0,_vitest.expect)((0,_borders.parseBorder)("border-b-8")).toEqual({borderBottomWidth:8});(0,_vitest.expect)((0,_borders.parseBorder)("border-l-0")).toEqual({borderLeftWidth:0});});(0,_vitest.it)("should still handle directional border width arbitrary values",function(){(0,_vitest.expect)((0,_borders.parseBorder)("border-t-[3px]")).toEqual({borderTopWidth:3});(0,_vitest.expect)((0,_borders.parseBorder)("border-r-[5px]")).toEqual({borderRightWidth:5});(0,_vitest.expect)((0,_borders.parseBorder)("border-b-[10]")).toEqual({borderBottomWidth:10});(0,_vitest.expect)((0,_borders.parseBorder)("border-l-[8px]")).toEqual({borderLeftWidth:8});});});(0,_vitest.describe)("parseBorder - logical border width (RTL-aware)",function(){(0,_vitest.it)("should parse border start width",function(){(0,_vitest.expect)((0,_borders.parseBorder)("border-s")).toEqual({borderStartWidth:1});(0,_vitest.expect)((0,_borders.parseBorder)("border-s-0")).toEqual({borderStartWidth:0});(0,_vitest.expect)((0,_borders.parseBorder)("border-s-2")).toEqual({borderStartWidth:2});(0,_vitest.expect)((0,_borders.parseBorder)("border-s-4")).toEqual({borderStartWidth:4});(0,_vitest.expect)((0,_borders.parseBorder)("border-s-8")).toEqual({borderStartWidth:8});});(0,_vitest.it)("should parse border end width",function(){(0,_vitest.expect)((0,_borders.parseBorder)("border-e")).toEqual({borderEndWidth:1});(0,_vitest.expect)((0,_borders.parseBorder)("border-e-0")).toEqual({borderEndWidth:0});(0,_vitest.expect)((0,_borders.parseBorder)("border-e-2")).toEqual({borderEndWidth:2});(0,_vitest.expect)((0,_borders.parseBorder)("border-e-4")).toEqual({borderEndWidth:4});(0,_vitest.expect)((0,_borders.parseBorder)("border-e-8")).toEqual({borderEndWidth:8});});(0,_vitest.it)("should parse border start/end with arbitrary values",function(){(0,_vitest.expect)((0,_borders.parseBorder)("border-s-[3px]")).toEqual({borderStartWidth:3});(0,_vitest.expect)((0,_borders.parseBorder)("border-s-[5]")).toEqual({borderStartWidth:5});(0,_vitest.expect)((0,_borders.parseBorder)("border-e-[3px]")).toEqual({borderEndWidth:3});(0,_vitest.expect)((0,_borders.parseBorder)("border-e-[5]")).toEqual({borderEndWidth:5});});});(0,_vitest.describe)("parseBorder - logical border radius sides (RTL-aware)",function(){(0,_vitest.it)("should parse rounded start (both top and bottom start corners)",function(){(0,_vitest.expect)((0,_borders.parseBorder)("rounded-s")).toEqual({borderTopStartRadius:4,borderBottomStartRadius:4});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-s-lg")).toEqual({borderTopStartRadius:8,borderBottomStartRadius:8});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-s-[12px]")).toEqual({borderTopStartRadius:12,borderBottomStartRadius:12});});(0,_vitest.it)("should parse rounded end (both top and bottom end corners)",function(){(0,_vitest.expect)((0,_borders.parseBorder)("rounded-e")).toEqual({borderTopEndRadius:4,borderBottomEndRadius:4});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-e-lg")).toEqual({borderTopEndRadius:8,borderBottomEndRadius:8});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-e-[12px]")).toEqual({borderTopEndRadius:12,borderBottomEndRadius:12});});});(0,_vitest.describe)("parseBorder - logical border radius corners (RTL-aware)",function(){(0,_vitest.it)("should parse rounded start-start (top-start corner)",function(){(0,_vitest.expect)((0,_borders.parseBorder)("rounded-ss")).toEqual({borderTopStartRadius:4});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-ss-lg")).toEqual({borderTopStartRadius:8});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-ss-[12px]")).toEqual({borderTopStartRadius:12});});(0,_vitest.it)("should parse rounded start-end (top-end corner)",function(){(0,_vitest.expect)((0,_borders.parseBorder)("rounded-se")).toEqual({borderTopEndRadius:4});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-se-lg")).toEqual({borderTopEndRadius:8});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-se-[12px]")).toEqual({borderTopEndRadius:12});});(0,_vitest.it)("should parse rounded end-start (bottom-start corner)",function(){(0,_vitest.expect)((0,_borders.parseBorder)("rounded-es")).toEqual({borderBottomStartRadius:4});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-es-lg")).toEqual({borderBottomStartRadius:8});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-es-[12px]")).toEqual({borderBottomStartRadius:12});});(0,_vitest.it)("should parse rounded end-end (bottom-end corner)",function(){(0,_vitest.expect)((0,_borders.parseBorder)("rounded-ee")).toEqual({borderBottomEndRadius:4});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-ee-lg")).toEqual({borderBottomEndRadius:8});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-ee-[12px]")).toEqual({borderBottomEndRadius:12});});(0,_vitest.it)("should parse all logical corners with different sizes",function(){(0,_vitest.expect)((0,_borders.parseBorder)("rounded-ss-none")).toEqual({borderTopStartRadius:0});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-se-sm")).toEqual({borderTopEndRadius:2});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-es-md")).toEqual({borderBottomStartRadius:6});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-ee-xl")).toEqual({borderBottomEndRadius:12});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-ss-2xl")).toEqual({borderTopStartRadius:16});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-se-3xl")).toEqual({borderTopEndRadius:24});(0,_vitest.expect)((0,_borders.parseBorder)("rounded-es-full")).toEqual({borderBottomStartRadius:9999});});});
|
package/dist/parser/colors.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,"__esModule",{value:true});exports.COLORS=void 0;exports.parseColor=parseColor;var _tailwind=require("../config/tailwind");var _flattenColors=require("../utils/flattenColors");var COLORS=exports.COLORS=Object.assign({},(0,_flattenColors.flattenColors)(_tailwind.TAILWIND_COLORS),{white:"#FFFFFF",black:"#000000",transparent:"transparent"});function applyOpacity(hex,opacity){if(hex==="transparent"){return"transparent";}var cleanHex=hex.replace(/^#/,"");var fullHex=cleanHex.length===3?cleanHex.split("").map(function(char){return char+char;}).join(""):cleanHex;var alpha=Math.round(opacity/100*255);var alphaHex=alpha.toString(16).padStart(2,"0").toUpperCase();return`#${fullHex.toUpperCase()}${alphaHex}`;}function parseArbitraryColor(value){var hexMatch=value.match(/^\[#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})\]$/);if(hexMatch){var hex=hexMatch[1];if(hex.length===3){var expanded=hex.split("").map(function(char){return char+char;}).join("");return`#${expanded}`;}return`#${hex}`;}if(value.startsWith("[")&&value.endsWith("]")){if(process.env.NODE_ENV!=="production"){console.warn(`[react-native-tailwind] Unsupported arbitrary color value: ${value}. Only hex colors are supported (e.g., [#ff0000], [#f00], or [#ff0000aa]).`);}return null;}return null;}function parseColor(cls,customColors){var getColor=function getColor(key){var _customColors$key;return(_customColors$key=customColors==null?void 0:customColors[key])!=null?_customColors$key:COLORS[key];};var parseColorWithOpacity=function parseColorWithOpacity(colorKey){var _getColor;var opacityMatch=colorKey.match(/^(.+)\/(\d+)$/);if(opacityMatch){var baseColorKey=opacityMatch[1];var opacity=Number.parseInt(opacityMatch[2],10);if(opacity<0||opacity>100){if(process.env.NODE_ENV!=="production"){console.warn(`[react-native-tailwind] Invalid opacity value: ${opacity}. Opacity must be between 0 and 100.`);}return null;}var _arbitraryColor=parseArbitraryColor(baseColorKey);if(_arbitraryColor!==null){return applyOpacity(_arbitraryColor,opacity);}var color=getColor(baseColorKey);if(color){return applyOpacity(color,opacity);}return null;}var arbitraryColor=parseArbitraryColor(colorKey);if(arbitraryColor!==null){return arbitraryColor;}return(_getColor=getColor(colorKey))!=null?_getColor:null;};if(cls.startsWith("bg-")){var colorKey=cls.substring(3);if(colorKey.startsWith("[")&&!colorKey.startsWith("[#")){return null;}var color=parseColorWithOpacity(colorKey);if(color){return{backgroundColor:color};}}if(cls.startsWith("text-")){var _colorKey=cls.substring(5);if(_colorKey.startsWith("[")&&!_colorKey.startsWith("[#")){return null;}var _color=parseColorWithOpacity(_colorKey);if(_color){return{color:_color};}}if(cls.startsWith("border-")&&!cls.match(/^border-[0-9]/)){var _colorKey2=cls.substring(7);if(_colorKey2.startsWith("[")&&!_colorKey2.startsWith("[#")){return null;}var _color2=parseColorWithOpacity(_colorKey2);if(_color2){return{borderColor:_color2};}}return null;}
|
|
1
|
+
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.COLORS=void 0;exports.parseColor=parseColor;var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));var _tailwind=require("../config/tailwind");var _flattenColors=require("../utils/flattenColors");var COLORS=exports.COLORS=Object.assign({},(0,_flattenColors.flattenColors)(_tailwind.TAILWIND_COLORS),{white:"#FFFFFF",black:"#000000",transparent:"transparent"});function applyOpacity(hex,opacity){if(hex==="transparent"){return"transparent";}var cleanHex=hex.replace(/^#/,"");var fullHex=cleanHex.length===3?cleanHex.split("").map(function(char){return char+char;}).join(""):cleanHex;var alpha=Math.round(opacity/100*255);var alphaHex=alpha.toString(16).padStart(2,"0").toUpperCase();return`#${fullHex.toUpperCase()}${alphaHex}`;}function parseArbitraryColor(value){var hexMatch=value.match(/^\[#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})\]$/);if(hexMatch){var hex=hexMatch[1];if(hex.length===3){var expanded=hex.split("").map(function(char){return char+char;}).join("");return`#${expanded}`;}return`#${hex}`;}if(value.startsWith("[")&&value.endsWith("]")){if(process.env.NODE_ENV!=="production"){console.warn(`[react-native-tailwind] Unsupported arbitrary color value: ${value}. Only hex colors are supported (e.g., [#ff0000], [#f00], or [#ff0000aa]).`);}return null;}return null;}function parseColor(cls,customColors){var getColor=function getColor(key){var _customColors$key;return(_customColors$key=customColors==null?void 0:customColors[key])!=null?_customColors$key:COLORS[key];};var parseColorWithOpacity=function parseColorWithOpacity(colorKey){var _getColor;var opacityMatch=colorKey.match(/^(.+)\/(\d+)$/);if(opacityMatch){var baseColorKey=opacityMatch[1];var opacity=Number.parseInt(opacityMatch[2],10);if(opacity<0||opacity>100){if(process.env.NODE_ENV!=="production"){console.warn(`[react-native-tailwind] Invalid opacity value: ${opacity}. Opacity must be between 0 and 100.`);}return null;}var _arbitraryColor=parseArbitraryColor(baseColorKey);if(_arbitraryColor!==null){return applyOpacity(_arbitraryColor,opacity);}var color=getColor(baseColorKey);if(color){return applyOpacity(color,opacity);}return null;}var arbitraryColor=parseArbitraryColor(colorKey);if(arbitraryColor!==null){return arbitraryColor;}return(_getColor=getColor(colorKey))!=null?_getColor:null;};if(cls.startsWith("bg-")){var colorKey=cls.substring(3);if(colorKey.startsWith("[")&&!colorKey.startsWith("[#")){return null;}var color=parseColorWithOpacity(colorKey);if(color){return{backgroundColor:color};}}if(cls.startsWith("text-")){var _colorKey=cls.substring(5);if(_colorKey.startsWith("[")&&!_colorKey.startsWith("[#")){return null;}var _color=parseColorWithOpacity(_colorKey);if(_color){return{color:_color};}}if(cls.startsWith("border-")&&!cls.match(/^border-[0-9]/)){var _colorKey2=cls.substring(7);if(_colorKey2.startsWith("[")&&!_colorKey2.startsWith("[#")){return null;}var _color2=parseColorWithOpacity(_colorKey2);if(_color2){return{borderColor:_color2};}}var dirBorderMatch=cls.match(/^border-([trblxy])-(.+)$/);if(dirBorderMatch){var dir=dirBorderMatch[1];var _colorKey3=dirBorderMatch[2];if(_colorKey3.startsWith("[")&&!_colorKey3.startsWith("[#")){return null;}var _color3=parseColorWithOpacity(_colorKey3);if(_color3){if(dir==="x"){return{borderLeftColor:_color3,borderRightColor:_color3};}if(dir==="y"){return{borderTopColor:_color3,borderBottomColor:_color3};}var propMap={t:"borderTopColor",r:"borderRightColor",b:"borderBottomColor",l:"borderLeftColor"};return(0,_defineProperty2.default)({},propMap[dir],_color3);}}return null;}
|