diff --git a/src/styled.tsx b/src/styled.tsx index d39663d..239f588 100644 --- a/src/styled.tsx +++ b/src/styled.tsx @@ -47,6 +47,7 @@ export function styled

( hover, focus, active, + flatten: false, [ChildClassNameSymbol]: inheritedClassName, })(classes); @@ -75,7 +76,7 @@ export function styled

( children, } as unknown as P); - return !classes.includes("component") + return !classes.split(/\s+/).includes("component") ? element : createElement>( ComponentContext.Provider, diff --git a/src/use-tailwind.native.ts b/src/use-tailwind.native.ts index 8d4b610..49873cd 100644 --- a/src/use-tailwind.native.ts +++ b/src/use-tailwind.native.ts @@ -1,12 +1,5 @@ import { useContext, useState } from "react"; -import { - TextStyle, - ViewStyle, - StyleSheet, - ImageStyle, - Platform, -} from "react-native"; -/* eslint-disable @typescript-eslint/no-explicit-any */ +import { TextStyle, ViewStyle, StyleSheet, ImageStyle } from "react-native"; import { match } from "css-mediaquery"; import { normaliseSelector } from "./shared/selector"; import { ComponentContext, TailwindContext } from "./context"; @@ -42,6 +35,7 @@ export function useTailwind

({ hover, focus, active, + flatten = true, [ChildClassNameSymbol]: inheritedClassNames = "", nthChild: initialNthChild = 0, }: UseTailwindOptions = {}) { @@ -56,7 +50,7 @@ export function useTailwind

({ assertPlatform(platform); return (className = "") => { - const tailwindStyles = {} as WithChildClassNameSymbol

; + const tailwindStyles = [] as WithChildClassNameSymbol; const transforms: ViewStyle["transform"] = []; const childClassNameSet = new Set(); nthChild++; @@ -142,7 +136,7 @@ export function useTailwind

({ const { transform, ...rest } = styleRecord; if (styles) { - Object.assign(tailwindStyles, rest); + tailwindStyles.push(rest as P); } if (transform) { @@ -153,16 +147,14 @@ export function useTailwind

({ if (transforms.length > 0) { // eslint-disable-next-line @typescript-eslint/no-explicit-any - (tailwindStyles as any).transform = transforms; + tailwindStyles.push({ transform: transforms } as any); } if (childClassNameSet.size > 0) { tailwindStyles[ChildClassNameSymbol] = [...childClassNameSet].join(" "); } - return Platform.OS === "web" - ? StyleSheet.flatten(tailwindStyles) // RNW <=0.17 still uses ReactNativePropRegistry - : tailwindStyles; + return flatten ? StyleSheet.flatten(tailwindStyles) : tailwindStyles; }; } diff --git a/src/use-tailwind.ts b/src/use-tailwind.ts index 93733c2..98cfe3a 100644 --- a/src/use-tailwind.ts +++ b/src/use-tailwind.ts @@ -14,6 +14,7 @@ export type UseTailwindCallback

= (className?: string) => StyleProp

& }; export interface UseTailwindOptions { + flatten?: boolean; nthChild?: number; hover?: boolean; focus?: boolean;