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.
Files changed (107) hide show
  1. package/android/src/main/cxx/NativeUnistylesModule.cpp +1 -1
  2. package/android/src/main/java/com/unistyles/NativePlatform+android.kt +1 -2
  3. package/android/src/main/java/com/unistyles/NativePlatform+insets.kt +4 -0
  4. package/android/src/main/java/com/unistyles/NativePlatform+listener.kt +2 -1
  5. package/android/src/main/java/com/unistyles/UnistylesModule.kt +0 -4
  6. package/android/src/main/java/com/unistyles/UnistylesPackage.kt +6 -6
  7. package/components/native/Animated/package.json +5 -0
  8. package/cxx/core/UnistylesRegistry.cpp +24 -3
  9. package/cxx/core/UnistylesRegistry.h +1 -0
  10. package/cxx/hybridObjects/HybridShadowRegistry.cpp +7 -0
  11. package/lib/commonjs/components/native/Animated.js +23 -0
  12. package/lib/commonjs/components/native/Animated.js.map +1 -0
  13. package/lib/commonjs/components/native/ImageBackground.js +3 -1
  14. package/lib/commonjs/components/native/ImageBackground.js.map +1 -1
  15. package/lib/commonjs/components/native/Pressable.native.js +16 -3
  16. package/lib/commonjs/components/native/Pressable.native.js.map +1 -1
  17. package/lib/commonjs/core/createUnistylesElement.js +26 -22
  18. package/lib/commonjs/core/createUnistylesElement.js.map +1 -1
  19. package/lib/commonjs/core/createUnistylesElement.native.js +25 -21
  20. package/lib/commonjs/core/createUnistylesElement.native.js.map +1 -1
  21. package/lib/commonjs/core/createUnistylesImageBackground.js +34 -30
  22. package/lib/commonjs/core/createUnistylesImageBackground.js.map +1 -1
  23. package/lib/commonjs/core/getClassname.js +1 -3
  24. package/lib/commonjs/core/getClassname.js.map +1 -1
  25. package/lib/commonjs/utils.js +16 -1
  26. package/lib/commonjs/utils.js.map +1 -1
  27. package/lib/commonjs/web/utils/unistyle.js +5 -1
  28. package/lib/commonjs/web/utils/unistyle.js.map +1 -1
  29. package/lib/module/components/native/Animated.js +19 -0
  30. package/lib/module/components/native/Animated.js.map +1 -0
  31. package/lib/module/components/native/ImageBackground.js +3 -1
  32. package/lib/module/components/native/ImageBackground.js.map +1 -1
  33. package/lib/module/components/native/Pressable.native.js +17 -4
  34. package/lib/module/components/native/Pressable.native.js.map +1 -1
  35. package/lib/module/core/createUnistylesElement.js +26 -22
  36. package/lib/module/core/createUnistylesElement.js.map +1 -1
  37. package/lib/module/core/createUnistylesElement.native.js +26 -22
  38. package/lib/module/core/createUnistylesElement.native.js.map +1 -1
  39. package/lib/module/core/createUnistylesImageBackground.js +35 -31
  40. package/lib/module/core/createUnistylesImageBackground.js.map +1 -1
  41. package/lib/module/core/getClassname.js +2 -4
  42. package/lib/module/core/getClassname.js.map +1 -1
  43. package/lib/module/utils.js +14 -0
  44. package/lib/module/utils.js.map +1 -1
  45. package/lib/module/web/utils/unistyle.js +5 -1
  46. package/lib/module/web/utils/unistyle.js.map +1 -1
  47. package/lib/typescript/src/components/native/ActivityIndicator.d.ts +1 -3
  48. package/lib/typescript/src/components/native/ActivityIndicator.d.ts.map +1 -1
  49. package/lib/typescript/src/components/native/Animated.d.ts +39 -0
  50. package/lib/typescript/src/components/native/Animated.d.ts.map +1 -0
  51. package/lib/typescript/src/components/native/FlatList.d.ts +1 -3
  52. package/lib/typescript/src/components/native/FlatList.d.ts.map +1 -1
  53. package/lib/typescript/src/components/native/Image.d.ts +1 -3
  54. package/lib/typescript/src/components/native/Image.d.ts.map +1 -1
  55. package/lib/typescript/src/components/native/ImageBackground.d.ts +1 -8
  56. package/lib/typescript/src/components/native/ImageBackground.d.ts.map +1 -1
  57. package/lib/typescript/src/components/native/ImageBackground.native.d.ts +1 -2
  58. package/lib/typescript/src/components/native/ImageBackground.native.d.ts.map +1 -1
  59. package/lib/typescript/src/components/native/KeyboardAvoidingView.d.ts +1 -3
  60. package/lib/typescript/src/components/native/KeyboardAvoidingView.d.ts.map +1 -1
  61. package/lib/typescript/src/components/native/Pressable.native.d.ts.map +1 -1
  62. package/lib/typescript/src/components/native/RefreshControl.d.ts +1 -3
  63. package/lib/typescript/src/components/native/RefreshControl.d.ts.map +1 -1
  64. package/lib/typescript/src/components/native/ScrollView.d.ts +1 -3
  65. package/lib/typescript/src/components/native/ScrollView.d.ts.map +1 -1
  66. package/lib/typescript/src/components/native/SectionList.d.ts +1 -3
  67. package/lib/typescript/src/components/native/SectionList.d.ts.map +1 -1
  68. package/lib/typescript/src/components/native/Switch.d.ts +1 -3
  69. package/lib/typescript/src/components/native/Switch.d.ts.map +1 -1
  70. package/lib/typescript/src/components/native/Text.d.ts +1 -3
  71. package/lib/typescript/src/components/native/Text.d.ts.map +1 -1
  72. package/lib/typescript/src/components/native/TextInput.d.ts +1 -3
  73. package/lib/typescript/src/components/native/TextInput.d.ts.map +1 -1
  74. package/lib/typescript/src/components/native/TouchableHighlight.d.ts +1 -3
  75. package/lib/typescript/src/components/native/TouchableHighlight.d.ts.map +1 -1
  76. package/lib/typescript/src/components/native/TouchableOpacity.d.ts +1 -3
  77. package/lib/typescript/src/components/native/TouchableOpacity.d.ts.map +1 -1
  78. package/lib/typescript/src/components/native/View.d.ts +1 -3
  79. package/lib/typescript/src/components/native/View.d.ts.map +1 -1
  80. package/lib/typescript/src/components/native/VirtualizedList.d.ts +1 -3
  81. package/lib/typescript/src/components/native/VirtualizedList.d.ts.map +1 -1
  82. package/lib/typescript/src/core/createUnistylesElement.d.ts +1 -7
  83. package/lib/typescript/src/core/createUnistylesElement.d.ts.map +1 -1
  84. package/lib/typescript/src/core/createUnistylesElement.native.d.ts +1 -2
  85. package/lib/typescript/src/core/createUnistylesElement.native.d.ts.map +1 -1
  86. package/lib/typescript/src/core/createUnistylesImageBackground.d.ts +2 -3
  87. package/lib/typescript/src/core/createUnistylesImageBackground.d.ts.map +1 -1
  88. package/lib/typescript/src/core/getClassname.d.ts +2 -2
  89. package/lib/typescript/src/core/getClassname.d.ts.map +1 -1
  90. package/lib/typescript/src/utils.d.ts +1 -0
  91. package/lib/typescript/src/utils.d.ts.map +1 -1
  92. package/lib/typescript/src/web/utils/unistyle.d.ts.map +1 -1
  93. package/package.json +3 -1
  94. package/plugin/consts.js +43 -0
  95. package/plugin/exotic.js +42 -0
  96. package/plugin/index.d.ts +11 -9
  97. package/plugin/index.js +14 -32
  98. package/plugin/variants.js +1 -1
  99. package/src/components/native/Animated.tsx +17 -0
  100. package/src/components/native/ImageBackground.tsx +4 -1
  101. package/src/components/native/Pressable.native.tsx +22 -4
  102. package/src/core/createUnistylesElement.native.tsx +29 -24
  103. package/src/core/createUnistylesElement.tsx +34 -29
  104. package/src/core/createUnistylesImageBackground.tsx +39 -34
  105. package/src/core/getClassname.ts +5 -4
  106. package/src/utils.ts +17 -0
  107. package/src/web/utils/unistyle.ts +7 -1
@@ -1,7 +1,8 @@
1
- import React, { useEffect, useRef } from '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) => React.forwardRef((props, forwardedRef) => {
20
- const storedRef = useRef<unknown>(null)
20
+ export const createUnistylesElement = (Component: any) => {
21
+ const UnistylesComponent = React.forwardRef((props, forwardedRef) => {
22
+ const storedRef = useRef<unknown>(null)
21
23
 
22
- useEffect(() => {
23
- return () => {
24
- if (storedRef.current) {
25
- // @ts-ignore
26
- UnistylesShadowRegistry.remove(storedRef.current)
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
- return (
32
- <Component
33
- {...props}
34
- ref={(ref: unknown) => {
35
- if (ref) {
36
- storedRef.current = getNativeRef(Component, ref)
37
- }
33
+ return (
34
+ <Component
35
+ {...props}
36
+ ref={(ref: unknown) => {
37
+ if (ref) {
38
+ storedRef.current = getNativeRef(Component, ref)
39
+ }
38
40
 
39
- passForwardedRef(props, ref, forwardedRef)
41
+ passForwardedRef(props, ref, forwardedRef)
40
42
 
41
- // @ts-ignore we don't know the type of the component
42
- maybeWarnAboutMultipleUnistyles(props.style, Component.displayName)
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) => React.forwardRef<unknown, ComponentProps>((props, forwardedRef) => {
13
- let storedRef: HTMLElement | null = null
14
- const classNames = getClassName(props.style)
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
- return (
17
- <Component
18
- {...props}
19
- style={classNames}
20
- ref={isServer() ? undefined : (ref: HTMLElement | null) => {
21
- // @ts-ignore we don't know the type of the component
22
- maybeWarnAboutMultipleUnistyles(props.style, Component.displayName)
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
- if (!ref) {
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.remove(storedRef, classNames?.hash)
27
- }
28
-
29
- storedRef = ref
30
- // @ts-expect-error hidden from TS
31
- UnistylesShadowRegistry.add(ref, classNames?.hash)
32
-
33
- if (typeof forwardedRef === 'function') {
34
- return forwardedRef(ref)
35
- }
36
-
37
- if (forwardedRef) {
38
- forwardedRef.current = ref
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, { useEffect, useRef } from '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) => React.forwardRef<ImageBackground, ImageBackgroundProps>((props, forwardedRef) => {
8
- const storedImageRef = useRef<Image | null>(null)
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
- useEffect(() => {
11
- return () => {
12
- if (storedImageRef.current) {
13
- // @ts-ignore
14
- UnistylesShadowRegistry.remove(storedImageRef.current)
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
- // @ts-expect-error we don't know the type of the component
20
- maybeWarnAboutMultipleUnistyles(props.style, 'ImageBackground')
21
- // @ts-ignore we don't know the type of the component
22
- maybeWarnAboutMultipleUnistyles(props.imageStyle, 'ImageBackground')
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
- return (
25
- <Component
26
- {...props}
27
- ref={ref => {
28
- passForwardedRef(props, ref, forwardedRef)
26
+ return (
27
+ <Component
28
+ {...props}
29
+ ref={ref => {
30
+ passForwardedRef(props, ref, forwardedRef)
29
31
 
30
- return () => {
31
- // @ts-ignore
32
- UnistylesShadowRegistry.remove(ref)
33
- }
34
- }}
35
- imageRef={ref => {
36
- if (ref) {
37
- storedImageRef.current = ref
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
- // @ts-expect-error web types are not compatible with RN styles
41
- UnistylesShadowRegistry.add(ref, props.imageStyle)
42
- }}
43
- />
44
- )
45
- })
49
+ return copyComponentProperties(Component, UnistylesImageBackground)
50
+ }
@@ -1,13 +1,14 @@
1
- import type { UnistylesValues } from '../types';
2
- import { UnistylesShadowRegistry } from '../web';
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
- // @ts-expect-error hidden from TS
10
- const { hash, injectedClassName } = UnistylesShadowRegistry.addStyles(Array.isArray(unistyle) ? unistyle : [unistyle])
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
- return reduceObject(Object.getOwnPropertyDescriptors(secrets), secret => secret.value)
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) => {