react-native-unistyles 2.20.0 → 2.31.0

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.
@@ -23,6 +23,7 @@ import kotlin.math.roundToInt
23
23
  class UnistylesModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaModule(reactContext), LifecycleEventListener {
24
24
  private var isCxxReady: Boolean = false
25
25
  private var platform: Platform = Platform(reactContext)
26
+ private var _shouldListenToImeEvents = false
26
27
 
27
28
  private val configurationChangeReceiver = object : BroadcastReceiver() {
28
29
  override fun onReceive(context: Context, intent: Intent) {
@@ -66,6 +67,10 @@ class UnistylesModule(reactContext: ReactApplicationContext) : ReactContextBaseJ
66
67
  }
67
68
 
68
69
  private fun onConfigChange() {
70
+ if (!this.isCxxReady) {
71
+ return
72
+ }
73
+
69
74
  val colorScheme = this.platform.getColorScheme()
70
75
  val contentSizeCategory = this.platform.getContentSizeCategory()
71
76
 
@@ -76,6 +81,10 @@ class UnistylesModule(reactContext: ReactApplicationContext) : ReactContextBaseJ
76
81
  }
77
82
 
78
83
  private fun onLayoutConfigChange() {
84
+ if (!this.isCxxReady) {
85
+ return
86
+ }
87
+
79
88
  val screen = this.platform.getScreenDimensions()
80
89
  val insets = this.platform.getInsets()
81
90
  val statusBar = this.platform.getStatusBarDimensions()
@@ -137,6 +146,7 @@ class UnistylesModule(reactContext: ReactApplicationContext) : ReactContextBaseJ
137
146
 
138
147
  override fun onHostResume() {
139
148
  this.enableEdgeToEdge()
149
+ _shouldListenToImeEvents = true
140
150
 
141
151
  if (isCxxReady) {
142
152
  this.onConfigChange()
@@ -178,6 +188,10 @@ class UnistylesModule(reactContext: ReactApplicationContext) : ReactContextBaseJ
178
188
  insets: WindowInsetsCompat,
179
189
  runningAnimations: List<WindowInsetsAnimationCompat>
180
190
  ): WindowInsetsCompat {
191
+ if (!_shouldListenToImeEvents) {
192
+ return insets
193
+ }
194
+
181
195
  runningAnimations.firstOrNull()?.let { animation ->
182
196
  val progress = animation.fraction
183
197
  val nextBottomInset = if (isGoingUp) {
@@ -208,9 +222,10 @@ class UnistylesModule(reactContext: ReactApplicationContext) : ReactContextBaseJ
208
222
  this.reactApplicationContext.currentActivity?.let { activity ->
209
223
  activity.window?.decorView?.let { view ->
210
224
  ViewCompat.setOnApplyWindowInsetsListener(view, null)
211
- ViewCompat.setWindowInsetsAnimationCallback(view, null)
212
225
  }
213
226
  }
227
+
228
+ _shouldListenToImeEvents = false
214
229
  }
215
230
 
216
231
  override fun onHostDestroy() {}
@@ -130,15 +130,40 @@
130
130
  });
131
131
  }
132
132
 
133
+ - (UIWindow *)getMainWindow {
134
+ for (UIScene *scene in [UIApplication sharedApplication].connectedScenes) {
135
+ if ([scene isKindOfClass:[UIWindowScene class]]) {
136
+ UIWindowScene *windowScene = (UIWindowScene *)scene;
137
+ for (UIWindow *window in windowScene.windows) {
138
+ if (window.isKeyWindow) {
139
+ return window;
140
+ }
141
+ }
142
+ }
143
+ }
144
+
145
+ return nil;
146
+ }
147
+
133
148
  - (Insets)getInsets {
134
- UIWindow *window = UIApplication.sharedApplication.windows.firstObject;
149
+ UIWindow *window = [self getMainWindow];
150
+
151
+ if (window == nil) {
152
+ return {0, 0, 0, 0};
153
+ }
154
+
135
155
  UIEdgeInsets safeArea = window.safeAreaInsets;
136
156
 
137
157
  return {(int)safeArea.top, (int)safeArea.bottom, (int)safeArea.left, (int)safeArea.right};
138
158
  }
139
159
 
140
160
  - (Dimensions)getStatusBarDimensions {
141
- UIWindow *window = UIApplication.sharedApplication.windows.firstObject;
161
+ UIWindow *window = [self getMainWindow];
162
+
163
+ if (window == nil) {
164
+ return {0, 0};
165
+ }
166
+
142
167
  CGRect statusBarFrame = window.windowScene.statusBarManager.statusBarFrame;
143
168
 
144
169
  return {(int)statusBarFrame.size.width, (int)statusBarFrame.size.height};
@@ -183,7 +208,7 @@
183
208
 
184
209
  return;
185
210
  }
186
-
211
+
187
212
  presentedViewController.view.backgroundColor = backgroundColor;
188
213
  });
189
214
  }
@@ -19,7 +19,7 @@ type FlattenVariants<T, ShouldFlatten> = T extends object ? {
19
19
  [key in keyof T[K]]: T[K][key] extends object ? ParseNestedObject<T[K][key], ShouldFlatten> : never;
20
20
  } : never;
21
21
  } : never;
22
- type ParseVariants<T> = T extends object ? T[keyof T] extends object ? UnionToIntersection<ParseVariants<T[keyof T]>> : T : T;
22
+ type ParseVariants<T> = T extends object ? T[keyof T] extends object ? UnionToIntersection<ParseVariants<T[keyof T]>> extends never ? ParseVariants<T[keyof T]> : UnionToIntersection<ParseVariants<T[keyof T]>> : T : T;
23
23
  type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never;
24
24
  type ParseStyleKeys<T> = T extends object ? {
25
25
  [K in keyof T]: ParseNestedObject<T[K], false>;
@@ -1 +1 @@
1
- {"version":3,"file":"breakpoints.d.ts","sourceRoot":"","sources":["../../../../src/types/breakpoints.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,KAAK,EAAE,yBAAyB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAEnD,KAAK,qBAAqB,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GAC1C;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GAC5C,KAAK,CAAA;AAEX,KAAK,kBAAkB,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GACvC,MAAM,CAAC,SAAS,yBAAyB,GACrC,CAAC,CAAC,MAAM,CAAC,CAAC,GACV,CAAC,SAAS,KAAK,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,GAC7C,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GACvC;KACG,CAAC,IAAI,MAAM,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC3C,GACP,CAAC,CAAA;AAEP,KAAK,iBAAiB,CAAC,CAAC,EAAE,aAAa,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,KAAK,MAAM,CAAC,GAC5E,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,iBAAiB,CAAC,CAAC,EAAE,KAAK,CAAC,GAC3C,CAAC,SAAS,MAAM,GACZ,CAAC,SAAS;IAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;CAAE,GAE3B,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,KAAK,CAAC,CAAC,SAAS,KAAK,GACpG,aAAa,CAAC,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,KAAK,CAAC,GACvF,aAAa,CAAC,eAAe,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,KAAK,CAAC,GAC5F;KACG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAC7B,CAAC,CAAC,CAAC,CAAC,SAAS,gBAAgB,GACzB,UAAU,GACV,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAC5B,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GACf,aAAa,SAAS,IAAI,GACtB,MAAM,GACN,CAAC,CAAC,CAAC,CAAC,GACR,CAAC,CAAC,CAAC,CAAC;CACjB,GACH,CAAC,CAAA;AAEX,KAAK,eAAe,CAAC,CAAC,EAAE,aAAa,IAAI,CAAC,SAAS,MAAM,GACnD;KACG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAC7B;SACG,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,MAAM,GACvC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,aAAa,CAAC,GAC3C,KAAK;KACd,GACC,KAAK;CACd,GACC,KAAK,CAAA;AAEX,KAAK,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GAClC,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,MAAM,GACrB,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAC9C,CAAC,GACL,CAAC,CAAA;AAEP,KAAK,mBAAmB,CAAC,CAAC,IACtB,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAEvF,KAAK,cAAc,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GACnC;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;CAAE,GAClD,KAAK,CAAA;AAEX,MAAM,MAAM,qBAAqB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,oBAAoB,KAAK,MAAM,CAAC,GAC5G,cAAc,CAAC,CAAC,CAAC,GACjB,cAAc,CAAC,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"breakpoints.d.ts","sourceRoot":"","sources":["../../../../src/types/breakpoints.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-unistyles",
3
- "version": "2.20.0",
3
+ "version": "2.31.0",
4
4
  "description": "Level up your React Native StyleSheet",
5
5
  "scripts": {
6
6
  "test": "jest",
@@ -53,7 +53,9 @@ type FlattenVariants<T, ShouldFlatten> = T extends object
53
53
 
54
54
  type ParseVariants<T> = T extends object
55
55
  ? T[keyof T] extends object
56
- ? UnionToIntersection<ParseVariants<T[keyof T]>>
56
+ ? UnionToIntersection<ParseVariants<T[keyof T]>> extends never
57
+ ? ParseVariants<T[keyof T]>
58
+ : UnionToIntersection<ParseVariants<T[keyof T]>>
57
59
  : T
58
60
  : T
59
61