diff --git a/src/runtime/native/injection.ts b/src/runtime/native/injection.ts index d5a3c259..24a3f03e 100644 --- a/src/runtime/native/injection.ts +++ b/src/runtime/native/injection.ts @@ -7,9 +7,9 @@ import { family, observable, observableBatch, - rootVariables, type Observable, } from "./reactivity"; +import { rootVariables } from "./root"; export function StyleCollection() { return null; diff --git a/src/runtime/native/reactivity.ts b/src/runtime/native/reactivity.ts index c80154ae..cd2b8700 100644 --- a/src/runtime/native/reactivity.ts +++ b/src/runtime/native/reactivity.ts @@ -7,8 +7,7 @@ import { type LayoutRectangle, } from "react-native"; -import type { StyleDescriptor, VariableValue } from "../../compiler"; -import { testMediaQuery } from "./conditions/media-query"; +import type { StyleDescriptor } from "../../compiler"; export type Effect = { observers: Set; @@ -190,33 +189,6 @@ export const VariableContext = createContext({ [VAR_SYMBOL]: true, }); -const rootVariableFamily = () => { - return family>(() => { - const obs = observable( - (read, variableValue) => { - if (!variableValue) return undefined; - - for (const [value, mediaQuery] of variableValue) { - if (!mediaQuery) { - return value; - } - - if (testMediaQuery(mediaQuery, read)) { - return value; - } - } - - return undefined; - }, - ); - - return obs; - }); -}; - -export const rootVariables = rootVariableFamily(); -export const universalVariables = rootVariableFamily(); - /** Units *********************************************************************/ export const rem = observable(14); diff --git a/src/runtime/native/root.ts b/src/runtime/native/root.ts new file mode 100644 index 00000000..60567656 --- /dev/null +++ b/src/runtime/native/root.ts @@ -0,0 +1,31 @@ +import type { StyleDescriptor, VariableValue } from "react-native-css/compiler"; + +import { testMediaQuery } from "./conditions/media-query"; +import { family, observable, type Observable } from "./reactivity"; + +const rootVariableFamily = () => { + return family>(() => { + const obs = observable( + (read, variableValue) => { + if (!variableValue) return undefined; + + for (const [value, mediaQuery] of variableValue) { + if (!mediaQuery) { + return value; + } + + if (testMediaQuery(mediaQuery, read)) { + return value; + } + } + + return undefined; + }, + ); + + return obs; + }); +}; + +export const rootVariables = rootVariableFamily(); +export const universalVariables = rootVariableFamily(); diff --git a/src/runtime/native/styles/variables.ts b/src/runtime/native/styles/variables.ts index 346cfe4d..9caa523e 100644 --- a/src/runtime/native/styles/variables.ts +++ b/src/runtime/native/styles/variables.ts @@ -1,11 +1,7 @@ import type { StyleDescriptor, StyleFunction } from "../../../compiler"; import { isStyleDescriptorArray } from "../../utils"; -import { - rootVariables, - universalVariables, - VAR_SYMBOL, - type Getter, -} from "../reactivity"; +import { VAR_SYMBOL, type Getter } from "../reactivity"; +import { rootVariables, universalVariables } from "../root"; import type { ResolveValueOptions, SimpleResolveValue } from "./resolve"; export function varResolver(