react-native-unistyles 3.0.0-nightly-20250122 → 3.0.0-nightly-20250129
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/android/src/main/cxx/NativeUnistylesModule.cpp +1 -1
- package/android/src/main/java/com/unistyles/NativePlatform+android.kt +1 -2
- package/android/src/main/java/com/unistyles/NativePlatform+insets.kt +4 -0
- package/android/src/main/java/com/unistyles/NativePlatform+listener.kt +2 -1
- package/android/src/main/java/com/unistyles/UnistylesModule.kt +0 -4
- package/android/src/main/java/com/unistyles/UnistylesPackage.kt +6 -6
- package/components/native/Animated/package.json +5 -0
- package/cxx/core/UnistylesRegistry.cpp +24 -3
- package/cxx/core/UnistylesRegistry.h +1 -0
- package/cxx/hybridObjects/HybridShadowRegistry.cpp +7 -0
- package/lib/commonjs/components/native/Animated.js +23 -0
- package/lib/commonjs/components/native/Animated.js.map +1 -0
- package/lib/commonjs/components/native/ImageBackground.js +3 -1
- package/lib/commonjs/components/native/ImageBackground.js.map +1 -1
- package/lib/commonjs/components/native/Pressable.native.js +16 -3
- package/lib/commonjs/components/native/Pressable.native.js.map +1 -1
- package/lib/commonjs/core/createUnistylesElement.js +26 -22
- package/lib/commonjs/core/createUnistylesElement.js.map +1 -1
- package/lib/commonjs/core/createUnistylesElement.native.js +25 -21
- package/lib/commonjs/core/createUnistylesElement.native.js.map +1 -1
- package/lib/commonjs/core/createUnistylesImageBackground.js +34 -30
- package/lib/commonjs/core/createUnistylesImageBackground.js.map +1 -1
- package/lib/commonjs/core/getClassname.js +1 -3
- package/lib/commonjs/core/getClassname.js.map +1 -1
- package/lib/commonjs/utils.js +16 -1
- package/lib/commonjs/utils.js.map +1 -1
- package/lib/commonjs/web/utils/unistyle.js +5 -1
- package/lib/commonjs/web/utils/unistyle.js.map +1 -1
- package/lib/module/components/native/Animated.js +19 -0
- package/lib/module/components/native/Animated.js.map +1 -0
- package/lib/module/components/native/ImageBackground.js +3 -1
- package/lib/module/components/native/ImageBackground.js.map +1 -1
- package/lib/module/components/native/Pressable.native.js +17 -4
- package/lib/module/components/native/Pressable.native.js.map +1 -1
- package/lib/module/core/createUnistylesElement.js +26 -22
- package/lib/module/core/createUnistylesElement.js.map +1 -1
- package/lib/module/core/createUnistylesElement.native.js +26 -22
- package/lib/module/core/createUnistylesElement.native.js.map +1 -1
- package/lib/module/core/createUnistylesImageBackground.js +35 -31
- package/lib/module/core/createUnistylesImageBackground.js.map +1 -1
- package/lib/module/core/getClassname.js +2 -4
- package/lib/module/core/getClassname.js.map +1 -1
- package/lib/module/utils.js +14 -0
- package/lib/module/utils.js.map +1 -1
- package/lib/module/web/utils/unistyle.js +5 -1
- package/lib/module/web/utils/unistyle.js.map +1 -1
- package/lib/typescript/src/components/native/ActivityIndicator.d.ts +1 -3
- package/lib/typescript/src/components/native/ActivityIndicator.d.ts.map +1 -1
- package/lib/typescript/src/components/native/Animated.d.ts +39 -0
- package/lib/typescript/src/components/native/Animated.d.ts.map +1 -0
- package/lib/typescript/src/components/native/FlatList.d.ts +1 -3
- package/lib/typescript/src/components/native/FlatList.d.ts.map +1 -1
- package/lib/typescript/src/components/native/Image.d.ts +1 -3
- package/lib/typescript/src/components/native/Image.d.ts.map +1 -1
- package/lib/typescript/src/components/native/ImageBackground.d.ts +1 -8
- package/lib/typescript/src/components/native/ImageBackground.d.ts.map +1 -1
- package/lib/typescript/src/components/native/ImageBackground.native.d.ts +1 -2
- package/lib/typescript/src/components/native/ImageBackground.native.d.ts.map +1 -1
- package/lib/typescript/src/components/native/KeyboardAvoidingView.d.ts +1 -3
- package/lib/typescript/src/components/native/KeyboardAvoidingView.d.ts.map +1 -1
- package/lib/typescript/src/components/native/Pressable.native.d.ts.map +1 -1
- package/lib/typescript/src/components/native/RefreshControl.d.ts +1 -3
- package/lib/typescript/src/components/native/RefreshControl.d.ts.map +1 -1
- package/lib/typescript/src/components/native/ScrollView.d.ts +1 -3
- package/lib/typescript/src/components/native/ScrollView.d.ts.map +1 -1
- package/lib/typescript/src/components/native/SectionList.d.ts +1 -3
- package/lib/typescript/src/components/native/SectionList.d.ts.map +1 -1
- package/lib/typescript/src/components/native/Switch.d.ts +1 -3
- package/lib/typescript/src/components/native/Switch.d.ts.map +1 -1
- package/lib/typescript/src/components/native/Text.d.ts +1 -3
- package/lib/typescript/src/components/native/Text.d.ts.map +1 -1
- package/lib/typescript/src/components/native/TextInput.d.ts +1 -3
- package/lib/typescript/src/components/native/TextInput.d.ts.map +1 -1
- package/lib/typescript/src/components/native/TouchableHighlight.d.ts +1 -3
- package/lib/typescript/src/components/native/TouchableHighlight.d.ts.map +1 -1
- package/lib/typescript/src/components/native/TouchableOpacity.d.ts +1 -3
- package/lib/typescript/src/components/native/TouchableOpacity.d.ts.map +1 -1
- package/lib/typescript/src/components/native/View.d.ts +1 -3
- package/lib/typescript/src/components/native/View.d.ts.map +1 -1
- package/lib/typescript/src/components/native/VirtualizedList.d.ts +1 -3
- package/lib/typescript/src/components/native/VirtualizedList.d.ts.map +1 -1
- package/lib/typescript/src/core/createUnistylesElement.d.ts +1 -7
- package/lib/typescript/src/core/createUnistylesElement.d.ts.map +1 -1
- package/lib/typescript/src/core/createUnistylesElement.native.d.ts +1 -2
- package/lib/typescript/src/core/createUnistylesElement.native.d.ts.map +1 -1
- package/lib/typescript/src/core/createUnistylesImageBackground.d.ts +2 -3
- package/lib/typescript/src/core/createUnistylesImageBackground.d.ts.map +1 -1
- package/lib/typescript/src/core/getClassname.d.ts +2 -2
- package/lib/typescript/src/core/getClassname.d.ts.map +1 -1
- package/lib/typescript/src/utils.d.ts +1 -0
- package/lib/typescript/src/utils.d.ts.map +1 -1
- package/lib/typescript/src/web/utils/unistyle.d.ts.map +1 -1
- package/package.json +3 -1
- package/plugin/consts.js +43 -0
- package/plugin/exotic.js +42 -0
- package/plugin/index.d.ts +11 -9
- package/plugin/index.js +14 -32
- package/plugin/variants.js +1 -1
- package/src/components/native/Animated.tsx +17 -0
- package/src/components/native/ImageBackground.tsx +4 -1
- package/src/components/native/Pressable.native.tsx +22 -4
- package/src/core/createUnistylesElement.native.tsx +29 -24
- package/src/core/createUnistylesElement.tsx +34 -29
- package/src/core/createUnistylesImageBackground.tsx +39 -34
- package/src/core/getClassname.ts +5 -4
- package/src/utils.ts +17 -0
- package/src/web/utils/unistyle.ts +7 -1
@@ -1,7 +1,8 @@
|
|
1
|
-
import React, {
|
1
|
+
import React, { useLayoutEffect, useRef } from 'react'
|
2
2
|
import { UnistylesShadowRegistry } from '../specs'
|
3
3
|
import { passForwardedRef } from './passForwardRef'
|
4
4
|
import { maybeWarnAboutMultipleUnistyles } from './warn'
|
5
|
+
import { copyComponentProperties } from '../utils'
|
5
6
|
|
6
7
|
const getNativeRef = (Component: any, ref: any) => {
|
7
8
|
switch (Component.name) {
|
@@ -16,31 +17,35 @@ const getNativeRef = (Component: any, ref: any) => {
|
|
16
17
|
}
|
17
18
|
}
|
18
19
|
|
19
|
-
export const createUnistylesElement = (Component: any) =>
|
20
|
-
const
|
20
|
+
export const createUnistylesElement = (Component: any) => {
|
21
|
+
const UnistylesComponent = React.forwardRef((props, forwardedRef) => {
|
22
|
+
const storedRef = useRef<unknown>(null)
|
21
23
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
24
|
+
useLayoutEffect(() => {
|
25
|
+
return () => {
|
26
|
+
if (storedRef.current) {
|
27
|
+
// @ts-ignore
|
28
|
+
UnistylesShadowRegistry.remove(storedRef.current)
|
29
|
+
}
|
27
30
|
}
|
28
|
-
}
|
29
|
-
}, [])
|
31
|
+
}, [])
|
30
32
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
33
|
+
return (
|
34
|
+
<Component
|
35
|
+
{...props}
|
36
|
+
ref={(ref: unknown) => {
|
37
|
+
if (ref) {
|
38
|
+
storedRef.current = getNativeRef(Component, ref)
|
39
|
+
}
|
38
40
|
|
39
|
-
|
41
|
+
passForwardedRef(props, ref, forwardedRef)
|
40
42
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
})
|
43
|
+
// @ts-ignore we don't know the type of the component
|
44
|
+
maybeWarnAboutMultipleUnistyles(props.style, Component.displayName)
|
45
|
+
}}
|
46
|
+
/>
|
47
|
+
)
|
48
|
+
})
|
49
|
+
|
50
|
+
return copyComponentProperties(Component, UnistylesComponent)
|
51
|
+
}
|
@@ -4,40 +4,45 @@ import { getClassName } from './getClassname'
|
|
4
4
|
import { isServer } from '../web/utils'
|
5
5
|
import { UnistylesShadowRegistry } from '../web'
|
6
6
|
import { maybeWarnAboutMultipleUnistyles } from './warn'
|
7
|
+
import { copyComponentProperties } from '../utils'
|
7
8
|
|
8
9
|
type ComponentProps = {
|
9
10
|
style?: UnistylesValues | Array<UnistylesValues>
|
10
11
|
}
|
11
12
|
|
12
|
-
export const createUnistylesElement = (Component: any) =>
|
13
|
-
|
14
|
-
|
13
|
+
export const createUnistylesElement = (Component: any) => {
|
14
|
+
const UnistylesComponent = React.forwardRef<unknown, ComponentProps>((props, forwardedRef) => {
|
15
|
+
let storedRef: HTMLElement | null = null
|
16
|
+
const classNames = getClassName(props.style)
|
15
17
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
18
|
+
return (
|
19
|
+
<Component
|
20
|
+
{...props}
|
21
|
+
style={classNames}
|
22
|
+
ref={isServer() ? undefined : (ref: HTMLElement | null) => {
|
23
|
+
// @ts-ignore we don't know the type of the component
|
24
|
+
maybeWarnAboutMultipleUnistyles(props.style, Component.displayName)
|
23
25
|
|
24
|
-
|
26
|
+
if (!ref) {
|
27
|
+
// @ts-expect-error hidden from TS
|
28
|
+
UnistylesShadowRegistry.remove(storedRef, classNames?.hash)
|
29
|
+
}
|
30
|
+
|
31
|
+
storedRef = ref
|
25
32
|
// @ts-expect-error hidden from TS
|
26
|
-
UnistylesShadowRegistry.
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
}
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
)
|
43
|
-
})
|
33
|
+
UnistylesShadowRegistry.add(ref, classNames?.hash)
|
34
|
+
|
35
|
+
if (typeof forwardedRef === 'function') {
|
36
|
+
return forwardedRef(ref)
|
37
|
+
}
|
38
|
+
|
39
|
+
if (forwardedRef) {
|
40
|
+
forwardedRef.current = ref
|
41
|
+
}
|
42
|
+
}}
|
43
|
+
/>
|
44
|
+
)
|
45
|
+
})
|
46
|
+
|
47
|
+
return copyComponentProperties(Component, UnistylesComponent)
|
48
|
+
}
|
@@ -1,45 +1,50 @@
|
|
1
|
-
import React, {
|
1
|
+
import React, { useLayoutEffect, useRef } from 'react'
|
2
2
|
import type { Image, ImageBackground, ImageBackgroundProps } from 'react-native'
|
3
3
|
import { UnistylesShadowRegistry } from '../specs'
|
4
4
|
import { passForwardedRef } from './passForwardRef'
|
5
5
|
import { maybeWarnAboutMultipleUnistyles } from './warn'
|
6
|
+
import { copyComponentProperties } from '../utils'
|
6
7
|
|
7
|
-
export const createUnistylesImageBackground = (Component: typeof ImageBackground) =>
|
8
|
-
const
|
8
|
+
export const createUnistylesImageBackground = (Component: typeof ImageBackground) => {
|
9
|
+
const UnistylesImageBackground = React.forwardRef<ImageBackground, ImageBackgroundProps>((props, forwardedRef) => {
|
10
|
+
const storedImageRef = useRef<Image | null>(null)
|
9
11
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
12
|
+
useLayoutEffect(() => {
|
13
|
+
return () => {
|
14
|
+
if (storedImageRef.current) {
|
15
|
+
// @ts-ignore
|
16
|
+
UnistylesShadowRegistry.remove(storedImageRef.current)
|
17
|
+
}
|
15
18
|
}
|
16
|
-
}
|
17
|
-
}, [])
|
19
|
+
}, [])
|
18
20
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
21
|
+
// @ts-expect-error we don't know the type of the component
|
22
|
+
maybeWarnAboutMultipleUnistyles(props.style, 'ImageBackground')
|
23
|
+
// @ts-ignore we don't know the type of the component
|
24
|
+
maybeWarnAboutMultipleUnistyles(props.imageStyle, 'ImageBackground')
|
23
25
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
26
|
+
return (
|
27
|
+
<Component
|
28
|
+
{...props}
|
29
|
+
ref={ref => {
|
30
|
+
passForwardedRef(props, ref, forwardedRef)
|
29
31
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
32
|
+
return () => {
|
33
|
+
// @ts-ignore
|
34
|
+
UnistylesShadowRegistry.remove(ref)
|
35
|
+
}
|
36
|
+
}}
|
37
|
+
imageRef={ref => {
|
38
|
+
if (ref) {
|
39
|
+
storedImageRef.current = ref
|
40
|
+
}
|
41
|
+
|
42
|
+
// @ts-expect-error web types are not compatible with RN styles
|
43
|
+
UnistylesShadowRegistry.add(ref, props.imageStyle)
|
44
|
+
}}
|
45
|
+
/>
|
46
|
+
)
|
47
|
+
})
|
39
48
|
|
40
|
-
|
41
|
-
|
42
|
-
}}
|
43
|
-
/>
|
44
|
-
)
|
45
|
-
})
|
49
|
+
return copyComponentProperties(Component, UnistylesImageBackground)
|
50
|
+
}
|
package/src/core/getClassname.ts
CHANGED
@@ -1,13 +1,14 @@
|
|
1
|
-
import type { UnistylesValues } from '../types'
|
2
|
-
import {
|
1
|
+
import type { UnistylesValues } from '../types'
|
2
|
+
import { UnistylesWeb } from '../web'
|
3
3
|
|
4
4
|
export const getClassName = (unistyle: UnistylesValues | undefined | Array<UnistylesValues>) => {
|
5
5
|
if (!unistyle) {
|
6
6
|
return undefined
|
7
7
|
}
|
8
8
|
|
9
|
-
|
10
|
-
|
9
|
+
const { hash, injectedClassName } = UnistylesWeb.shadowRegistry.addStyles(
|
10
|
+
Array.isArray(unistyle) ? unistyle.flat(Number.POSITIVE_INFINITY) : [unistyle]
|
11
|
+
)
|
11
12
|
|
12
13
|
return hash ? { $$css: true, hash, injectedClassName } : undefined
|
13
14
|
}
|
package/src/utils.ts
CHANGED
@@ -24,3 +24,20 @@ export const deepMergeObjects = <T extends Record<PropertyKey, any>>(...sources:
|
|
24
24
|
|
25
25
|
return target
|
26
26
|
}
|
27
|
+
|
28
|
+
export const copyComponentProperties = (Component: any, UnistylesComponent: any) => {
|
29
|
+
Object.entries(Component).forEach(([key, value]) => {
|
30
|
+
// Filter out the keys we don't want to copy
|
31
|
+
if (['$$typeof', 'render'].includes(key)) {
|
32
|
+
return
|
33
|
+
}
|
34
|
+
|
35
|
+
UnistylesComponent[key] = value
|
36
|
+
})
|
37
|
+
|
38
|
+
// Those are not enumerable, so we need to copy them manually
|
39
|
+
UnistylesComponent.displayName = Component.displayName
|
40
|
+
UnistylesComponent.name = Component.name
|
41
|
+
|
42
|
+
return UnistylesComponent
|
43
|
+
}
|
@@ -49,7 +49,13 @@ export const extractSecrets = (object: any) => {
|
|
49
49
|
return undefined
|
50
50
|
}
|
51
51
|
|
52
|
-
|
52
|
+
const hiddenSecrets = Object.getOwnPropertyDescriptors(secrets)
|
53
|
+
|
54
|
+
if (Object.keys(hiddenSecrets).length === 0) {
|
55
|
+
return undefined
|
56
|
+
}
|
57
|
+
|
58
|
+
return reduceObject(hiddenSecrets, secret => secret.value)
|
53
59
|
}
|
54
60
|
|
55
61
|
export const removeInlineStyles = (values: UnistylesValues) => {
|