Skip to content

Commit fb0d949

Browse files
committed
feat: support platform vars
1 parent a211f97 commit fb0d949

3 files changed

Lines changed: 17 additions & 2 deletions

File tree

packages/uniwind/specs/utils.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,9 @@ export const injectMocks = () => {
6161
StyleSheet: {
6262
hairlineWidth: 1,
6363
},
64+
Platform: {
65+
OS: 'ios',
66+
},
6467
}))
6568
// @ts-expect-error Mock __DEV__
6669
globalThis.__DEV__ = true

packages/uniwind/src/core/native/store.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Dimensions } from 'react-native'
1+
import { Dimensions, Platform } from 'react-native'
22
import { Orientation, StyleDependency } from '../../types'
33
import { ComponentState, RNStyle, Style, StyleSheets } from '../types'
44
import { parseBoxShadow, parseFontVariant, parseTransformsMutation, resolveGradient } from './parsers'
@@ -141,11 +141,16 @@ export class UniwindStoreBuilder {
141141
if (usingVariables.size > 0) {
142142
const styleSheet = globalThis.__uniwind__computeStylesheet(this.runtime)
143143
const themeVars = styleSheet[`__uniwind-theme-${this.runtime.currentThemeName}`]
144+
const platformVars = styleSheet[`__uniwind-platform-${Platform.OS}`]
144145

145146
if (themeVars) {
146147
Object.assign(styleSheet, themeVars)
147148
}
148149

150+
if (platformVars) {
151+
Object.assign(styleSheet, platformVars)
152+
}
153+
149154
inlineVariables.forEach((varValue, varName) => {
150155
Object.defineProperty(styleSheet, varName, {
151156
get: varValue,

packages/uniwind/src/metro/processor/processor.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,19 @@ export class ProcessorBuilder {
5353

5454
private addDeclaration(declaration: Declaration, important = false) {
5555
const isVar = this.declarationConfig.root || this.declarationConfig.className === null
56+
const mq = this.MQ.processMediaQueries(this.declarationConfig.mediaQueries)
5657
const style = (() => {
5758
if (!isVar) {
5859
return this.stylesheets[this.declarationConfig.className!]?.at(-1)
5960
}
6061

62+
if (mq.platform !== null) {
63+
const platformKey = `__uniwind-platform-${mq.platform}`
64+
this.vars[platformKey] ??= {}
65+
66+
return this.vars[platformKey]
67+
}
68+
6169
if (this.declarationConfig.theme === null) {
6270
return this.vars
6371
}
@@ -67,7 +75,6 @@ export class ProcessorBuilder {
6775

6876
return this.vars[themeKey]
6977
})()
70-
const mq = this.MQ.processMediaQueries(this.declarationConfig.mediaQueries)
7178

7279
if (!isVar) {
7380
Object.assign(style, mq)

0 commit comments

Comments
 (0)