react-native-unistyles 3.1.1 → 3.2.1

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 (58) hide show
  1. package/README.md +3 -2
  2. package/android/src/main/cxx/NativeUnistylesModule.cpp +2 -5
  3. package/android/src/main/cxx/NativeUnistylesModule.h +1 -7
  4. package/android/src/main/java/com/unistyles/Equatable.kt +5 -1
  5. package/android/src/main/java/com/unistyles/NativePlatform+android.kt +6 -1
  6. package/android/src/main/java/com/unistyles/NativePlatform+listener.kt +21 -3
  7. package/cxx/core/UnistyleWrapper.h +2 -2
  8. package/cxx/core/UnistylesRegistry.cpp +57 -48
  9. package/cxx/core/UnistylesRegistry.h +16 -14
  10. package/cxx/core/UnistylesState.cpp +22 -20
  11. package/cxx/core/UnistylesState.h +5 -6
  12. package/cxx/hybridObjects/HybridShadowRegistry.cpp +14 -3
  13. package/cxx/hybridObjects/HybridShadowRegistry.h +5 -0
  14. package/cxx/hybridObjects/HybridStyleSheet.cpp +71 -45
  15. package/cxx/hybridObjects/HybridUnistylesRuntime.cpp +22 -32
  16. package/cxx/hybridObjects/HybridUnistylesRuntime.h +3 -4
  17. package/cxx/parser/Parser.cpp +14 -14
  18. package/cxx/shadowTree/ShadowTreeManager.cpp +10 -7
  19. package/ios/UnistylesModuleOnLoad.mm +3 -10
  20. package/lib/commonjs/core/useProxifiedUnistyles/useProxifiedUnistyles.js +4 -1
  21. package/lib/commonjs/core/useProxifiedUnistyles/useProxifiedUnistyles.js.map +1 -1
  22. package/lib/commonjs/specs/ShadowRegistry/index.js +20 -1
  23. package/lib/commonjs/specs/ShadowRegistry/index.js.map +1 -1
  24. package/lib/commonjs/web/convert/style.js +6 -6
  25. package/lib/commonjs/web/convert/style.js.map +1 -1
  26. package/lib/commonjs/web/listener.js +6 -0
  27. package/lib/commonjs/web/listener.js.map +1 -1
  28. package/lib/commonjs/web/utils/createUnistylesRef.js +1 -1
  29. package/lib/commonjs/web/utils/createUnistylesRef.js.map +1 -1
  30. package/lib/module/core/useProxifiedUnistyles/useProxifiedUnistyles.js +4 -1
  31. package/lib/module/core/useProxifiedUnistyles/useProxifiedUnistyles.js.map +1 -1
  32. package/lib/module/specs/ShadowRegistry/index.js +20 -1
  33. package/lib/module/specs/ShadowRegistry/index.js.map +1 -1
  34. package/lib/module/web/convert/style.js +6 -6
  35. package/lib/module/web/convert/style.js.map +1 -1
  36. package/lib/module/web/listener.js +6 -0
  37. package/lib/module/web/listener.js.map +1 -1
  38. package/lib/module/web/utils/createUnistylesRef.js +1 -1
  39. package/lib/module/web/utils/createUnistylesRef.js.map +1 -1
  40. package/lib/typescript/src/core/useProxifiedUnistyles/useProxifiedUnistyles.d.ts.map +1 -1
  41. package/lib/typescript/src/specs/ShadowRegistry/index.d.ts +2 -1
  42. package/lib/typescript/src/specs/ShadowRegistry/index.d.ts.map +1 -1
  43. package/lib/typescript/src/web/listener.d.ts.map +1 -1
  44. package/nitrogen/generated/android/c++/JColorScheme.hpp +1 -1
  45. package/nitrogen/generated/android/c++/JDimensions.hpp +1 -1
  46. package/nitrogen/generated/android/c++/JFunc_void_UnistylesNativeMiniRuntime.hpp +2 -2
  47. package/nitrogen/generated/android/c++/JFunc_void_std__vector_UnistyleDependency__UnistylesNativeMiniRuntime.hpp +2 -2
  48. package/nitrogen/generated/android/c++/JHybridNativePlatformSpec.hpp +2 -2
  49. package/nitrogen/generated/android/c++/JInsets.hpp +1 -1
  50. package/nitrogen/generated/android/c++/JOrientation.hpp +1 -1
  51. package/nitrogen/generated/android/c++/JUnistyleDependency.hpp +1 -1
  52. package/nitrogen/generated/android/c++/JUnistylesNativeMiniRuntime.hpp +1 -1
  53. package/package.json +3 -3
  54. package/src/core/useProxifiedUnistyles/useProxifiedUnistyles.ts +4 -1
  55. package/src/specs/ShadowRegistry/index.ts +36 -2
  56. package/src/web/convert/style.ts +6 -6
  57. package/src/web/listener.ts +6 -0
  58. package/src/web/utils/createUnistylesRef.ts +1 -1
@@ -10,6 +10,7 @@ interface ShadowRegistry extends UnistylesShadowRegistrySpec {
10
10
  // JSI
11
11
  link(node: ShadowNode, styles?: Array<Unistyle>): void
12
12
  unlink(node: ShadowNode): void
13
+ suspend(node: ShadowNode): void
13
14
  flush(): void
14
15
  setScopedTheme(themeName?: string): void
15
16
  getScopedTheme(): string | undefined
@@ -17,6 +18,33 @@ interface ShadowRegistry extends UnistylesShadowRegistrySpec {
17
18
 
18
19
  const HybridShadowRegistry = NitroModules.createHybridObject<ShadowRegistry>('UnistylesShadowRegistry')
19
20
 
21
+ const SUSPENSE_TAG = 13
22
+
23
+ const isInsideSuspendedBoundary = (fiber: any): boolean => {
24
+ let current = fiber?.return
25
+
26
+ while (current) {
27
+ if (current.tag === SUSPENSE_TAG && current.memoizedState !== null) {
28
+ return true
29
+ }
30
+
31
+ current = current.return
32
+ }
33
+
34
+ return false
35
+ }
36
+
37
+ const findFiberForHandle = (handle: ViewHandle) => {
38
+ return (
39
+ handle?.__internalInstanceHandle ??
40
+ handle?.getScrollResponder?.()?.getNativeScrollRef?.()?.__internalInstanceHandle ??
41
+ handle?.getNativeScrollRef?.()?.__internalInstanceHandle ??
42
+ handle?._viewRef?.__internalInstanceHandle ??
43
+ handle?.viewRef?.current?.__internalInstanceHandle ??
44
+ handle?._nativeRef?.__internalInstanceHandle
45
+ )
46
+ }
47
+
20
48
  const findShadowNodeForHandle = (handle: ViewHandle) => {
21
49
  const node =
22
50
  handle?.__internalInstanceHandle?.stateNode?.node ??
@@ -71,10 +99,16 @@ HybridShadowRegistry.remove = (handle) => {
71
99
  const maybeNode = findShadowNodeForHandle(handle)
72
100
 
73
101
  if (maybeNode) {
74
- HybridShadowRegistry.unlink(maybeNode)
102
+ const fiber = findFiberForHandle(handle)
103
+
104
+ if (fiber && isInsideSuspendedBoundary(fiber)) {
105
+ HybridShadowRegistry.suspend(maybeNode)
106
+ } else {
107
+ HybridShadowRegistry.unlink(maybeNode)
108
+ }
75
109
  }
76
110
  }
77
111
 
78
- type PrivateMethods = 'add' | 'remove' | 'link' | 'unlink'
112
+ type PrivateMethods = 'add' | 'remove' | 'link' | 'unlink' | 'suspend'
79
113
 
80
114
  export const UnistylesShadowRegistry = HybridShadowRegistry as Omit<ShadowRegistry, PrivateMethods>
@@ -98,22 +98,22 @@ const convertMap = {
98
98
  borderInlineStartWidth: value,
99
99
  }),
100
100
  end: (value: number) => ({
101
- right: value,
101
+ insetInlineEnd: value,
102
102
  }),
103
103
  start: (value: number) => ({
104
- left: value,
104
+ insetInlineStart: value,
105
105
  }),
106
106
  marginEnd: (value: number) => ({
107
- marginRight: value,
107
+ marginInlineEnd: value,
108
108
  }),
109
109
  marginStart: (value: number) => ({
110
- marginLeft: value,
110
+ marginInlineStart: value,
111
111
  }),
112
112
  paddingEnd: (value: number) => ({
113
- paddingRight: value,
113
+ paddingInlineEnd: value,
114
114
  }),
115
115
  paddingStart: (value: number) => ({
116
- paddingLeft: value,
116
+ paddingInlineStart: value,
117
117
  }),
118
118
  transformMatrix: (value: Array<number>) => ({
119
119
  transform: `matrix(${value.join(', ')})`,
@@ -92,6 +92,12 @@ export class UnistylesListener {
92
92
 
93
93
  window.addEventListener('orientationchange', () => this.emitChange(UnistyleDependency.Orientation))
94
94
  window.addEventListener('resize', () => this.emitChange(UnistyleDependency.Dimensions))
95
+ new MutationObserver(() => {
96
+ this.emitChange(UnistyleDependency.Rtl)
97
+ }).observe(document.documentElement, {
98
+ attributes: true,
99
+ attributeFilter: ['dir'],
100
+ })
95
101
  }
96
102
 
97
103
  addListeners = (dependencies: Array<UnistyleDependency>, listener: Listener) => {
@@ -20,7 +20,7 @@ export const createUnistylesRef = <T>(styles?: Styles, forwardedRef?: React.Forw
20
20
  ? undefined
21
21
  : (ref: Nullable<T>) => {
22
22
  if (!ref) {
23
- unistyles.services.shadowRegistry.remove(storedRef, classNames?.hash)
23
+ unistyles.services.shadowRegistry.remove(storedRef.current, classNames?.hash)
24
24
  }
25
25
 
26
26
  storedRef.current = ref