react-native-unistyles 3.0.0-nightly-20250617 → 3.0.0-nightly-20250626
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 +4 -4
- package/android/build.gradle +1 -1
- package/android/src/main/java/com/unistyles/NativePlatform+android.kt +1 -0
- package/android/src/main/java/com/unistyles/NativePlatform+insets.kt +20 -10
- package/cxx/hybridObjects/HybridUnistylesRuntime.cpp +9 -2
- package/lib/commonjs/components/AdaptiveTheme.js +1 -1
- package/lib/commonjs/components/AdaptiveTheme.js.map +1 -1
- package/lib/commonjs/components/NamedTheme.js +1 -1
- package/lib/commonjs/components/NamedTheme.js.map +1 -1
- package/lib/commonjs/components/ScopedTheme.js +23 -18
- package/lib/commonjs/components/ScopedTheme.js.map +1 -1
- package/lib/commonjs/core/createUnistylesElement.js +2 -2
- package/lib/commonjs/core/createUnistylesElement.js.map +1 -1
- package/lib/commonjs/core/useProxifiedUnistyles/listener.js +1 -1
- package/lib/commonjs/core/useProxifiedUnistyles/listener.js.map +1 -1
- package/lib/commonjs/core/useProxifiedUnistyles/listener.native.js +2 -1
- package/lib/commonjs/core/useProxifiedUnistyles/listener.native.js.map +1 -1
- package/lib/commonjs/core/useProxifiedUnistyles/useProxifiedUnistyles.js +14 -2
- package/lib/commonjs/core/useProxifiedUnistyles/useProxifiedUnistyles.js.map +1 -1
- package/lib/commonjs/web/convert/object/boxShadow.js.map +1 -1
- package/lib/commonjs/web/convert/utils.js +1 -0
- package/lib/commonjs/web/convert/utils.js.map +1 -1
- package/lib/commonjs/web/listener.js +2 -2
- package/lib/commonjs/web/listener.js.map +1 -1
- package/lib/commonjs/web/runtime.js +5 -0
- package/lib/commonjs/web/runtime.js.map +1 -1
- package/lib/module/components/AdaptiveTheme.js +1 -1
- package/lib/module/components/AdaptiveTheme.js.map +1 -1
- package/lib/module/components/NamedTheme.js +1 -1
- package/lib/module/components/NamedTheme.js.map +1 -1
- package/lib/module/components/ScopedTheme.js +23 -18
- package/lib/module/components/ScopedTheme.js.map +1 -1
- package/lib/module/core/createUnistylesElement.js +2 -2
- package/lib/module/core/createUnistylesElement.js.map +1 -1
- package/lib/module/core/useProxifiedUnistyles/listener.js +1 -1
- package/lib/module/core/useProxifiedUnistyles/listener.js.map +1 -1
- package/lib/module/core/useProxifiedUnistyles/listener.native.js +2 -1
- package/lib/module/core/useProxifiedUnistyles/listener.native.js.map +1 -1
- package/lib/module/core/useProxifiedUnistyles/useProxifiedUnistyles.js +14 -2
- package/lib/module/core/useProxifiedUnistyles/useProxifiedUnistyles.js.map +1 -1
- package/lib/module/web/convert/object/boxShadow.js.map +1 -1
- package/lib/module/web/convert/utils.js +1 -0
- package/lib/module/web/convert/utils.js.map +1 -1
- package/lib/module/web/listener.js +2 -2
- package/lib/module/web/listener.js.map +1 -1
- package/lib/module/web/runtime.js +5 -0
- package/lib/module/web/runtime.js.map +1 -1
- package/lib/typescript/src/components/NamedTheme.d.ts +1 -1
- package/lib/typescript/src/components/NamedTheme.d.ts.map +1 -1
- package/lib/typescript/src/components/ScopedTheme.d.ts +9 -3
- package/lib/typescript/src/components/ScopedTheme.d.ts.map +1 -1
- package/lib/typescript/src/core/createUnistylesElement.d.ts.map +1 -1
- package/lib/typescript/src/core/useProxifiedUnistyles/listener.native.d.ts.map +1 -1
- package/lib/typescript/src/core/useProxifiedUnistyles/types.d.ts +1 -1
- package/lib/typescript/src/core/useProxifiedUnistyles/types.d.ts.map +1 -1
- package/lib/typescript/src/core/useProxifiedUnistyles/useProxifiedUnistyles.d.ts.map +1 -1
- package/lib/typescript/src/web/convert/utils.d.ts.map +1 -1
- package/lib/typescript/src/web/listener.d.ts +4 -2
- package/lib/typescript/src/web/listener.d.ts.map +1 -1
- package/lib/typescript/src/web/runtime.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/AdaptiveTheme.tsx +1 -1
- package/src/components/NamedTheme.tsx +2 -2
- package/src/components/ScopedTheme.tsx +39 -32
- package/src/core/createUnistylesElement.tsx +5 -3
- package/src/core/useProxifiedUnistyles/listener.native.ts +3 -1
- package/src/core/useProxifiedUnistyles/listener.ts +1 -1
- package/src/core/useProxifiedUnistyles/types.ts +1 -1
- package/src/core/useProxifiedUnistyles/useProxifiedUnistyles.ts +19 -2
- package/src/web/convert/object/boxShadow.ts +2 -2
- package/src/web/convert/utils.ts +2 -1
- package/src/web/listener.ts +8 -6
- package/src/web/runtime.ts +7 -0
|
@@ -10,7 +10,9 @@ export const listener = ({ dependencies, updateTheme, updateRuntime }: ListenerP
|
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
if (changedDependencies.some((dependency: UnistyleDependency) => dependencies.includes(dependency))) {
|
|
13
|
-
|
|
13
|
+
const hasThemeNameChange = changedDependencies.includes(UnistyleDependency.ThemeName)
|
|
14
|
+
|
|
15
|
+
updateRuntime(hasThemeNameChange)
|
|
14
16
|
}
|
|
15
17
|
})
|
|
16
18
|
|
|
@@ -4,7 +4,7 @@ import type { ListenerProps } from './types'
|
|
|
4
4
|
|
|
5
5
|
export const listener = ({ dependencies, updateTheme, updateRuntime }: ListenerProps) => {
|
|
6
6
|
const disposeTheme = unistyles.services.listener.addListeners(dependencies.filter(dependency => dependency === UnistyleDependency.Theme), updateTheme)
|
|
7
|
-
const disposeRuntime = unistyles.services.listener.addListeners(dependencies.filter(dependency => dependency !== UnistyleDependency.Theme), updateRuntime)
|
|
7
|
+
const disposeRuntime = unistyles.services.listener.addListeners(dependencies.filter(dependency => dependency !== UnistyleDependency.Theme), dependency => updateRuntime(dependency === UnistyleDependency.ThemeName))
|
|
8
8
|
|
|
9
9
|
return () => {
|
|
10
10
|
disposeTheme()
|
|
@@ -28,7 +28,7 @@ const RTDependencyMap = {
|
|
|
28
28
|
} satisfies Partial<Record<keyof UnistylesMiniRuntime, UnistyleDependency>>
|
|
29
29
|
|
|
30
30
|
export const useProxifiedUnistyles = (forcedTheme?: UnistylesTheme) => {
|
|
31
|
-
const scopedTheme = forcedTheme ?? UnistylesShadowRegistry.getScopedTheme() as UnistylesTheme
|
|
31
|
+
const [scopedTheme, setScopedTheme] = useState(forcedTheme ?? UnistylesShadowRegistry.getScopedTheme() as UnistylesTheme)
|
|
32
32
|
const [dependencies] = useState(() => new Set<number>())
|
|
33
33
|
const [theme, setTheme] = useState(UnistylesRuntime.getTheme(scopedTheme))
|
|
34
34
|
const [_, runtimeChanged] = useReducer(() => ({}), {})
|
|
@@ -45,7 +45,13 @@ export const useProxifiedUnistyles = (forcedTheme?: UnistylesTheme) => {
|
|
|
45
45
|
|
|
46
46
|
setTheme(UnistylesRuntime.getTheme(scopedTheme))
|
|
47
47
|
},
|
|
48
|
-
updateRuntime: () =>
|
|
48
|
+
updateRuntime: (hasThemeNameChange: boolean) => {
|
|
49
|
+
if (hasThemeNameChange && scopedTheme) {
|
|
50
|
+
return
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
runtimeChanged()
|
|
54
|
+
}
|
|
49
55
|
})
|
|
50
56
|
}
|
|
51
57
|
|
|
@@ -55,6 +61,13 @@ export const useProxifiedUnistyles = (forcedTheme?: UnistylesTheme) => {
|
|
|
55
61
|
return () => disposeRef.current?.()
|
|
56
62
|
}, [dependencies.size])
|
|
57
63
|
|
|
64
|
+
|
|
65
|
+
const maybeNewScopedTheme = UnistylesShadowRegistry.getScopedTheme() as UnistylesTheme
|
|
66
|
+
|
|
67
|
+
if (scopedTheme && maybeNewScopedTheme && scopedTheme !== maybeNewScopedTheme) {
|
|
68
|
+
setScopedTheme(maybeNewScopedTheme)
|
|
69
|
+
}
|
|
70
|
+
|
|
58
71
|
const proxifiedTheme = new Proxy(theme, {
|
|
59
72
|
get: (target, prop) => {
|
|
60
73
|
dependencies.add(UnistyleDependency.Theme)
|
|
@@ -84,6 +97,10 @@ export const useProxifiedUnistyles = (forcedTheme?: UnistylesTheme) => {
|
|
|
84
97
|
dependencies.add(RTDependencyMap[prop as keyof typeof RTDependencyMap])
|
|
85
98
|
}
|
|
86
99
|
|
|
100
|
+
if (prop === 'themeName' && scopedTheme) {
|
|
101
|
+
return scopedTheme
|
|
102
|
+
}
|
|
103
|
+
|
|
87
104
|
return target[prop as keyof typeof target]
|
|
88
105
|
}
|
|
89
106
|
})
|
|
@@ -25,7 +25,7 @@ export const getBoxShadow = (boxShadow: Array<BoxShadowValue>) => {
|
|
|
25
25
|
const boxShadowStyle = Object.fromEntries(boxShadow.map(shadow => {
|
|
26
26
|
const [key] = Object.keys(shadow)
|
|
27
27
|
return [key, shadow[key as keyof BoxShadowValue]]
|
|
28
|
-
}))
|
|
28
|
+
})) as BoxShadowValue
|
|
29
29
|
|
|
30
30
|
return {
|
|
31
31
|
boxShadow: createBoxShadowValue(boxShadowStyle)
|
|
@@ -42,7 +42,7 @@ export const getBoxShadow = (boxShadow: Array<BoxShadowValue>) => {
|
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
return [key, value]
|
|
45
|
-
}))
|
|
45
|
+
})) as BoxShadowValue
|
|
46
46
|
|
|
47
47
|
return {
|
|
48
48
|
[breakpoint]: {
|
package/src/web/convert/utils.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// based on react-native-web normalizer
|
|
2
2
|
// https://github.com/necolas/react-native-web
|
|
3
|
+
/// <reference path="module.d.ts" />
|
|
3
4
|
import normalizeColors from '@react-native/normalize-colors'
|
|
4
5
|
import type { BoxShadowValue } from 'react-native'
|
|
5
6
|
import type { TransformStyles } from '../../types/core'
|
|
@@ -30,7 +31,7 @@ export const normalizeColor = (color: string, opacity = 1) => {
|
|
|
30
31
|
return color
|
|
31
32
|
}
|
|
32
33
|
|
|
33
|
-
const hex = integer.toString(16).padStart(8, '0')
|
|
34
|
+
const hex = integer.toString(16).padStart(8, '0') as string
|
|
34
35
|
|
|
35
36
|
if (hex.length === 8) {
|
|
36
37
|
const [r = 0, g = 0, b = 0, a = 1] = hex
|
package/src/web/listener.ts
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
import { UnistyleDependency } from '../specs/NativePlatform'
|
|
2
2
|
import type { UnistylesServices } from './types'
|
|
3
3
|
|
|
4
|
+
type Listener = (dependency: UnistyleDependency) => void
|
|
5
|
+
|
|
4
6
|
export class UnistylesListener {
|
|
5
7
|
private isInitialized = false
|
|
6
|
-
private listeners = Array.from({ length: Object.keys(UnistyleDependency).length / 2 }, () => new Set<
|
|
7
|
-
private stylesheetListeners = Array.from({ length: Object.keys(UnistyleDependency).length / 2 }, () => new Set<
|
|
8
|
+
private listeners = Array.from({ length: Object.keys(UnistyleDependency).length / 2 }, () => new Set<Listener>())
|
|
9
|
+
private stylesheetListeners = Array.from({ length: Object.keys(UnistyleDependency).length / 2 }, () => new Set<Listener>())
|
|
8
10
|
|
|
9
11
|
constructor(private services: UnistylesServices) {}
|
|
10
12
|
|
|
11
13
|
emitChange = (dependency: UnistyleDependency) => {
|
|
12
|
-
this.stylesheetListeners[dependency]?.forEach(listener => listener())
|
|
13
|
-
this.listeners[dependency]?.forEach(listener => listener())
|
|
14
|
+
this.stylesheetListeners[dependency]?.forEach(listener => listener(dependency))
|
|
15
|
+
this.listeners[dependency]?.forEach(listener => listener(dependency))
|
|
14
16
|
}
|
|
15
17
|
|
|
16
18
|
initListeners = () => {
|
|
@@ -49,7 +51,7 @@ export class UnistylesListener {
|
|
|
49
51
|
window.addEventListener('resize', () => this.emitChange(UnistyleDependency.Dimensions))
|
|
50
52
|
}
|
|
51
53
|
|
|
52
|
-
addListeners = (dependencies: Array<UnistyleDependency>, listener:
|
|
54
|
+
addListeners = (dependencies: Array<UnistyleDependency>, listener: Listener) => {
|
|
53
55
|
dependencies.forEach(dependency => this.listeners[dependency]?.add(listener))
|
|
54
56
|
|
|
55
57
|
return () => {
|
|
@@ -57,7 +59,7 @@ export class UnistylesListener {
|
|
|
57
59
|
}
|
|
58
60
|
}
|
|
59
61
|
|
|
60
|
-
addStylesheetListeners = (dependencies: Array<UnistyleDependency>, listener:
|
|
62
|
+
addStylesheetListeners = (dependencies: Array<UnistyleDependency>, listener: Listener) => {
|
|
61
63
|
dependencies.forEach(dependency => this.stylesheetListeners[dependency]?.add(listener))
|
|
62
64
|
|
|
63
65
|
return () => {
|
package/src/web/runtime.ts
CHANGED
|
@@ -49,6 +49,12 @@ export class UnistylesRuntime {
|
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
get themeName() {
|
|
52
|
+
const scopedTheme = this.services.shadowRegistry.getScopedTheme()
|
|
53
|
+
|
|
54
|
+
if (scopedTheme) {
|
|
55
|
+
return scopedTheme
|
|
56
|
+
}
|
|
57
|
+
|
|
52
58
|
if (this.services.state.hasAdaptiveThemes) {
|
|
53
59
|
return schemeToTheme(this.colorScheme) as AppThemeName
|
|
54
60
|
}
|
|
@@ -215,6 +221,7 @@ export class UnistylesRuntime {
|
|
|
215
221
|
const newTheme = updater(oldTheme)
|
|
216
222
|
|
|
217
223
|
this.services.state.themes.set(themeName, newTheme)
|
|
224
|
+
this.services.listener.emitChange(UnistyleDependency.Theme)
|
|
218
225
|
|
|
219
226
|
if (this.services.state.CSSVars) {
|
|
220
227
|
this.services.state.cssThemes.set(
|